blob: 6c19cee6d5054e80d7472515cb0917c0136b5faf [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
Yue Ma70627492013-03-28 11:33:46 -0700115#define FEATURE_NOT_SUPPORTED 127
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;
Leo Changa37e2a92013-03-25 17:39:58 -070012066 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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
Leo Changa37e2a92013-03-25 17:39:58 -070012103 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12104 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12105 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012106
12107 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12108 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12109
12110 /*-------------------------------------------------------------------------
12111 Send Set Tx Power Request to HAL
12112 -------------------------------------------------------------------------*/
12113 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12114 wdiSetTxPowerRspCb, pEventData->pUserData,
12115 WDI_SET_TX_POWER_RESP);
12116}
Jeff Johnson295189b2012-06-20 16:38:30 -070012117
12118/**
12119 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12120 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012121
12122 @param pWDICtx: pointer to the WLAN DAL context
12123 pEventData: pointer to the event information structure
12124
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 @see
12126 @return Result of the function call
12127*/
12128WDI_Status
12129WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012130(
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 WDI_ControlBlockType* pWDICtx,
12132 WDI_EventInfoType* pEventData
12133)
12134{
12135 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12136 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012138 wpt_uint16 usDataOffset = 0;
12139 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012140 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12142
12143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 -------------------------------------------------------------------------*/
12146 if (( NULL == pEventData ) ||
12147 ( NULL == pEventData->pEventData) ||
12148 ( NULL == pEventData->pCBfnc))
12149 {
12150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 }
12155
Jeff Johnsone7245742012-09-05 17:12:55 -070012156 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012157 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12160 /*-----------------------------------------------------------------------
12161 Get message buffer
12162 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012163 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12164 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012165 sizeof(halSetP2PGONOAParams),
12166 &pSendBuffer, &usDataOffset, &usSendSize))||
12167 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12168 {
12169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12170 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12171 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012174 }
12175
Jeff Johnsone7245742012-09-05 17:12:55 -070012176 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012178 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12180 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012184 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012186 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012187 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012188 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12189
Jeff Johnsone7245742012-09-05 17:12:55 -070012190 wpalMemoryCopy( pSendBuffer+usDataOffset,
12191 &halSetP2PGONOAParams,
12192 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012193
12194 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012196
12197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012198 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012199 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12201 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12202 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012203}/*WDI_ProcessP2PGONOAReq*/
12204
Jeff Johnson295189b2012-06-20 16:38:30 -070012205
12206
12207/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 @param None
12211
12212 @see
12213 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012214*/
12215void
12216WDI_SetPowerStateCb
12217(
12218 wpt_status status,
12219 unsigned int dxePhyAddr,
12220 void *pContext
12221)
12222{
12223 wpt_status wptStatus;
12224 WDI_ControlBlockType *pCB = NULL;
12225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12226 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12227 {
12228 //it shouldn't happen, put an error msg
12229 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 /*
12231 * Trigger the event to bring the Enter BMPS req function to come
12232 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012233*/
12234 if( NULL != pContext )
12235 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012236 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 }
12238 else
12239 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012240 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 pCB = &gWDICb;
12242 }
12243 pCB->dxePhyAddr = dxePhyAddr;
12244 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12245 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12246 {
12247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12248 "Failed to set an event");
12249
Jeff Johnsone7245742012-09-05 17:12:55 -070012250 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012251 }
12252 return;
12253}
12254
12255
12256/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012257 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012258 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012259
12260 @param pWDICtx: pointer to the WLAN DAL context
12261 pEventData: pointer to the event information structure
12262
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 @see
12264 @return Result of the function call
12265*/
12266WDI_Status
12267WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012268(
Jeff Johnson295189b2012-06-20 16:38:30 -070012269 WDI_ControlBlockType* pWDICtx,
12270 WDI_EventInfoType* pEventData
12271)
12272{
Jeff Johnson43971f52012-07-17 12:26:56 -070012273 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012274 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 wpt_uint16 usDataOffset = 0;
12277 wpt_uint16 usSendSize = 0;
12278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12279
12280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 -------------------------------------------------------------------------*/
12283 if (( NULL == pEventData ) ||
12284 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12285 {
12286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012287 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012288 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012289 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 }
12291
12292 /*-----------------------------------------------------------------------
12293 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012294 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012296 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 0,
12298 &pSendBuffer, &usDataOffset, &usSendSize))||
12299 ( usSendSize < (usDataOffset )))
12300 {
12301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12302 "Unable to get send buffer in Enter IMPS req %x %x",
12303 pEventData, wdiEnterImpsRspCb);
12304 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012305 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 }
12307
12308 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012309 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12310 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 {
12312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12313 "WDI Init failed to reset an event");
12314
Jeff Johnsone7245742012-09-05 17:12:55 -070012315 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012316 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 }
12318
12319 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012320 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12321 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12323 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12324 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012325 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012326 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012327
12328 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012331 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12332 WDI_SET_POWER_STATE_TIMEOUT);
12333 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 {
12335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12336 "WDI Init failed to wait on an event");
12337
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012339 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 }
12341
12342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012343 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012344 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012345 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12346 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012347
12348fail:
12349 // Release the message buffer so we don't leak
12350 wpalMemoryFree(pSendBuffer);
12351
12352failRequest:
12353 //WDA should have failure check to avoid the memory leak
12354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012355}/*WDI_ProcessEnterImpsReq*/
12356
12357/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012358 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012359 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012360
12361 @param pWDICtx: pointer to the WLAN DAL context
12362 pEventData: pointer to the event information structure
12363
Jeff Johnson295189b2012-06-20 16:38:30 -070012364 @see
12365 @return Result of the function call
12366*/
12367WDI_Status
12368WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012369(
Jeff Johnson295189b2012-06-20 16:38:30 -070012370 WDI_ControlBlockType* pWDICtx,
12371 WDI_EventInfoType* pEventData
12372)
12373{
12374 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012375 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012376 wpt_uint16 usDataOffset = 0;
12377 wpt_uint16 usSendSize = 0;
12378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12379
12380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012382 -------------------------------------------------------------------------*/
12383 if (( NULL == pEventData ) ||
12384 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12385 {
12386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 }
12391
12392 /*-----------------------------------------------------------------------
12393 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012394 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012395 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012396 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012397 0,
12398 &pSendBuffer, &usDataOffset, &usSendSize))||
12399 ( usSendSize < (usDataOffset )))
12400 {
12401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12402 "Unable to get send buffer in Exit IMPS req %x %x",
12403 pEventData, wdiExitImpsRspCb);
12404 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 }
12407
12408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12412 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012413}/*WDI_ProcessExitImpsReq*/
12414
12415/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012418
12419 @param pWDICtx: pointer to the WLAN DAL context
12420 pEventData: pointer to the event information structure
12421
Jeff Johnson295189b2012-06-20 16:38:30 -070012422 @see
12423 @return Result of the function call
12424*/
12425WDI_Status
12426WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012427(
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 WDI_ControlBlockType* pWDICtx,
12429 WDI_EventInfoType* pEventData
12430)
12431{
12432 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12433 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012435 wpt_uint16 usDataOffset = 0;
12436 wpt_uint16 usSendSize = 0;
12437 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012438 wpt_status wptStatus;
12439
Jeff Johnson295189b2012-06-20 16:38:30 -070012440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12441
12442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012444 -------------------------------------------------------------------------*/
12445 if (( NULL == pEventData ) ||
12446 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12447 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12448 {
12449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012450 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012452 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012453 }
12454
12455 /*-----------------------------------------------------------------------
12456 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012457 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012458 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012459 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 sizeof(enterBmpsReq),
12461 &pSendBuffer, &usDataOffset, &usSendSize))||
12462 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12463 {
12464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12465 "Unable to get send buffer in Enter BMPS req %x %x %x",
12466 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12467 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012468 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012469 }
12470
12471 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012472 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12473 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012474 {
12475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12476 "WDI Init failed to reset an event");
12477
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012479 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 }
12481
12482 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012483 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12484 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12485 {
12486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12487 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12488 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012489 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012490 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012491
12492/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012495 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12496 WDI_SET_POWER_STATE_TIMEOUT);
12497 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 {
12499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12500 "WDI Init failed to wait on an event");
12501
Jeff Johnsone7245742012-09-05 17:12:55 -070012502 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012503 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 }
12505
12506 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12507
12508 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12509 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12510 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12511 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12512
12513 // For CCX and 11R Roaming
12514 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12515 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12516 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12517
12518 wpalMemoryCopy( pSendBuffer+usDataOffset,
12519 &enterBmpsReq,
12520 sizeof(enterBmpsReq));
12521
12522 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012523 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012524
12525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012526 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012527 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012528 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12529 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012530
12531fail:
12532 // Release the message buffer so we don't leak
12533 wpalMemoryFree(pSendBuffer);
12534
12535failRequest:
12536 //WDA should have failure check to avoid the memory leak
12537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012538}/*WDI_ProcessEnterBmpsReq*/
12539
12540/**
12541 @brief Process Exit BMPS Request function (called when Main FSM
12542 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012543
12544 @param pWDICtx: pointer to the WLAN DAL context
12545 pEventData: pointer to the event information structure
12546
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 @see
12548 @return Result of the function call
12549*/
12550WDI_Status
12551WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012552(
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 WDI_ControlBlockType* pWDICtx,
12554 WDI_EventInfoType* pEventData
12555)
12556{
12557 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12558 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 wpt_uint16 usDataOffset = 0;
12561 wpt_uint16 usSendSize = 0;
12562 tHalExitBmpsReqParams exitBmpsReq;
12563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12564
12565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 -------------------------------------------------------------------------*/
12568 if (( NULL == pEventData ) ||
12569 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12570 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12571 {
12572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012576 }
12577
12578 /*-----------------------------------------------------------------------
12579 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012582 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012583 sizeof(exitBmpsReq),
12584 &pSendBuffer, &usDataOffset, &usSendSize))||
12585 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12586 {
12587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12588 "Unable to get send buffer in Exit BMPS req %x %x %x",
12589 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012592 }
12593 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12594
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12596
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 wpalMemoryCopy( pSendBuffer+usDataOffset,
12598 &exitBmpsReq,
12599 sizeof(exitBmpsReq));
12600
12601 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012603
12604 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012607 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12608 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012609}/*WDI_ProcessExitBmpsReq*/
12610
12611/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012614
12615 @param pWDICtx: pointer to the WLAN DAL context
12616 pEventData: pointer to the event information structure
12617
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 @see
12619 @return Result of the function call
12620*/
12621WDI_Status
12622WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012623(
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 WDI_ControlBlockType* pWDICtx,
12625 WDI_EventInfoType* pEventData
12626)
12627{
12628 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12629 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 wpt_uint16 usDataOffset = 0;
12632 wpt_uint16 usSendSize = 0;
12633 tUapsdReqParams enterUapsdReq;
12634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12635
12636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 -------------------------------------------------------------------------*/
12639 if (( NULL == pEventData ) ||
12640 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12641 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12642 {
12643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 }
12648
12649 /*-----------------------------------------------------------------------
12650 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012651 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 sizeof(enterUapsdReq),
12655 &pSendBuffer, &usDataOffset, &usSendSize))||
12656 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12657 {
12658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12659 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12660 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 }
12664
12665 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12666 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12667 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12668 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12669 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12670 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12671 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12672 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012673 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012674
Jeff Johnsone7245742012-09-05 17:12:55 -070012675 wpalMemoryCopy( pSendBuffer+usDataOffset,
12676 &enterUapsdReq,
12677 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012678
12679 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012680 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012681
12682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012683 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12686 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012687}/*WDI_ProcessEnterUapsdReq*/
12688
12689/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012692
12693 @param pWDICtx: pointer to the WLAN DAL context
12694 pEventData: pointer to the event information structure
12695
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 @see
12697 @return Result of the function call
12698*/
12699WDI_Status
12700WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012701(
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 WDI_ControlBlockType* pWDICtx,
12703 WDI_EventInfoType* pEventData
12704)
12705{
12706 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012707 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012708 wpt_uint16 usDataOffset = 0;
12709 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012710 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12711 wpt_uint8 bssIdx = 0;
12712
Jeff Johnson295189b2012-06-20 16:38:30 -070012713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12714
12715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012716 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012717 -------------------------------------------------------------------------*/
12718 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012719 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12721 {
12722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012723 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012726 }
12727
12728 /*-----------------------------------------------------------------------
12729 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012730 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012731 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012732 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012733 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012735 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 {
12737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12738 "Unable to get send buffer in Exit UAPSD req %x %x",
12739 pEventData, wdiExitUapsdRspCb);
12740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012742 }
12743
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012744 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12745
12746 wpalMemoryCopy( pSendBuffer+usDataOffset,
12747 &bssIdx,
12748 sizeof(wpt_uint8));
12749
12750 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12751 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12752
Jeff Johnson295189b2012-06-20 16:38:30 -070012753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012754 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012755 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012756 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12757 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012758}/*WDI_ProcessExitUapsdReq*/
12759
12760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012761 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012762 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012763
12764 @param pWDICtx: pointer to the WLAN DAL context
12765 pEventData: pointer to the event information structure
12766
Jeff Johnson295189b2012-06-20 16:38:30 -070012767 @see
12768 @return Result of the function call
12769*/
12770WDI_Status
12771WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012772(
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 WDI_ControlBlockType* pWDICtx,
12774 WDI_EventInfoType* pEventData
12775)
12776{
12777 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12778 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012779 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012780 wpt_uint16 usDataOffset = 0;
12781 wpt_uint16 usSendSize = 0;
12782 tUapsdInfo uapsdAcParamsReq;
12783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12784
12785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012787 -------------------------------------------------------------------------*/
12788 if (( NULL == pEventData ) ||
12789 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12790 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12791 {
12792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 }
12797
12798 /*-----------------------------------------------------------------------
12799 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012800 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 sizeof(uapsdAcParamsReq),
12804 &pSendBuffer, &usDataOffset, &usSendSize))||
12805 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12806 {
12807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12808 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12809 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012812 }
12813
12814 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12815 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12816 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12817 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12818 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12819 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12820
Jeff Johnsone7245742012-09-05 17:12:55 -070012821 wpalMemoryCopy( pSendBuffer+usDataOffset,
12822 &uapsdAcParamsReq,
12823 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012824
12825 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012826 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012827
12828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012830 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12832 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012833}/*WDI_ProcessSetUapsdAcParamsReq*/
12834
12835/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012836 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012837 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012838
12839 @param pWDICtx: pointer to the WLAN DAL context
12840 pEventData: pointer to the event information structure
12841
Jeff Johnson295189b2012-06-20 16:38:30 -070012842 @see
12843 @return Result of the function call
12844*/
12845WDI_Status
12846WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012847(
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 WDI_ControlBlockType* pWDICtx,
12849 WDI_EventInfoType* pEventData
12850)
12851{
12852 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12853 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 wpt_uint16 usDataOffset = 0;
12856 wpt_uint16 usSendSize = 0;
12857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12858
12859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012860 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 -------------------------------------------------------------------------*/
12862 if (( NULL == pEventData ) ||
12863 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12864 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12865 {
12866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012870 }
12871
12872 /*-----------------------------------------------------------------------
12873 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12878 &pSendBuffer, &usDataOffset, &usSendSize))||
12879 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12880 {
12881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12882 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12883 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 }
12887
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 wpalMemoryCopy( pSendBuffer+usDataOffset,
12889 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12890 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012891
12892 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012894
12895 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012896 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12899 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012900}/*WDI_ProcessUpdateUapsdParamsReq*/
12901
12902/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012905
12906 @param pWDICtx: pointer to the WLAN DAL context
12907 pEventData: pointer to the event information structure
12908
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 @see
12910 @return Result of the function call
12911*/
12912WDI_Status
12913WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012914(
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 WDI_ControlBlockType* pWDICtx,
12916 WDI_EventInfoType* pEventData
12917)
12918{
12919 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12920 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012921 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012922 wpt_uint16 usDataOffset = 0;
12923 wpt_uint16 usSendSize = 0;
12924 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12925
12926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12927
12928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012930 -------------------------------------------------------------------------*/
12931 if (( NULL == pEventData ) ||
12932 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12933 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12934 {
12935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012936 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 }
12940
12941 /*-----------------------------------------------------------------------
12942 Get message buffer
12943 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012944 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012945 sizeof(halRxpFilterParams),
12946 &pSendBuffer, &usDataOffset, &usSendSize))||
12947 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12948 {
12949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12950 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12951 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012954 }
12955
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12960
Jeff Johnsone7245742012-09-05 17:12:55 -070012961 wpalMemoryCopy( pSendBuffer+usDataOffset,
12962 &halRxpFilterParams,
12963 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012964
12965 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012966 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012967
12968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012969 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12972 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012973}/*WDI_ProcessConfigureRxpFilterReq*/
12974
12975/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012976 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012977 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012978
12979 @param pWDICtx: pointer to the WLAN DAL context
12980 pEventData: pointer to the event information structure
12981
Jeff Johnson295189b2012-06-20 16:38:30 -070012982 @see
12983 @return Result of the function call
12984*/
12985WDI_Status
12986WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012987(
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 WDI_ControlBlockType* pWDICtx,
12989 WDI_EventInfoType* pEventData
12990)
12991{
12992 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12993 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012994 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 wpt_uint16 usDataOffset = 0;
12996 wpt_uint16 usSendSize = 0;
12997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12998
12999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013001 -------------------------------------------------------------------------*/
13002 if (( NULL == pEventData ) ||
13003 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13004 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13005 {
13006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 }
13011
13012 /*-----------------------------------------------------------------------
13013 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013014 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013016 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013017 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13018 &pSendBuffer, &usDataOffset, &usSendSize))||
13019 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13020 {
13021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13022 "Unable to get send buffer in Set beacon filter req %x %x %x",
13023 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 }
13027
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 wpalMemoryCopy( pSendBuffer+usDataOffset,
13029 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13030 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13031 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13032 &pwdiBeaconFilterParams->aFilters[0],
13033 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013034
13035 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013036 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013037
13038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13042 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013043}/*WDI_ProcessSetBeaconFilterReq*/
13044
13045/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013048
13049 @param pWDICtx: pointer to the WLAN DAL context
13050 pEventData: pointer to the event information structure
13051
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 @see
13053 @return Result of the function call
13054*/
13055WDI_Status
13056WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013057(
Jeff Johnson295189b2012-06-20 16:38:30 -070013058 WDI_ControlBlockType* pWDICtx,
13059 WDI_EventInfoType* pEventData
13060)
13061{
13062 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13063 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013064 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013065 wpt_uint16 usDataOffset = 0;
13066 wpt_uint16 usSendSize = 0;
13067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13068
13069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013071 -------------------------------------------------------------------------*/
13072 if (( NULL == pEventData ) ||
13073 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13074 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13075 {
13076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013080 }
13081
13082 /*-----------------------------------------------------------------------
13083 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013084 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13088 &pSendBuffer, &usDataOffset, &usSendSize))||
13089 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13090 {
13091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13092 "Unable to get send buffer in remove beacon filter req %x %x %x",
13093 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013096 }
13097
Jeff Johnsone7245742012-09-05 17:12:55 -070013098 wpalMemoryCopy( pSendBuffer+usDataOffset,
13099 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13100 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013101
13102 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013103 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013104
13105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013108 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13109 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013110}
13111
13112/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013113 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013114 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013115
13116 @param pWDICtx: pointer to the WLAN DAL context
13117 pEventData: pointer to the event information structure
13118
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 @see
13120 @return Result of the function call
13121*/
13122WDI_Status
13123WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013124(
Jeff Johnson295189b2012-06-20 16:38:30 -070013125 WDI_ControlBlockType* pWDICtx,
13126 WDI_EventInfoType* pEventData
13127)
13128{
13129 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13130 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013131 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 wpt_uint16 usDataOffset = 0;
13133 wpt_uint16 usSendSize = 0;
13134 tHalRSSIThresholds rssiThresholdsReq;
13135 WDI_Status ret_status = 0;
13136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13137
13138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 -------------------------------------------------------------------------*/
13141 if (( NULL == pEventData ) ||
13142 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13143 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13144 {
13145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013146 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013147 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 }
13150
13151 /*-----------------------------------------------------------------------
13152 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013155 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013156 sizeof(rssiThresholdsReq),
13157 &pSendBuffer, &usDataOffset, &usSendSize))||
13158 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13159 {
13160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13161 "Unable to get send buffer in remove beacon filter req %x %x %x",
13162 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013165 }
13166
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013169 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013170 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013172 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013178 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013179 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013181 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013182 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13187
Jeff Johnsone7245742012-09-05 17:12:55 -070013188 wpalMemoryCopy( pSendBuffer+usDataOffset,
13189 &rssiThresholdsReq,
13190 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013191
13192 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013193 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013194
13195 /*-------------------------------------------------------------------------
13196 Send Set threshold req to HAL
13197 -------------------------------------------------------------------------*/
13198 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13199 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13200 {
13201 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13202 // req. Then as a result of processing the threshold cross ind, we trigger
13203 // a Set threshold req, then we need to indicate to WDI that it needs to
13204 // go to busy state as a result of the indication as we sent a req in the
13205 // same WDI context.
13206 // Hence expected state transition is to busy.
13207 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13208 }
13209
13210 return ret_status;
13211}
13212
13213/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013215 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013216
13217 @param pWDICtx: pointer to the WLAN DAL context
13218 pEventData: pointer to the event information structure
13219
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 @see
13221 @return Result of the function call
13222*/
13223WDI_Status
13224WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013225(
Jeff Johnson295189b2012-06-20 16:38:30 -070013226 WDI_ControlBlockType* pWDICtx,
13227 WDI_EventInfoType* pEventData
13228)
13229{
13230 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13231 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013232 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 wpt_uint16 usDataOffset = 0;
13234 wpt_uint16 usSendSize = 0;
13235 tHalHostOffloadReq hostOffloadParams;
13236 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013237 wpt_uint8 ucCurrentBSSSesIdx = 0;
13238 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013239
13240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13241
13242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013244 -------------------------------------------------------------------------*/
13245 if (( NULL == pEventData ) ||
13246 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13247 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13248 {
13249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013251 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013252 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 }
13254
13255 /*-----------------------------------------------------------------------
13256 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013257 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013258 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013259 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13261 &pSendBuffer, &usDataOffset, &usSendSize))||
13262 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13263 {
13264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13265 "Unable to get send buffer in host offload req %x %x %x",
13266 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13267 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013268 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013269 }
13270
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013271 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13272 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13273 &pBSSSes);
13274 if ( NULL == pBSSSes )
13275 {
13276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013277 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013278 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013279 }
13280
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13282 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013283
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13285 {
13286 // ARP Offload
13287 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13288 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13289 4);
13290 }
13291 else
13292 {
13293 // NS Offload
13294 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13295 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13296 16);
13297
13298#ifdef WLAN_NS_OFFLOAD
13299 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13300 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13301 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13302 16);
13303 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13304 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13305 16);
13306 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13307 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13308 16);
13309 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13310 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13311 16);
13312 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13313 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13314 6);
13315 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13316 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13317 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070013318
Jeff Johnson295189b2012-06-20 16:38:30 -070013319#endif // WLAN_NS_OFFLOAD
13320 }
13321
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013322 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13323
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 // copy hostOffloadParams into pSendBuffer
13325 wpalMemoryCopy( pSendBuffer+usDataOffset,
13326 &hostOffloadParams,
13327 sizeof(hostOffloadParams));
13328
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013329 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013330 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013331 // copy nsOffloadParams into pSendBuffer
13332 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 &nsOffloadParams,
13334 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013335 }
13336 else
13337 {
13338#ifdef WLAN_NS_OFFLOAD
13339 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13340 {
13341 // copy nsOffloadParams into pSendBuffer
13342 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13343 &nsOffloadParams,
13344 sizeof(nsOffloadParams));
13345 }
13346#endif
13347 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013348
13349 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013350 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013351
13352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013353 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013354 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013355 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13356 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013357
13358fail:
13359 // Release the message buffer so we don't leak
13360 wpalMemoryFree(pSendBuffer);
13361
13362failRequest:
13363 //WDA should have failure check to avoid the memory leak
13364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013365}/*WDI_ProcessHostOffloadReq*/
13366
13367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013368 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013370
13371 @param pWDICtx: pointer to the WLAN DAL context
13372 pEventData: pointer to the event information structure
13373
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 @see
13375 @return Result of the function call
13376*/
13377WDI_Status
13378WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013379(
Jeff Johnson295189b2012-06-20 16:38:30 -070013380 WDI_ControlBlockType* pWDICtx,
13381 WDI_EventInfoType* pEventData
13382)
13383{
13384 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13385 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013386 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 wpt_uint16 usDataOffset = 0;
13388 wpt_uint16 usSendSize = 0;
13389 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013390 wpt_uint8 ucCurrentBSSSesIdx = 0;
13391 WDI_BSSSessionType* pBSSSes = NULL;
13392
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13394
13395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013397 -------------------------------------------------------------------------*/
13398 if (( NULL == pEventData ) ||
13399 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13400 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13401 {
13402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13403 "Invalid parameters in Keep Alive req");
13404 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013405 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013406 }
13407
13408 /*-----------------------------------------------------------------------
13409 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013410 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013411 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 sizeof(keepAliveReq),
13414 &pSendBuffer, &usDataOffset, &usSendSize))||
13415 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13416 {
13417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13418 "Unable to get send buffer in keep alive req %x %x %x",
13419 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13420 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013421 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 }
13423
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013424 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13425 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13426 &pBSSSes);
13427 if ( NULL == pBSSSes )
13428 {
13429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013430 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013431 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013432 }
13433
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13435 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13436
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013437 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013438
Jeff Johnson295189b2012-06-20 16:38:30 -070013439 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13440 {
13441 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13442 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13443 HAL_IPV4_ADDR_LEN);
13444 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13445 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013447 wpalMemoryCopy(keepAliveReq.destMacAddr,
13448 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13449 HAL_MAC_ADDR_LEN);
13450 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013451
13452 wpalMemoryCopy( pSendBuffer+usDataOffset,
13453 &keepAliveReq,
13454 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013455
13456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13457 "Process keep alive req %d",sizeof(keepAliveReq));
13458
13459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13460 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13461
13462 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013464
13465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13466 "Sending keep alive req to HAL");
13467
13468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13472 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013473
13474fail:
13475 // Release the message buffer so we don't leak
13476 wpalMemoryFree(pSendBuffer);
13477
13478failRequest:
13479 //WDA should have failure check to avoid the memory leak
13480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013481}/*WDI_ProcessKeepAliveReq*/
13482
13483
13484/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013487
13488 @param pWDICtx: pointer to the WLAN DAL context
13489 pEventData: pointer to the event information structure
13490
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 @see
13492 @return Result of the function call
13493*/
13494WDI_Status
13495WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013496(
Jeff Johnson295189b2012-06-20 16:38:30 -070013497 WDI_ControlBlockType* pWDICtx,
13498 WDI_EventInfoType* pEventData
13499)
13500{
13501 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13502 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013503 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 wpt_uint16 usDataOffset = 0;
13505 wpt_uint16 usSendSize = 0;
13506 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013507 wpt_uint8 ucCurrentBSSSesIdx = 0;
13508 WDI_BSSSessionType* pBSSSes = NULL;
13509
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13511
13512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 -------------------------------------------------------------------------*/
13515 if (( NULL == pEventData ) ||
13516 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13517 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13518 {
13519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013520 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013521 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013522 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 }
13524
13525 /*-----------------------------------------------------------------------
13526 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013527 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013528 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 sizeof(wowlAddBcPtrnReq),
13531 &pSendBuffer, &usDataOffset, &usSendSize))||
13532 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13533 {
13534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13535 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13536 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13537 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013538 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 }
13540
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013541 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13542 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13543 &pBSSSes);
13544 if ( NULL == pBSSSes )
13545 {
13546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013547 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013548 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013549 }
13550
Jeff Johnsone7245742012-09-05 17:12:55 -070013551 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013553 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013554 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013555 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013557 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13559
13560 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13561 {
13562 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13563 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13564 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13565 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13566 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13567 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13568 }
13569 else
13570 {
13571 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13572 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13573 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13574 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13575 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13576 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13577
13578 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13579 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13580 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13581 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13582 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13583 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13584 }
13585
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013586 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13587
Jeff Johnson295189b2012-06-20 16:38:30 -070013588 wpalMemoryCopy( pSendBuffer+usDataOffset,
13589 &wowlAddBcPtrnReq,
13590 sizeof(wowlAddBcPtrnReq));
13591
13592 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013593 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013594
13595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013596 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13599 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013600fail:
13601 // Release the message buffer so we don't leak
13602 wpalMemoryFree(pSendBuffer);
13603
13604failRequest:
13605 //WDA should have failure check to avoid the memory leak
13606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013607}/*WDI_ProcessWowlAddBcPtrnReq*/
13608
13609/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013610 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013611 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013612
13613 @param pWDICtx: pointer to the WLAN DAL context
13614 pEventData: pointer to the event information structure
13615
Jeff Johnson295189b2012-06-20 16:38:30 -070013616 @see
13617 @return Result of the function call
13618*/
13619WDI_Status
13620WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013621(
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 WDI_ControlBlockType* pWDICtx,
13623 WDI_EventInfoType* pEventData
13624)
13625{
13626 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13627 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013628 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 wpt_uint16 usDataOffset = 0;
13630 wpt_uint16 usSendSize = 0;
13631 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013632 wpt_uint8 ucCurrentBSSSesIdx = 0;
13633 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13635
13636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 -------------------------------------------------------------------------*/
13639 if (( NULL == pEventData ) ||
13640 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13641 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13642 {
13643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013646 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 }
13648
13649 /*-----------------------------------------------------------------------
13650 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013651 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013652 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013653 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013654 sizeof(wowlDelBcPtrnReq),
13655 &pSendBuffer, &usDataOffset, &usSendSize))||
13656 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13657 {
13658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13659 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13660 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13661 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013662 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 }
13664
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013665 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13666 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13667 &pBSSSes);
13668 if ( NULL == pBSSSes )
13669 {
13670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013671 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013672 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013673 }
13674
Jeff Johnsone7245742012-09-05 17:12:55 -070013675 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013676 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013677
13678 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13679
Jeff Johnsone7245742012-09-05 17:12:55 -070013680 wpalMemoryCopy( pSendBuffer+usDataOffset,
13681 &wowlDelBcPtrnReq,
13682 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013683
13684 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013686
13687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013688 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13691 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013692
13693fail:
13694 // Release the message buffer so we don't leak
13695 wpalMemoryFree(pSendBuffer);
13696
13697failRequest:
13698 //WDA should have failure check to avoid the memory leak
13699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013700}/*WDI_ProcessWowlDelBcPtrnReq*/
13701
13702/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013703 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013704 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013705
13706 @param pWDICtx: pointer to the WLAN DAL context
13707 pEventData: pointer to the event information structure
13708
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 @see
13710 @return Result of the function call
13711*/
13712WDI_Status
13713WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013714(
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 WDI_ControlBlockType* pWDICtx,
13716 WDI_EventInfoType* pEventData
13717)
13718{
13719 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13720 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013721 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 wpt_uint16 usDataOffset = 0;
13723 wpt_uint16 usSendSize = 0;
13724 tHalWowlEnterParams wowlEnterReq;
13725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13726
13727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 -------------------------------------------------------------------------*/
13730 if (( NULL == pEventData ) ||
13731 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13732 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13733 {
13734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 }
13739
13740 /*-----------------------------------------------------------------------
13741 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013742 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013743 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013744 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013745 sizeof(wowlEnterReq),
13746 &pSendBuffer, &usDataOffset, &usSendSize))||
13747 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13748 {
13749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13750 "Unable to get send buffer in Wowl enter req %x %x %x",
13751 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 }
13755
Jeff Johnsone7245742012-09-05 17:12:55 -070013756 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013757 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013762 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013763 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013764 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013770 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013771 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13772
13773#ifdef WLAN_WAKEUP_EVENTS
13774 wowlEnterReq.ucWoWEAPIDRequestEnable =
13775 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13776
13777 wowlEnterReq.ucWoWEAPOL4WayEnable =
13778 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13779
13780 wowlEnterReq.ucWowNetScanOffloadMatch =
13781 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13782
13783 wowlEnterReq.ucWowGTKRekeyError =
13784 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13785
13786 wowlEnterReq.ucWoWBSSConnLoss =
13787 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13788#endif // WLAN_WAKEUP_EVENTS
13789
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013790 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13791
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13793 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13794 sizeof(tSirMacAddr));
13795
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 wpalMemoryCopy( pSendBuffer+usDataOffset,
13797 &wowlEnterReq,
13798 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013799
13800 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013801 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013802
13803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013804 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013805 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013806 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13807 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013808}/*WDI_ProcessWowlEnterReq*/
13809
13810/**
13811 @brief Process Wowl exit Request function (called when Main FSM
13812 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013813
13814 @param pWDICtx: pointer to the WLAN DAL context
13815 pEventData: pointer to the event information structure
13816
Jeff Johnson295189b2012-06-20 16:38:30 -070013817 @see
13818 @return Result of the function call
13819*/
13820WDI_Status
13821WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013822(
Jeff Johnson295189b2012-06-20 16:38:30 -070013823 WDI_ControlBlockType* pWDICtx,
13824 WDI_EventInfoType* pEventData
13825)
13826{
13827 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013828 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013829 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 wpt_uint16 usDataOffset = 0;
13831 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013832 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13834
13835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 -------------------------------------------------------------------------*/
13838 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013839 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013840 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13841 {
13842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013843 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013845 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013846 }
13847
13848 /*-----------------------------------------------------------------------
13849 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013850 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013851 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013852 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013853 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013854 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013855 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 {
13857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13858 "Unable to get send buffer in Wowl Exit req %x %x",
13859 pEventData, wdiWowlExitCb);
13860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 }
13863
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013864 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13865
13866 wpalMemoryCopy( pSendBuffer+usDataOffset,
13867 &wowlExitparams,
13868 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013870 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013871 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013872 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13873 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013874}/*WDI_ProcessWowlExitReq*/
13875
13876/**
13877 @brief Process Configure Apps Cpu Wakeup State Request function
13878 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013879
13880 @param pWDICtx: pointer to the WLAN DAL context
13881 pEventData: pointer to the event information structure
13882
Jeff Johnson295189b2012-06-20 16:38:30 -070013883 @see
13884 @return Result of the function call
13885*/
13886WDI_Status
13887WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013888(
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 WDI_ControlBlockType* pWDICtx,
13890 WDI_EventInfoType* pEventData
13891)
13892{
13893 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13894 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013895 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013896 wpt_uint16 usDataOffset = 0;
13897 wpt_uint16 usSendSize = 0;
13898 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13900
13901 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013902 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013903 -------------------------------------------------------------------------*/
13904 if (( NULL == pEventData ) ||
13905 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13906 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13907 {
13908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013909 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013912 }
13913
13914 /*-----------------------------------------------------------------------
13915 Get message buffer
13916 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013917 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013918 sizeof(halCfgAppsCpuWakeupStateReqParams),
13919 &pSendBuffer, &usDataOffset, &usSendSize))||
13920 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13921 {
13922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13923 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13924 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 }
13928
Jeff Johnsone7245742012-09-05 17:12:55 -070013929 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13931
Jeff Johnsone7245742012-09-05 17:12:55 -070013932 wpalMemoryCopy( pSendBuffer+usDataOffset,
13933 &halCfgAppsCpuWakeupStateReqParams,
13934 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013935
13936 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013937 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013938
13939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013940 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013941 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013942 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13943 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13944 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013945}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13946
13947#ifdef WLAN_FEATURE_VOWIFI_11R
13948/**
13949 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13950 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013951
13952 @param pWDICtx: pointer to the WLAN DAL context
13953 pEventData: pointer to the event information structure
13954
Jeff Johnson295189b2012-06-20 16:38:30 -070013955 @see
13956 @return Result of the function call
13957*/
13958WDI_Status
13959WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013960(
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 WDI_ControlBlockType* pWDICtx,
13962 WDI_EventInfoType* pEventData
13963)
13964{
13965 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13966 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013970 wpt_uint16 usDataOffset = 0;
13971 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 wpt_macAddr macBSSID;
13974 tAggrAddTsReq halAggrAddTsReq;
13975 int i;
13976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13977
13978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 -------------------------------------------------------------------------*/
13981 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13982 ( NULL == pEventData->pCBfnc ))
13983 {
13984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 }
13989 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13990 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13991 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13992 /*-------------------------------------------------------------------------
13993 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013994 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 -------------------------------------------------------------------------*/
13996 wpalMutexAcquire(&pWDICtx->wptMutex);
13997
13998 /*------------------------------------------------------------------------
13999 Find the BSS for which the request is made and identify WDI session
14000 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14002 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014003 &macBSSID))
14004 {
14005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14006 "This station does not exist in the WDI Station Table %d");
14007 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 }
14010
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14012 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14015 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14016 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014017
14018 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014020 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014021
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 /*------------------------------------------------------------------------
14023 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014024 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 ------------------------------------------------------------------------*/
14026 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14027 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14029 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14030 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014031
Jeff Johnsone7245742012-09-05 17:12:55 -070014032 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014033 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014034 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 }
14036
14037 wpalMutexRelease(&pWDICtx->wptMutex);
14038 /*-----------------------------------------------------------------------
14039 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014040 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014041 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 sizeof(tAggrAddTsParams),
14044 &pSendBuffer, &usDataOffset, &usSendSize))||
14045 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14046 {
14047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14048 "Unable to get send buffer in set bss key req %x %x %x",
14049 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 }
14053
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014056 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014057 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14058
14059 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14060 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014061 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014062 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014065 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14067 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014068 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014069 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14070 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14073 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014074 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014075 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14076 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014077 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014078 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14079 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014080 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014081 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14082 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014083 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014084 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14085 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014086 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014087 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14088 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014089 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014090 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014091 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014093
14094
14095 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014097 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014099 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014101 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014103 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014105 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014106 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014107 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014108 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014109 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014110 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014111 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014113 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014114 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014115 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014121 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14125 }
14126
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 wpalMemoryCopy( pSendBuffer+usDataOffset,
14128 &halAggrAddTsReq,
14129 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014130
14131 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014132 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014133
14134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014135 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014140}/*WDI_ProcessAggrAddTSpecReq*/
14141#endif /* WLAN_FEATURE_VOWIFI_11R */
14142
14143/**
14144 @brief Process Shutdown Request function (called when Main FSM
14145 allows it)
14146
14147 @param pWDICtx: pointer to the WLAN DAL context
14148 pEventData: pointer to the event information structure
14149
14150 @see
14151 @return Result of the function call
14152*/
14153WDI_Status
14154WDI_ProcessShutdownReq
14155(
14156 WDI_ControlBlockType* pWDICtx,
14157 WDI_EventInfoType* pEventData
14158 )
14159{
14160 wpt_status wptStatus;
14161
14162
14163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14164
14165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 -------------------------------------------------------------------------*/
14168 if ( NULL == pEventData )
14169 {
14170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 WDI_ASSERT(0);
14173 return WDI_STATUS_E_FAILURE;
14174 }
14175
14176 wpalMutexAcquire(&pWDICtx->wptMutex);
14177
14178
14179 gWDIInitialized = eWLAN_PAL_FALSE;
14180 /*! TO DO: stop the data services */
14181 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14182 {
14183 /*Stop the STA Table !UT- check this logic again
14184 It is safer to do it here than on the response - because a stop is imminent*/
14185 WDI_STATableStop(pWDICtx);
14186
14187 /* Stop Transport Driver, DXE */
14188 WDTS_Stop(pWDICtx);
14189 }
14190
14191 /*Clear all pending request*/
14192 WDI_ClearPendingRequests(pWDICtx);
14193 /* Close Data transport*/
14194 /* FTM mode does not open Data Path */
14195 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14196 {
14197 WDTS_Close(pWDICtx);
14198 }
14199 /*Close the STA Table !UT- check this logic again*/
14200 WDI_STATableClose(pWDICtx);
14201 /*close the PAL */
14202 wptStatus = wpalClose(pWDICtx->pPALContext);
14203 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14204 {
14205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14206 "Failed to wpal Close %d", wptStatus);
14207 WDI_ASSERT(0);
14208 }
14209
14210 /*Transition back to init state*/
14211 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14212
14213 wpalMutexRelease(&pWDICtx->wptMutex);
14214
14215 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014217
14218
Jeff Johnsone7245742012-09-05 17:12:55 -070014219 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014220}/*WDI_ProcessShutdownReq*/
14221
14222/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014223 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014224========================================================================*/
14225
14226/**
14227 @brief Process Start Response function (called when a response
14228 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014229
14230 @param pWDICtx: pointer to the WLAN DAL context
14231 pEventData: pointer to the event information structure
14232
Jeff Johnson295189b2012-06-20 16:38:30 -070014233 @see
14234 @return Result of the function call
14235*/
14236WDI_Status
14237WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014238(
Jeff Johnson295189b2012-06-20 16:38:30 -070014239 WDI_ControlBlockType* pWDICtx,
14240 WDI_EventInfoType* pEventData
14241)
14242{
14243 WDI_StartRspParamsType wdiRspParams;
14244 WDI_StartRspCb wdiStartRspCb = NULL;
14245
14246 tHalMacStartRspParams* startRspParams;
14247
14248#ifndef HAL_SELF_STA_PER_BSS
14249 WDI_AddStaParams wdiAddSTAParam = {0};
14250#endif
14251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14252
Jeff Johnsone7245742012-09-05 17:12:55 -070014253 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 -------------------------------------------------------------------------*/
14257 if (( NULL == pEventData ) ||
14258 ( NULL == pEventData->pEventData) ||
14259 ( NULL == wdiStartRspCb ))
14260 {
14261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014265 }
14266
14267 /*-------------------------------------------------------------------------
14268 Extract response and send it to UMAC
14269 -------------------------------------------------------------------------*/
14270 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14271 {
14272 // not enough data was received
14273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14274 "Invalid response length in Start Resp Expect %x Rcvd %x",
14275 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014278 }
14279
14280 /*-------------------------------------------------------------------------
14281 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014282 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014283 -------------------------------------------------------------------------*/
14284 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14285
14286 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14287 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14288 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14289 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14290 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14291 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14292 wdiRspParams.wlanReportedVersion.major =
14293 startRspParams->wcnssWlanVersion.major;
14294 wdiRspParams.wlanReportedVersion.minor =
14295 startRspParams->wcnssWlanVersion.minor;
14296 wdiRspParams.wlanReportedVersion.version =
14297 startRspParams->wcnssWlanVersion.version;
14298 wdiRspParams.wlanReportedVersion.revision =
14299 startRspParams->wcnssWlanVersion.revision;
14300 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14301 startRspParams->wcnssCrmVersionString,
14302 sizeof(wdiRspParams.wcnssSoftwareVersion));
14303 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14304 startRspParams->wcnssWlanVersionString,
14305 sizeof(wdiRspParams.wcnssHardwareVersion));
14306 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14307
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014308 /*Save the HAL Version*/
14309 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14310
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 wpalMutexAcquire(&pWDICtx->wptMutex);
14312 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14313 {
14314 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14315
14316 /*Cache the start response for further use*/
14317 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 sizeof(pWDICtx->wdiCachedStartRspParams));
14320
14321 }
14322 else
14323 {
14324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14325 "Failed to start device with status %s(%d)",
14326 WDI_getHALStatusMsgString(startRspParams->status),
14327 startRspParams->status);
14328
14329 /*Set the expected state transition to stopped - because the start has
14330 failed*/
14331 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14332
14333 wpalMutexRelease(&pWDICtx->wptMutex);
14334
14335 /*Notify UMAC*/
14336 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014337
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14339
14340 /*Although the response is an error - it was processed by our function
14341 so as far as the caller is concerned this is a succesful reponse processing*/
14342 return WDI_STATUS_SUCCESS;
14343 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014344
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 wpalMutexRelease(&pWDICtx->wptMutex);
14346
14347 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14348 {
14349 /* FTM mode does not need to execute below */
14350 /* Notify UMAC */
14351 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14352 return WDI_STATUS_SUCCESS;
14353 }
14354
14355 /* START the Data transport */
14356 WDTS_startTransport(pWDICtx);
14357
14358 /*Start the STA Table !- check this logic again*/
14359 WDI_STATableStart(pWDICtx);
14360
14361#ifndef HAL_SELF_STA_PER_BSS
14362 /* Store the Self STA Index */
14363 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14364
14365 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14366 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14367 WDI_MAC_ADDR_LEN);
14368
14369 /* At this point add the self-STA */
14370
14371 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14372 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14373 /*! TO DO: wdiAddSTAParam.dpuSig */
14374 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14375 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14376 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14377
14378 //all DPU indices are the same for self STA
14379 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14380 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014381 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14383 WDI_MAC_ADDR_LEN);
14384 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14385 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14386
14387 /* Note: Since we don't get an explicit config STA request for self STA, we
14388 add the self STA upon receiving the Start response message. But the
14389 self STA entry in the table is deleted when WDI gets an explicit delete STA
14390 request */
14391 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14392#endif
14393
14394 /*Notify UMAC*/
14395 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14396
Jeff Johnsone7245742012-09-05 17:12:55 -070014397 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014398}/*WDI_ProcessStartRsp*/
14399
14400
14401/**
14402 @brief Process Stop Response function (called when a response
14403 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014404
14405 @param pWDICtx: pointer to the WLAN DAL context
14406 pEventData: pointer to the event information structure
14407
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 @see
14409 @return Result of the function call
14410*/
14411WDI_Status
14412WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014413(
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 WDI_ControlBlockType* pWDICtx,
14415 WDI_EventInfoType* pEventData
14416)
14417{
14418 WDI_Status wdiStatus;
14419 WDI_StopRspCb wdiStopRspCb = NULL;
14420
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14423
Jeff Johnsone7245742012-09-05 17:12:55 -070014424 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014426 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 -------------------------------------------------------------------------*/
14428 if (( NULL == pEventData ) ||
14429 ( NULL == pEventData->pEventData) ||
14430 ( NULL == wdiStopRspCb ))
14431 {
14432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014433 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 }
14437
14438 /*-------------------------------------------------------------------------
14439 Extract response and send it to UMAC
14440 -------------------------------------------------------------------------*/
14441 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14442 {
14443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14444 "Invalid response length in Stop Resp %x %x",
14445 pEventData->uEventDataSize);
14446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 }
14449
14450 /*-------------------------------------------------------------------------
14451 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014452 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14455 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 sizeof(halMacStopRspMsg.stopRspParams));
14457
Jeff Johnsone7245742012-09-05 17:12:55 -070014458 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014459
14460 wpalMutexAcquire(&pWDICtx->wptMutex);
14461
14462 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 --------------------------------------------------------------------------*/
14465 if ( WDI_STATUS_SUCCESS != wdiStatus )
14466 {
14467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14468 "Failed to stop the device with status %s (%d)",
14469 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14470 halMacStopRspMsg.stopRspParams.status);
14471
Jeff Johnsone7245742012-09-05 17:12:55 -070014472 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14473
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014477
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14479
14480 /*Transition now as WDI may get preempted imediately after it sends
14481 up the Stop Response and it will not get to process the state transition
14482 from Main Rsp function*/
14483 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14484 wpalMutexRelease(&pWDICtx->wptMutex);
14485
14486 /*! TO DO: - STOP the Data transport */
14487
14488 /*Notify UMAC*/
14489 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14490
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014492}/*WDI_ProcessStopRsp*/
14493
14494/**
14495 @brief Process Close Rsp function (called when a response
14496 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014497
14498 @param pWDICtx: pointer to the WLAN DAL context
14499 pEventData: pointer to the event information structure
14500
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 @see
14502 @return Result of the function call
14503*/
14504WDI_Status
14505WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014506(
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 WDI_ControlBlockType* pWDICtx,
14508 WDI_EventInfoType* pEventData
14509)
14510{
14511 /*There is no close response comming from HAL - function just kept for
14512 simmetry */
14513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014514 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014515}/*WDI_ProcessCloseRsp*/
14516
14517
14518/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014519 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014520============================================================================*/
14521
14522/**
14523 @brief Process Init Scan Rsp function (called when a response
14524 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014525
14526 @param pWDICtx: pointer to the WLAN DAL context
14527 pEventData: pointer to the event information structure
14528
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 @see
14530 @return Result of the function call
14531*/
14532WDI_Status
14533WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014534(
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 WDI_ControlBlockType* pWDICtx,
14536 WDI_EventInfoType* pEventData
14537)
14538{
14539 WDI_Status wdiStatus;
14540 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014542 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14544
14545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014546 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014547 -------------------------------------------------------------------------*/
14548 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14549 ( NULL == pEventData->pEventData))
14550 {
14551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014552 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 }
14556
14557 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14558 if( NULL == wdiInitScanRspCb)
14559 {
14560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014561 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 }
14565
14566 /*-------------------------------------------------------------------------
14567 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014568 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014569 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014570 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14571 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 sizeof(halInitScanRspMsg.initScanRspParams));
14573
Jeff Johnsone7245742012-09-05 17:12:55 -070014574 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014575
14576 if ( pWDICtx->bInBmps )
14577 {
14578 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014579 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14580 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14582 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14583 WDI_ASSERT(0);
14584 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 }
14586
14587 /*Notify UMAC*/
14588 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14589
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014591}/*WDI_ProcessInitScanRsp*/
14592
14593
14594/**
14595 @brief Process Start Scan Rsp function (called when a response
14596 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014597
14598 @param pWDICtx: pointer to the WLAN DAL context
14599 pEventData: pointer to the event information structure
14600
Jeff Johnson295189b2012-06-20 16:38:30 -070014601 @see
14602 @return Result of the function call
14603*/
14604WDI_Status
14605WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014606(
Jeff Johnson295189b2012-06-20 16:38:30 -070014607 WDI_ControlBlockType* pWDICtx,
14608 WDI_EventInfoType* pEventData
14609)
14610{
14611 WDI_StartScanRspParamsType wdiStartScanParams;
14612 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014613
14614 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14616
14617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014619 -------------------------------------------------------------------------*/
14620 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14621 ( NULL == pEventData->pEventData))
14622 {
14623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 }
14628
14629 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14630 if( NULL == wdiStartScanRspCb)
14631 {
14632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014633 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 }
14637
14638 /*-------------------------------------------------------------------------
14639 Extract response and send it to UMAC
14640 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014641 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14642 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 sizeof(halStartScanRspMsg.startScanRspParams));
14644
14645 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14646 halStartScanRspMsg.startScanRspParams.status);
14647#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014648 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014649 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014650 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 halStartScanRspMsg.startScanRspParams.startTSF,
14652 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014653#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014654
14655 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14656 {
14657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14658 "Start scan failed with status %s (%d)",
14659 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14660 halStartScanRspMsg.startScanRspParams.status);
14661 /* send the status to UMAC, don't return from here*/
14662 }
14663
14664 /*Notify UMAC*/
14665 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14666
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014668
14669}/*WDI_ProcessStartScanRsp*/
14670
14671
14672/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014675
14676 @param pWDICtx: pointer to the WLAN DAL context
14677 pEventData: pointer to the event information structure
14678
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 @see
14680 @return Result of the function call
14681*/
14682WDI_Status
14683WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014684(
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 WDI_ControlBlockType* pWDICtx,
14686 WDI_EventInfoType* pEventData
14687)
14688{
14689 WDI_Status wdiStatus;
14690 tHalEndScanRspMsg halEndScanRspMsg;
14691 WDI_EndScanRspCb wdiEndScanRspCb;
14692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14693
14694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 -------------------------------------------------------------------------*/
14697 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14698 ( NULL == pEventData->pEventData))
14699 {
14700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014704 }
14705
14706 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14707
14708 /*-------------------------------------------------------------------------
14709 Extract response and send it to UMAC
14710 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014711 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14712 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 sizeof(halEndScanRspMsg.endScanRspParams));
14714
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014716
14717 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14718 {
14719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14720 "End Scan failed with status %s (%d )",
14721 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14722 halEndScanRspMsg.endScanRspParams.status);
14723 /* send the status to UMAC, don't return from here*/
14724 }
14725
14726 /*Notify UMAC*/
14727 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14728
Jeff Johnsone7245742012-09-05 17:12:55 -070014729 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014730}/*WDI_ProcessEndScanRsp*/
14731
14732
14733/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014736
14737 @param pWDICtx: pointer to the WLAN DAL context
14738 pEventData: pointer to the event information structure
14739
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 @see
14741 @return Result of the function call
14742*/
14743WDI_Status
14744WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014745(
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 WDI_ControlBlockType* pWDICtx,
14747 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014748)
Jeff Johnson295189b2012-06-20 16:38:30 -070014749{
14750 WDI_Status wdiStatus;
14751 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014752
14753 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14755
14756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 -------------------------------------------------------------------------*/
14759 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14760 ( NULL == pEventData->pEventData))
14761 {
14762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 }
14767
14768 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14769
14770 /*-------------------------------------------------------------------------
14771 Extract response and send it to UMAC
14772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14774 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14776
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014778
14779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 halFinishScanRspMsg.finishScanRspParams.status);
14782
14783 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14784 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14785 {
14786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14787 "Finish Scan failed with status %s (%d)",
14788 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14789 halFinishScanRspMsg.finishScanRspParams.status);
14790 /* send the status to UMAC, don't return from here*/
14791 }
14792
14793 /*Notify UMAC*/
14794 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14795
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014797}/*WDI_ProcessFinishScanRsp*/
14798
14799/**
14800 @brief Process Join Response function (called when a response
14801 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014802
14803 @param pWDICtx: pointer to the WLAN DAL context
14804 pEventData: pointer to the event information structure
14805
Jeff Johnson295189b2012-06-20 16:38:30 -070014806 @see
14807 @return Result of the function call
14808*/
14809WDI_Status
14810WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014811(
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 WDI_ControlBlockType* pWDICtx,
14813 WDI_EventInfoType* pEventData
14814)
14815{
14816 WDI_Status wdiStatus;
14817 WDI_JoinRspCb wdiJoinRspCb;
14818 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014819
14820 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14822
14823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 -------------------------------------------------------------------------*/
14826 if (( NULL == pWDICtx ) ||
14827 ( NULL == pWDICtx->pfncRspCB ) ||
14828 ( NULL == pEventData ) ||
14829 ( NULL == pEventData->pEventData))
14830 {
14831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 }
14836
14837 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14838
14839 /*-------------------------------------------------------------------------
14840 Extract response and send it to UMAC
14841 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14843 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014844 sizeof(halJoinRspMsg.joinRspParams));
14845
Jeff Johnsone7245742012-09-05 17:12:55 -070014846 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014847
14848 wpalMutexAcquire(&pWDICtx->wptMutex);
14849
14850 /*-----------------------------------------------------------------------
14851 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014852 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014854 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14856 {
14857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14859 "association no longer in progress %d - mysterious HAL response",
14860 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014861
Jeff Johnsone7245742012-09-05 17:12:55 -070014862 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014863 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014864 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014865 }
14866
14867 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14868
14869 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014870 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014871 -----------------------------------------------------------------------*/
14872 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14873 {
14874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14875 "Join only allowed in Joining state - failure state is %d "
14876 "strange HAL response", pBSSSes->wdiAssocState);
14877
Jeff Johnsone7245742012-09-05 17:12:55 -070014878 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14879
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014881 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014882 }
14883
14884
14885 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 -----------------------------------------------------------------------*/
14888 if ( WDI_STATUS_SUCCESS != wdiStatus )
14889 {
14890 /*Association was failed by HAL - remove session*/
14891 WDI_DeleteSession(pWDICtx, pBSSSes);
14892
14893 /*Association no longer in progress */
14894 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14895
14896 /*Association no longer in progress - prepare pending assoc for processing*/
14897 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014898
Jeff Johnson295189b2012-06-20 16:38:30 -070014899 }
14900 else
14901 {
14902 /*Transition to state Joining - this may be redundant as we are supposed
14903 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014905 }
14906
14907 wpalMutexRelease(&pWDICtx->wptMutex);
14908
14909 /*Notify UMAC*/
14910 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14911
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014913}/*WDI_ProcessJoinRsp*/
14914
14915
14916/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014919
14920 @param pWDICtx: pointer to the WLAN DAL context
14921 pEventData: pointer to the event information structure
14922
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 @see
14924 @return Result of the function call
14925*/
14926WDI_Status
14927WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014928(
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 WDI_ControlBlockType* pWDICtx,
14930 WDI_EventInfoType* pEventData
14931)
14932{
14933 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14934 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014935 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 WDI_BSSSessionType* pBSSSes = NULL;
14937
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14940 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014941
Jeff Johnson295189b2012-06-20 16:38:30 -070014942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14943
14944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014945 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 -------------------------------------------------------------------------*/
14947 if (( NULL == pEventData ) ||
14948 ( NULL == pEventData->pEventData))
14949 {
14950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014951 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 }
14955
14956 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14957
14958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014961 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14962 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 sizeof(halConfigBssRspMsg.configBssRspParams));
14964
14965 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14966 halConfigBssRspMsg.configBssRspParams.status);
14967 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14968 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14971 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014972
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014974
14975 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014977
14978 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014979 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014980
Jeff Johnson295189b2012-06-20 16:38:30 -070014981 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014982
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14986 #endif
14987 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14988 halConfigBssRspMsg.configBssRspParams.staMac,
14989 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014990
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 wpalMutexAcquire(&pWDICtx->wptMutex);
14992 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014993 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014994 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014995 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14996 wdiConfigBSSParams.macBSSID,
14997 &pBSSSes);
14998
Jeff Johnson295189b2012-06-20 16:38:30 -070014999 /*-----------------------------------------------------------------------
15000 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 -----------------------------------------------------------------------*/
15003 if ( NULL == pBSSSes )
15004 {
15005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15006 "Association sequence for this BSS does not yet exist "
15007 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015008
15009 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15010
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015012 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015013 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015014
Jeff Johnson295189b2012-06-20 16:38:30 -070015015 /*Save data for this BSS*/
15016 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15017 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015018 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015020 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015021 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015022 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015023 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015024 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15028 pBSSSes->bcastStaIdx =
15029 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015030
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015032
Jeff Johnson295189b2012-06-20 16:38:30 -070015033 /*-------------------------------------------------------------------------
15034 Add Peer STA
15035 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015036 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015037 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15038 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015039
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015043 wdiAddSTAParam.ucHTCapable =
15044 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15045 wdiAddSTAParam.ucStaType =
15046 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15047
Jeff Johnson295189b2012-06-20 16:38:30 -070015048 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015049 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15050 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015052
15053 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15054 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15055 WDI_MAC_ADDR_LEN);
15056
Jeff Johnson295189b2012-06-20 16:38:30 -070015057 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015058 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015059 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015060 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015061 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015064 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015066 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015070
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15072 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015073
Jeff Johnson295189b2012-06-20 16:38:30 -070015074 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15075 /*-------------------------------------------------------------------------
15076 Add Broadcast STA only in AP mode
15077 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 WDI_BSS_OPERATIONAL_MODE_AP )
15080 {
15081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15082 "Add BCAST STA to table for index: %d",
15083 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015084
15085 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015087
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15089 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15090 }
15091 wpalMutexRelease(&pWDICtx->wptMutex);
15092 }
15093 else
15094 {
15095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15096 "Config BSS RSP failed with status : %s(%d)",
15097 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015098 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015099 halConfigBssRspMsg.configBssRspParams.status);
15100
Jeff Johnsone7245742012-09-05 17:12:55 -070015101
Jeff Johnson295189b2012-06-20 16:38:30 -070015102 /*Association was failed by HAL - remove session*/
15103 WDI_DeleteSession(pWDICtx, pBSSSes);
15104
15105 /*Association no longer in progress */
15106 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15107
15108 /*Association no longer in progress - prepare pending assoc for processing*/
15109 WDI_DequeueAssocRequest(pWDICtx);
15110
15111 }
15112
15113 /*Notify UMAC*/
15114 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15115
Jeff Johnsone7245742012-09-05 17:12:55 -070015116 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015117}/*WDI_ProcessConfigBSSRsp*/
15118
15119
15120/**
15121 @brief Process Del BSS Response function (called when a response
15122 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015123
15124 @param pWDICtx: pointer to the WLAN DAL context
15125 pEventData: pointer to the event information structure
15126
Jeff Johnson295189b2012-06-20 16:38:30 -070015127 @see
15128 @return Result of the function call
15129*/
15130WDI_Status
15131WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015132(
Jeff Johnson295189b2012-06-20 16:38:30 -070015133 WDI_ControlBlockType* pWDICtx,
15134 WDI_EventInfoType* pEventData
15135)
15136{
15137 WDI_DelBSSRspParamsType wdiDelBSSParams;
15138 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015139 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 WDI_BSSSessionType* pBSSSes = NULL;
15141
Jeff Johnsone7245742012-09-05 17:12:55 -070015142 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15144
15145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015147 -------------------------------------------------------------------------*/
15148 if (( NULL == pEventData ) ||
15149 ( NULL == pEventData->pEventData))
15150 {
15151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015152 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015155 }
15156
15157 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15158
15159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015160 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15163 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 sizeof(halDelBssRspMsg.deleteBssRspParams));
15165
15166
15167 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015168 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015169
15170 wpalMutexAcquire(&pWDICtx->wptMutex);
15171
15172 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015173 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15176 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15177 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015178
15179 /*-----------------------------------------------------------------------
15180 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 -----------------------------------------------------------------------*/
15183 if ( NULL == pBSSSes )
15184 {
15185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15186 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015187 "association no longer in progress - mysterious HAL response");
15188
15189 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15190
15191 wpalMutexRelease(&pWDICtx->wptMutex);
15192 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015194
15195 /*Extract BSSID for the response to UMAC*/
15196 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15197 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15198
15199 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15200
15201 /*-----------------------------------------------------------------------
15202 The current session will be deleted
15203 -----------------------------------------------------------------------*/
15204 WDI_DeleteSession(pWDICtx, pBSSSes);
15205
15206
15207 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15208 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015210 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015211 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015212
15213 /* Delete the STA's in this BSS */
15214 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15215
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 wpalMutexRelease(&pWDICtx->wptMutex);
15217
15218 /*Notify UMAC*/
15219 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15220
Jeff Johnsone7245742012-09-05 17:12:55 -070015221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015222}/*WDI_ProcessDelBSSRsp*/
15223
15224/**
15225 @brief Process Post Assoc Rsp function (called when a response
15226 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015227
15228 @param pWDICtx: pointer to the WLAN DAL context
15229 pEventData: pointer to the event information structure
15230
Jeff Johnson295189b2012-06-20 16:38:30 -070015231 @see
15232 @return Result of the function call
15233*/
15234WDI_Status
15235WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015236(
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 WDI_ControlBlockType* pWDICtx,
15238 WDI_EventInfoType* pEventData
15239)
15240{
15241 WDI_PostAssocRspParamsType wdiPostAssocParams;
15242 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015243 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15247
15248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 -------------------------------------------------------------------------*/
15251 if (( NULL == pEventData ) ||
15252 ( NULL == pEventData->pEventData))
15253 {
15254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 }
15259
15260 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15261
15262 /*-------------------------------------------------------------------------
15263 Extract response and send it to UMAC
15264 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015265 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15266 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 sizeof(halPostAssocRspMsg.postAssocRspParams));
15268
15269 /*Extract the Post Assoc STA Params */
15270
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015272 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015275 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15277
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 wdiPostAssocParams.wdiStatus =
15279 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015280
15281 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15282 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015283 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15284 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015285 WDI_MAC_ADDR_LEN);
15286
15287 /* Extract Post Assoc BSS Params */
15288
Jeff Johnsone7245742012-09-05 17:12:55 -070015289 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15290 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15291 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015292
15293 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15294 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15297 .macSTA, WDI_MAC_ADDR_LEN);
15298
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15301
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15304
15305 wdiPostAssocParams.bssParams.ucBSSIdx =
15306 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15307
Jeff Johnsone7245742012-09-05 17:12:55 -070015308 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015309 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15310
15311 wpalMutexAcquire(&pWDICtx->wptMutex);
15312
15313 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015316 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015317 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015318 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015319
15320 /*-----------------------------------------------------------------------
15321 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015322 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015323 -----------------------------------------------------------------------*/
15324 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015325 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15327 {
15328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15329 "Association sequence for this BSS does not yet exist or "
15330 "association no longer in progress - mysterious HAL response");
15331
Jeff Johnsone7245742012-09-05 17:12:55 -070015332 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15333
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 }
15337
15338 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015339 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015340 -----------------------------------------------------------------------*/
15341 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15342 {
15343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15344 "Post Assoc not allowed before JOIN - failing request "
15345 "strange HAL response");
15346
Jeff Johnsone7245742012-09-05 17:12:55 -070015347 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15348
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015351 }
15352
15353 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 -----------------------------------------------------------------------*/
15356 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15357 {
15358 /*Association was failed by HAL - remove session*/
15359 WDI_DeleteSession(pWDICtx, pBSSSes);
15360 }
15361 else
15362 {
15363 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015365
15366 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015367 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015368 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015371 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15375
Jeff Johnsone7245742012-09-05 17:12:55 -070015376 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015377 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15378 }
15379
15380 /*Association no longer in progress */
15381 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15382
15383 /*Association no longer in progress - prepare pending assoc for processing*/
15384 WDI_DequeueAssocRequest(pWDICtx);
15385
15386 wpalMutexRelease(&pWDICtx->wptMutex);
15387
15388 /*Notify UMAC*/
15389 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15390
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015392}/*WDI_ProcessPostAssocRsp*/
15393
15394/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015395 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015397
15398 @param pWDICtx: pointer to the WLAN DAL context
15399 pEventData: pointer to the event information structure
15400
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 @see
15402 @return Result of the function call
15403*/
15404WDI_Status
15405WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015406(
Jeff Johnson295189b2012-06-20 16:38:30 -070015407 WDI_ControlBlockType* pWDICtx,
15408 WDI_EventInfoType* pEventData
15409)
15410{
15411 WDI_DelSTARspParamsType wdiDelSTARsp;
15412 WDI_DelSTARspCb wdiDelSTARspCb;
15413 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015414 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15416
15417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015418 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015419 -------------------------------------------------------------------------*/
15420 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15421 ( NULL == pEventData->pEventData))
15422 {
15423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 }
15428
15429 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15430
15431 /*-------------------------------------------------------------------------
15432 Extract response and send it to UMAC
15433 -------------------------------------------------------------------------*/
15434 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015435 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 sizeof(halDelStaRspMsg.delStaRspParams));
15437
15438 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015439 wdiDelSTARsp.wdiStatus =
15440 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015441
15442 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15443
15444 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15445 if(staType == WDI_STA_ENTRY_SELF)
15446 {
15447 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15448
15449 /* At this point add the self-STA */
15450
15451 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15452 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15453 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15454
15455#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15456#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15457
15458 //all DPU indices are the same for self STA
15459 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15460 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15461 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15462 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15463 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15464 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015465
15466 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 }
15468 else
15469 {
15470 //Delete the station in the table
15471 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15472 }
15473
15474 /*Notify UMAC*/
15475 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15476
Jeff Johnsone7245742012-09-05 17:12:55 -070015477 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015478}/*WDI_ProcessDelSTARsp*/
15479
15480
15481/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015482 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015483==========================================================================*/
15484
15485/**
15486 @brief Process Set BSS Key Rsp function (called when a response
15487 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015488
15489 @param pWDICtx: pointer to the WLAN DAL context
15490 pEventData: pointer to the event information structure
15491
Jeff Johnson295189b2012-06-20 16:38:30 -070015492 @see
15493 @return Result of the function call
15494*/
15495WDI_Status
15496WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015497(
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 WDI_ControlBlockType* pWDICtx,
15499 WDI_EventInfoType* pEventData
15500)
15501{
15502 WDI_Status wdiStatus;
15503 eHalStatus halStatus;
15504 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15506
15507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015509 -------------------------------------------------------------------------*/
15510 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15511 ( NULL == pEventData->pEventData))
15512 {
15513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 }
15518
15519 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15520
15521 /*-------------------------------------------------------------------------
15522 Extract response and send it to UMAC
15523 -------------------------------------------------------------------------*/
15524 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015525 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015526
15527 if ( eHAL_STATUS_SUCCESS != halStatus )
15528 {
15529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15530 "Set BSS Key failed with status %s (%d)",
15531 WDI_getHALStatusMsgString(halStatus),
15532 halStatus);
15533 /* send the status to UMAC, don't return from here*/
15534 }
15535
15536 /*Notify UMAC*/
15537 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15538
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015540}/*WDI_ProcessSetBssKeyRsp*/
15541
15542/**
15543 @brief Process Remove BSS Key Rsp function (called when a response
15544 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015545
15546 @param pWDICtx: pointer to the WLAN DAL context
15547 pEventData: pointer to the event information structure
15548
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 @see
15550 @return Result of the function call
15551*/
15552WDI_Status
15553WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015554(
Jeff Johnson295189b2012-06-20 16:38:30 -070015555 WDI_ControlBlockType* pWDICtx,
15556 WDI_EventInfoType* pEventData
15557)
15558{
15559 WDI_Status wdiStatus;
15560 eHalStatus halStatus;
15561 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15563
15564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015565 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015566 -------------------------------------------------------------------------*/
15567 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15568 ( NULL == pEventData->pEventData))
15569 {
15570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 }
15575
15576 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15577
15578 /*-------------------------------------------------------------------------
15579 Extract response and send it to UMAC
15580 -------------------------------------------------------------------------*/
15581 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015582 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015583
15584 if ( eHAL_STATUS_SUCCESS != halStatus )
15585 {
15586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15587 "Remove BSS Key failed with status %s (%d )",
15588 WDI_getHALStatusMsgString(halStatus),
15589 halStatus);
15590 /* send the status to UMAC, don't return from here*/
15591 }
15592
15593 /*Notify UMAC*/
15594 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15595
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015597}/*WDI_ProcessSetBssKeyRsp*/
15598
15599
15600/**
15601 @brief Process Set STA Key Rsp function (called when a response
15602 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015603
15604 @param pWDICtx: pointer to the WLAN DAL context
15605 pEventData: pointer to the event information structure
15606
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 @see
15608 @return Result of the function call
15609*/
15610WDI_Status
15611WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015612(
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 WDI_ControlBlockType* pWDICtx,
15614 WDI_EventInfoType* pEventData
15615)
15616{
15617 WDI_Status wdiStatus;
15618 eHalStatus halStatus;
15619 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15621
15622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015624 -------------------------------------------------------------------------*/
15625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15626 ( NULL == pEventData->pEventData))
15627 {
15628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015632 }
15633
15634 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15635
15636 /*-------------------------------------------------------------------------
15637 Extract response and send it to UMAC
15638 -------------------------------------------------------------------------*/
15639 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015641
15642 if ( eHAL_STATUS_SUCCESS != halStatus )
15643 {
15644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15645 "Set STA Key failed with status %s (%d)",
15646 WDI_getHALStatusMsgString(halStatus),
15647 halStatus);
15648 /* send the status to UMAC, don't return from here*/
15649 }
15650
15651 /*Notify UMAC*/
15652 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15653
Jeff Johnsone7245742012-09-05 17:12:55 -070015654 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015655}/*WDI_ProcessSetSTAKeyRsp*/
15656
15657/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015658 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015660
15661 @param pWDICtx: pointer to the WLAN DAL context
15662 pEventData: pointer to the event information structure
15663
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 @see
15665 @return Result of the function call
15666*/
15667WDI_Status
15668WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015669(
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 WDI_ControlBlockType* pWDICtx,
15671 WDI_EventInfoType* pEventData
15672)
15673{
15674 WDI_Status wdiStatus;
15675 eHalStatus halStatus;
15676 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15678
15679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015680 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015681 -------------------------------------------------------------------------*/
15682 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15683 ( NULL == pEventData->pEventData))
15684 {
15685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015686 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 }
15690
15691 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15692
15693 /*-------------------------------------------------------------------------
15694 Extract response and send it to UMAC
15695 -------------------------------------------------------------------------*/
15696 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015697 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015698
15699 if ( eHAL_STATUS_SUCCESS != halStatus )
15700 {
15701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15702 "Remove STA Key failed with status %s (%d)",
15703 WDI_getHALStatusMsgString(halStatus),
15704 halStatus);
15705 /* send the status to UMAC, don't return from here*/
15706 }
15707
15708 /*Notify UMAC*/
15709 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15710
Jeff Johnsone7245742012-09-05 17:12:55 -070015711 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015712}/*WDI_ProcessRemoveStaKeyRsp*/
15713
15714/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015715 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015716 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015717
15718 @param pWDICtx: pointer to the WLAN DAL context
15719 pEventData: pointer to the event information structure
15720
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 @see
15722 @return Result of the function call
15723*/
15724WDI_Status
15725WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015726(
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 WDI_ControlBlockType* pWDICtx,
15728 WDI_EventInfoType* pEventData
15729)
15730{
15731 WDI_Status wdiStatus;
15732 eHalStatus halStatus;
15733 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15735
15736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015737 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015738 -------------------------------------------------------------------------*/
15739 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15740 ( NULL == pEventData->pEventData))
15741 {
15742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 }
15747
15748 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15749
15750 /*-------------------------------------------------------------------------
15751 Extract response and send it to UMAC
15752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 wpalMemoryCopy( &halStatus,
15754 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015755 sizeof(halStatus));
15756
Jeff Johnsone7245742012-09-05 17:12:55 -070015757 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015758
15759 if ( eHAL_STATUS_SUCCESS != halStatus )
15760 {
15761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15762 "Set STA Key failed with status %s (%d)",
15763 WDI_getHALStatusMsgString(halStatus),
15764 halStatus);
15765 /* send the status to UMAC, don't return from here*/
15766 }
15767
15768 /*Notify UMAC*/
15769 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15770
Jeff Johnsone7245742012-09-05 17:12:55 -070015771 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015772}/*WDI_ProcessSetSTABcastKeyRsp*/
15773
15774/**
15775 @brief Process Remove STA Bcast Key Rsp function (called when a
15776 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015777
15778 @param pWDICtx: pointer to the WLAN DAL context
15779 pEventData: pointer to the event information structure
15780
Jeff Johnson295189b2012-06-20 16:38:30 -070015781 @see
15782 @return Result of the function call
15783*/
15784WDI_Status
15785WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015786(
Jeff Johnson295189b2012-06-20 16:38:30 -070015787 WDI_ControlBlockType* pWDICtx,
15788 WDI_EventInfoType* pEventData
15789)
15790{
15791 WDI_Status wdiStatus;
15792 eHalStatus halStatus;
15793 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15795
15796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 -------------------------------------------------------------------------*/
15799 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15800 ( NULL == pEventData->pEventData))
15801 {
15802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 }
15807
15808 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15809
15810 /*-------------------------------------------------------------------------
15811 Extract response and send it to UMAC
15812 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015813 wpalMemoryCopy( &halStatus,
15814 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015815 sizeof(halStatus));
15816
Jeff Johnsone7245742012-09-05 17:12:55 -070015817 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015818
15819 if ( eHAL_STATUS_SUCCESS != halStatus )
15820 {
15821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15822 "Remove STA Key failed with status %s (%d)",
15823 WDI_getHALStatusMsgString(halStatus),
15824 halStatus);
15825 /* send the status to UMAC, don't return from here*/
15826 }
15827
15828 /*Notify UMAC*/
15829 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15830
Jeff Johnsone7245742012-09-05 17:12:55 -070015831 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015832}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15833
15834
15835/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015836 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015837==========================================================================*/
15838
15839/**
15840 @brief Process Add TSpec Rsp function (called when a response
15841 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015842
15843 @param pWDICtx: pointer to the WLAN DAL context
15844 pEventData: pointer to the event information structure
15845
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 @see
15847 @return Result of the function call
15848*/
15849WDI_Status
15850WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015851(
Jeff Johnson295189b2012-06-20 16:38:30 -070015852 WDI_ControlBlockType* pWDICtx,
15853 WDI_EventInfoType* pEventData
15854)
15855{
15856 WDI_Status wdiStatus;
15857 eHalStatus halStatus;
15858 WDI_AddTsRspCb wdiAddTsRspCb;
15859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15860
15861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015862 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 -------------------------------------------------------------------------*/
15864 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15865 ( NULL == pEventData->pEventData))
15866 {
15867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015868 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 }
15872
15873 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15874
15875 /*-------------------------------------------------------------------------
15876 Extract response and send it to UMAC
15877 -------------------------------------------------------------------------*/
15878 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015879 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015880
15881 /*Notify UMAC*/
15882 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15883
Jeff Johnsone7245742012-09-05 17:12:55 -070015884 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015885}/*WDI_ProcessAddTSpecRsp*/
15886
15887
15888/**
15889 @brief Process Del TSpec Rsp function (called when a response
15890 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015891
15892 @param pWDICtx: pointer to the WLAN DAL context
15893 pEventData: pointer to the event information structure
15894
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 @see
15896 @return Result of the function call
15897*/
15898WDI_Status
15899WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015900(
Jeff Johnson295189b2012-06-20 16:38:30 -070015901 WDI_ControlBlockType* pWDICtx,
15902 WDI_EventInfoType* pEventData
15903)
15904{
15905 WDI_Status wdiStatus;
15906 eHalStatus halStatus;
15907 WDI_DelTsRspCb wdiDelTsRspCb;
15908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15909
15910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 -------------------------------------------------------------------------*/
15913 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15914 ( NULL == pEventData->pEventData))
15915 {
15916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015917 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 }
15921
15922 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15923
15924 /*-------------------------------------------------------------------------
15925 Extract response and send it to UMAC
15926 -------------------------------------------------------------------------*/
15927 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015928 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015929
15930 /*Notify UMAC*/
15931 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15932
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015934}/*WDI_ProcessDelTSpecRsp*/
15935
15936/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015939
15940 @param pWDICtx: pointer to the WLAN DAL context
15941 pEventData: pointer to the event information structure
15942
Jeff Johnson295189b2012-06-20 16:38:30 -070015943 @see
15944 @return Result of the function call
15945*/
15946WDI_Status
15947WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015948(
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 WDI_ControlBlockType* pWDICtx,
15950 WDI_EventInfoType* pEventData
15951)
15952{
15953 WDI_Status wdiStatus;
15954 eHalStatus halStatus;
15955 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15957
15958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015959 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015960 -------------------------------------------------------------------------*/
15961 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15962 ( NULL == pEventData->pEventData))
15963 {
15964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015968 }
15969
15970 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15971
15972 /*-------------------------------------------------------------------------
15973 Extract response and send it to UMAC
15974 -------------------------------------------------------------------------*/
15975 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015976 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015977
15978 /*Notify UMAC*/
15979 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15980
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015982}/*WDI_ProcessUpdateEDCAParamsRsp*/
15983
15984
15985/**
15986 @brief Process Add BA Rsp function (called when a response
15987 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015988
15989 @param pWDICtx: pointer to the WLAN DAL context
15990 pEventData: pointer to the event information structure
15991
Jeff Johnson295189b2012-06-20 16:38:30 -070015992 @see
15993 @return Result of the function call
15994*/
15995WDI_Status
15996WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015997(
Jeff Johnson295189b2012-06-20 16:38:30 -070015998 WDI_ControlBlockType* pWDICtx,
15999 WDI_EventInfoType* pEventData
16000)
16001{
16002 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16003
16004 tAddBASessionRspParams halBASessionRsp;
16005 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16006
Jeff Johnsone7245742012-09-05 17:12:55 -070016007
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16009
16010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016012 -------------------------------------------------------------------------*/
16013 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16014 ( NULL == pEventData->pEventData))
16015 {
16016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016020 }
16021
16022 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16023
16024 /*-------------------------------------------------------------------------
16025 Extract response and send it to UMAC
16026 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 wpalMemoryCopy( &halBASessionRsp,
16028 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016029 sizeof(halBASessionRsp));
16030
16031 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16032
Jeff Johnson43971f52012-07-17 12:26:56 -070016033 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 {
16035 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16036 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16037 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16038 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16039 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16040 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16041 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16042 }
16043
16044 /*Notify UMAC*/
16045 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16046
Jeff Johnsone7245742012-09-05 17:12:55 -070016047 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016048}/*WDI_ProcessAddSessionBARsp*/
16049
16050
16051/**
16052 @brief Process Del BA Rsp function (called when a response
16053 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016054
16055 @param pWDICtx: pointer to the WLAN DAL context
16056 pEventData: pointer to the event information structure
16057
Jeff Johnson295189b2012-06-20 16:38:30 -070016058 @see
16059 @return Result of the function call
16060*/
16061WDI_Status
16062WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016063(
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 WDI_ControlBlockType* pWDICtx,
16065 WDI_EventInfoType* pEventData
16066)
16067{
16068 WDI_Status wdiStatus;
16069 eHalStatus halStatus;
16070 WDI_DelBARspCb wdiDelBARspCb;
16071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16072
16073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016074 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016075 -------------------------------------------------------------------------*/
16076 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16077 ( NULL == pEventData->pEventData))
16078 {
16079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016080 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 }
16084
16085 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16086
16087 /*-------------------------------------------------------------------------
16088 Extract response and send it to UMAC
16089 -------------------------------------------------------------------------*/
16090 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016091 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016092
16093 if ( eHAL_STATUS_SUCCESS == halStatus )
16094 {
16095 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16096 }
16097
16098 /*Notify UMAC*/
16099 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16100
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016102}/*WDI_ProcessDelBARsp*/
16103
16104#ifdef FEATURE_WLAN_CCX
16105/**
16106 @brief Process TSM Stats Rsp function (called when a response
16107 is being received over the bus from HAL)
16108
16109 @param pWDICtx: pointer to the WLAN DAL context
16110 pEventData: pointer to the event information structure
16111
16112 @see
16113 @return Result of the function call
16114*/
16115WDI_Status
16116WDI_ProcessTsmStatsRsp
16117(
16118 WDI_ControlBlockType* pWDICtx,
16119 WDI_EventInfoType* pEventData
16120)
16121{
16122 WDI_TsmRspCb wdiTsmStatsRspCb;
16123 tTsmStatsRspMsg halTsmStatsRspMsg;
16124 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16126
16127 /*-------------------------------------------------------------------------
16128 Sanity check
16129 -------------------------------------------------------------------------*/
16130 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16131 ( NULL == pEventData->pEventData))
16132 {
16133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016135 WDI_ASSERT(0);
16136 return WDI_STATUS_E_FAILURE;
16137 }
16138
16139 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16140
16141 /*-------------------------------------------------------------------------
16142 Unpack HAL Response Message - the header was already extracted by the
16143 main Response Handling procedure
16144 -------------------------------------------------------------------------*/
16145 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16146 pEventData->pEventData,
16147 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16148
16149 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16150 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16151 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16152 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16153 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16154 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16155 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16156 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16157 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16158 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16159 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16160 halTsmStatsRspMsg.tsmStatsRspParams.status);
16161
16162 /*Notify UMAC*/
16163 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16164
16165 return WDI_STATUS_SUCCESS;
16166}/*WDI_ProcessTsmStatsRsp*/
16167
16168#endif
16169
16170
16171
16172/**
16173 @brief Process Flush AC Rsp function (called when a response
16174 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016175
16176 @param pWDICtx: pointer to the WLAN DAL context
16177 pEventData: pointer to the event information structure
16178
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 @see
16180 @return Result of the function call
16181*/
16182WDI_Status
16183WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016184(
Jeff Johnson295189b2012-06-20 16:38:30 -070016185 WDI_ControlBlockType* pWDICtx,
16186 WDI_EventInfoType* pEventData
16187)
16188{
16189 WDI_Status wdiStatus;
16190 eHalStatus halStatus;
16191 WDI_FlushAcRspCb wdiFlushAcRspCb;
16192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16193
16194 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016196 -------------------------------------------------------------------------*/
16197 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16198 ( NULL == pEventData->pEventData))
16199 {
16200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 }
16205
16206 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16207
16208 /*-------------------------------------------------------------------------
16209 Extract response and send it to UMAC
16210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 wpalMemoryCopy( &halStatus,
16212 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016213 sizeof(halStatus));
16214
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016216
16217 /*Notify UMAC*/
16218 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16219
Jeff Johnsone7245742012-09-05 17:12:55 -070016220 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016221}/*WDI_ProcessFlushAcRsp*/
16222
16223/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016224 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016226
16227 @param pWDICtx: pointer to the WLAN DAL context
16228 pEventData: pointer to the event information structure
16229
Jeff Johnson295189b2012-06-20 16:38:30 -070016230 @see
16231 @return Result of the function call
16232*/
16233WDI_Status
16234WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016235(
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 WDI_ControlBlockType* pWDICtx,
16237 WDI_EventInfoType* pEventData
16238)
16239{
16240 WDI_Status wdiStatus;
16241 eHalStatus halStatus;
16242 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16244
16245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016247 -------------------------------------------------------------------------*/
16248 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16249 ( NULL == pEventData->pEventData))
16250 {
16251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016252 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016255 }
16256
16257 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16258
16259 /*-------------------------------------------------------------------------
16260 Extract response and send it to UMAC
16261 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 wpalMemoryCopy( &halStatus,
16263 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016264 sizeof(halStatus));
16265
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016267
16268 /*Notify UMAC*/
16269 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16270
Jeff Johnsone7245742012-09-05 17:12:55 -070016271 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016272}/*WDI_ProcessBtAmpEventRsp*/
16273
16274
16275/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016277 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016278
16279 @param pWDICtx: pointer to the WLAN DAL context
16280 pEventData: pointer to the event information structure
16281
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 @see
16283 @return Result of the function call
16284*/
16285WDI_Status
16286WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016287(
Jeff Johnson295189b2012-06-20 16:38:30 -070016288 WDI_ControlBlockType* pWDICtx,
16289 WDI_EventInfoType* pEventData
16290)
16291{
16292 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16293 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16294 tAddStaSelfRspMsg halAddStaSelfRsp;
16295 WDI_AddStaParams wdiAddSTAParam = {0};
16296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16297
16298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 -------------------------------------------------------------------------*/
16301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16302 ( NULL == pEventData->pEventData))
16303 {
16304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016308 }
16309
Jeff Johnsone7245742012-09-05 17:12:55 -070016310 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016311 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16312
16313 /*-------------------------------------------------------------------------
16314 Extract response and send it to UMAC
16315 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016316 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16317 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016318 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16319
16320
Jeff Johnsone7245742012-09-05 17:12:55 -070016321 wdiAddSTASelfParams.wdiStatus =
16322 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016323
Jeff Johnsone7245742012-09-05 17:12:55 -070016324 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016325 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016326 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016327 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016328 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016329 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16330
16331 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16332 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16333 WDI_MAC_ADDR_LEN);
16334
16335
16336#ifdef HAL_SELF_STA_PER_BSS
16337
16338 /* At this point add the self-STA */
16339
16340 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16341 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16342 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16343
16344 //all DPU indices are the same for self STA
16345
16346 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016347 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16349 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16350 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16351 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16352 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16353
16354 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16355 WDI_MAC_ADDR_LEN);
16356
16357 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16358 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16359
Jeff Johnsone7245742012-09-05 17:12:55 -070016360 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016361 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16362 {
16363 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16364 }
16365#endif
16366
16367 /*Notify UMAC*/
16368 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16369
Jeff Johnsone7245742012-09-05 17:12:55 -070016370 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016371}/*WDI_ProcessAddSTASelfRsp*/
16372
16373
16374
16375/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016376 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016377 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016378
16379 @param pWDICtx: pointer to the WLAN DAL context
16380 pEventData: pointer to the event information structure
16381
Jeff Johnson295189b2012-06-20 16:38:30 -070016382 @see
16383 @return Result of the function call
16384*/
16385WDI_Status
16386WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016387(
Jeff Johnson295189b2012-06-20 16:38:30 -070016388 WDI_ControlBlockType* pWDICtx,
16389 WDI_EventInfoType* pEventData
16390)
16391{
16392 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16393 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16394 tDelStaSelfRspParams delStaSelfRspParams;
16395 wpt_uint8 ucStaIdx;
16396
16397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16398
16399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016400 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016401 -------------------------------------------------------------------------*/
16402 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16403 ( NULL == pEventData->pEventData))
16404 {
16405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016406 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 }
16410
16411 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16412
16413 /*-------------------------------------------------------------------------
16414 Extract response and send it to UMAC
16415 -------------------------------------------------------------------------*/
16416
Jeff Johnsone7245742012-09-05 17:12:55 -070016417 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016418 (wpt_uint8*)pEventData->pEventData,
16419 sizeof(tDelStaSelfRspParams));
16420
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 wdiDelStaSelfRspParams.wdiStatus =
16422 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016423
Jeff Johnsone7245742012-09-05 17:12:55 -070016424 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016425 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16426 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16427 {
16428 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 delStaSelfRspParams.selfMacAddr,
16431 &ucStaIdx);
16432 if(WDI_STATUS_E_FAILURE == wdiStatus)
16433 {
16434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016435 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016438 }
16439 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16440 }
16441
16442 /*Notify UMAC*/
16443 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16444
16445 return WDI_STATUS_SUCCESS;
16446}
16447
Jeff Johnsone7245742012-09-05 17:12:55 -070016448#ifdef FEATURE_OEM_DATA_SUPPORT
16449/**
16450 @brief Start Oem Data Rsp function (called when a
16451 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016452
Jeff Johnsone7245742012-09-05 17:12:55 -070016453 @param pWDICtx: pointer to the WLAN DAL context
16454 pEventData: pointer to the event information structure
16455
16456 @see
16457 @return Result of the function call
16458*/
16459#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16460
16461WDI_Status
16462WDI_ProcessStartOemDataRsp
16463(
16464 WDI_ControlBlockType* pWDICtx,
16465 WDI_EventInfoType* pEventData
16466)
16467{
16468 WDI_oemDataRspCb wdiOemDataRspCb;
16469 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16470 tStartOemDataRspParams* halStartOemDataRspParams;
16471
16472 /*-------------------------------------------------------------------------
16473 Sanity check
16474 -------------------------------------------------------------------------*/
16475 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16476 ( NULL == pEventData->pEventData))
16477 {
16478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016479 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016480 WDI_ASSERT(0);
16481 return WDI_STATUS_E_FAILURE;
16482 }
16483
16484 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16485
16486 /*-------------------------------------------------------------------------
16487 Extract response and send it to UMAC
16488 -------------------------------------------------------------------------*/
16489 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16490
16491
16492 //It is the responsibility of the application code to check for failure
16493 //conditions!
16494
16495 //Allocate memory for WDI OEM DATA RSP structure
16496 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16497
16498 if(NULL == wdiOemDataRspParams)
16499 {
16500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16501 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16502 pWDICtx, pEventData, pEventData->pEventData);
16503 WDI_ASSERT(0);
16504 return WDI_STATUS_E_FAILURE;
16505 }
16506
16507 /* Populate WDI structure members */
16508 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16509
16510 /*Notify UMAC*/
16511 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16512
16513 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16514 wpalMemoryFree(wdiOemDataRspParams);
16515
16516 return WDI_STATUS_SUCCESS;
16517}/*WDI_PrcoessStartOemDataRsp*/
16518#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016519
16520/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016521 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016522===========================================================================*/
16523
16524/**
16525 @brief Process Channel Switch Rsp function (called when a response
16526 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016527
16528 @param pWDICtx: pointer to the WLAN DAL context
16529 pEventData: pointer to the event information structure
16530
Jeff Johnson295189b2012-06-20 16:38:30 -070016531 @see
16532 @return Result of the function call
16533*/
16534WDI_Status
16535WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016536(
Jeff Johnson295189b2012-06-20 16:38:30 -070016537 WDI_ControlBlockType* pWDICtx,
16538 WDI_EventInfoType* pEventData
16539)
16540{
16541 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16542 WDI_SwitchChRspCb wdiChSwitchRspCb;
16543 tSwitchChannelRspParams halSwitchChannelRsp;
16544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16545
16546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016547 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016548 -------------------------------------------------------------------------*/
16549 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16550 ( NULL == pEventData->pEventData))
16551 {
16552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016553 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016556 }
16557
16558 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16559
16560 /*-------------------------------------------------------------------------
16561 Extract response and send it to UMAC
16562 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016563 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016564 (wpt_uint8*)pEventData->pEventData,
16565 sizeof(halSwitchChannelRsp));
16566
Jeff Johnsone7245742012-09-05 17:12:55 -070016567 wdiSwitchChRsp.wdiStatus =
16568 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16570
16571#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016572 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016573#endif
16574
16575 /*Notify UMAC*/
16576 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16577
Jeff Johnsone7245742012-09-05 17:12:55 -070016578 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016579}/*WDI_ProcessChannelSwitchRsp*/
16580
16581
16582/**
16583 @brief Process Config STA Rsp function (called when a response
16584 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016585
16586 @param pWDICtx: pointer to the WLAN DAL context
16587 pEventData: pointer to the event information structure
16588
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 @see
16590 @return Result of the function call
16591*/
16592WDI_Status
16593WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016594(
Jeff Johnson295189b2012-06-20 16:38:30 -070016595 WDI_ControlBlockType* pWDICtx,
16596 WDI_EventInfoType* pEventData
16597)
16598{
16599 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16600 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16601 WDI_AddStaParams wdiAddSTAParam;
16602
16603 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016604 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016605
Jeff Johnsone7245742012-09-05 17:12:55 -070016606 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16608
16609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 -------------------------------------------------------------------------*/
16612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16613 ( NULL == pEventData->pEventData))
16614 {
16615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 }
16620
16621 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16622
16623 /*-------------------------------------------------------------------------
16624 Extract response and send it to UMAC
16625 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016626 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16627 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 sizeof(halConfigStaRsp.configStaRspParams));
16629
16630
16631 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16632 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16633 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16634 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16635 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16636
16637 /* MAC Address of STA - take from cache as it does not come back in the
16638 response*/
16639 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016640 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016642
16643 wdiCfgSTAParams.wdiStatus =
16644 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016645
16646 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16647 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16648 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16649
16650 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16651 {
16652 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16653 {
16654 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016656 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16657 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016658
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 wdiAddSTAParam.ucHTCapable =
16663 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16664 wdiAddSTAParam.ucStaType =
16665 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16666
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016668 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16669 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016671
16672 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16673 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16674 WDI_MAC_ADDR_LEN);
16675
16676 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16677 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16678 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016679
16680 if ( NULL == pBSSSes )
16681 {
16682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16683 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016684
Jeff Johnson295189b2012-06-20 16:38:30 -070016685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016686 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016687 }
16688
16689 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016690 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016691 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016696 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016697 halConfigStaRsp.configStaRspParams.ucBcastSig;
16698 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16699 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016700
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16702 }
16703 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16704 {
16705 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16706
Jeff Johnsone7245742012-09-05 17:12:55 -070016707 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016708 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016709 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016710 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016711 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016712 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016713 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016714 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016715 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016717 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016718 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016719 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 halConfigStaRsp.configStaRspParams.ucUcastSig;
16721 }
16722 }
16723
16724 /*Notify UMAC*/
16725 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16726
Jeff Johnsone7245742012-09-05 17:12:55 -070016727 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016728}/*WDI_ProcessConfigStaRsp*/
16729
16730
16731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016732 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016733 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016734
16735 @param pWDICtx: pointer to the WLAN DAL context
16736 pEventData: pointer to the event information structure
16737
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 @see
16739 @return Result of the function call
16740*/
16741WDI_Status
16742WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016743(
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 WDI_ControlBlockType* pWDICtx,
16745 WDI_EventInfoType* pEventData
16746)
16747{
16748 WDI_Status wdiStatus;
16749 eHalStatus halStatus;
16750 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16751
16752 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016753 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16755
16756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 -------------------------------------------------------------------------*/
16759 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16760 ( NULL == pEventData->pEventData))
16761 {
16762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 }
16767
16768 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16769
16770 wpalMutexAcquire(&pWDICtx->wptMutex);
16771
16772 /*If the link is being transitioned to idle - the BSS is to be deleted
16773 - this type of ending a session is possible when UMAC has failed an
16774 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016775 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016776 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16777 {
16778 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016779 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016781 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16782 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16783 &pBSSSes);
16784
Jeff Johnson295189b2012-06-20 16:38:30 -070016785 /*-----------------------------------------------------------------------
16786 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016787 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016788 -----------------------------------------------------------------------*/
16789 if ( NULL == pBSSSes )
16790 {
16791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16792 "Set link response received outside association session");
16793 }
16794 else
16795 {
16796 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16797 will be del BSS coming after this to stop the beaconing & cleaning up the
16798 sessions*/
16799 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16800 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16801 {
16802 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016803 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016804 -----------------------------------------------------------------------*/
16805 WDI_DeleteSession(pWDICtx, pBSSSes);
16806
16807 /*-----------------------------------------------------------------------
16808 Check to see if this association is in progress - if so disable the
16809 flag as this has ended
16810 -----------------------------------------------------------------------*/
16811 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016812 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016813 /*Association no longer in progress */
16814 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16815 /*Association no longer in progress - prepare pending assoc for processing*/
16816 WDI_DequeueAssocRequest(pWDICtx);
16817 }
16818 }
16819 }
16820 }
16821 /* If the link state has been set to POST ASSOC, reset the "association in
16822 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016823 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16825 {
16826 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16827 WDI_DequeueAssocRequest(pWDICtx);
16828 }
16829
16830 wpalMutexRelease(&pWDICtx->wptMutex);
16831
16832 /*-------------------------------------------------------------------------
16833 Extract response and send it to UMAC
16834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 wpalMemoryCopy( &halStatus,
16836 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016837 sizeof(halStatus));
16838
Jeff Johnsone7245742012-09-05 17:12:55 -070016839 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016840
16841 /*Notify UMAC*/
16842 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16843
Jeff Johnsone7245742012-09-05 17:12:55 -070016844 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016845}/*WDI_ProcessSetLinkStateRsp*/
16846
16847/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016848 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016849 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016850
16851 @param pWDICtx: pointer to the WLAN DAL context
16852 pEventData: pointer to the event information structure
16853
Jeff Johnson295189b2012-06-20 16:38:30 -070016854 @see
16855 @return Result of the function call
16856*/
16857WDI_Status
16858WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016859(
Jeff Johnson295189b2012-06-20 16:38:30 -070016860 WDI_ControlBlockType* pWDICtx,
16861 WDI_EventInfoType* pEventData
16862)
16863{
16864 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16865 WDI_GetStatsRspCb wdiGetStatsRspCb;
16866 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016867
Jeff Johnson295189b2012-06-20 16:38:30 -070016868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16869
16870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 -------------------------------------------------------------------------*/
16873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16874 ( NULL == pEventData->pEventData))
16875 {
16876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 }
16881
16882 /*-------------------------------------------------------------------------
16883 Extract response and send it to UMAC
16884 -------------------------------------------------------------------------*/
16885 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16886
16887 /*allocate the stats response buffer */
16888 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16889 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16890 + sizeof(WDI_GetStatsRspParamsType));
16891
16892 if(NULL == wdiGetStatsRsp)
16893 {
16894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16895 "Failed to allocate memory in Get Stats Response %x %x %x ",
16896 pWDICtx, pEventData, pEventData->pEventData);
16897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 }
16900
16901 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16902
16903 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16904 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16905 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16906 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16907 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16908 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16909
16910 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16911 wpalMemoryCopy(wdiGetStatsRsp + 1,
16912 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16913 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16914
16915 /*Notify UMAC*/
16916 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16917
16918 wpalMemoryFree(wdiGetStatsRsp);
16919
Jeff Johnsone7245742012-09-05 17:12:55 -070016920 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016921}/*WDI_ProcessGetStatsRsp*/
16922
Srinivas Girigowda2471d832013-01-25 13:33:11 -080016923#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
16924/**
16925 @brief Process Get Roam Rssi Rsp function (called when a response is
16926 being received over the bus from HAL)
16927
16928 @param pWDICtx: pointer to the WLAN DAL context
16929 pEventData: pointer to the event information structure
16930
16931 @see
16932 @return Result of the function call
16933*/
16934WDI_Status
16935WDI_ProcessGetRoamRssiRsp
16936(
16937 WDI_ControlBlockType* pWDICtx,
16938 WDI_EventInfoType* pEventData
16939)
16940{
16941 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
16942 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
16943 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
16944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16945
16946 /*-------------------------------------------------------------------------
16947 Sanity check
16948 -------------------------------------------------------------------------*/
16949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16950 ( NULL == pEventData->pEventData))
16951 {
16952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16953 "%s: Invalid parameters", __func__);
16954 WDI_ASSERT(0);
16955 return WDI_STATUS_E_FAILURE;
16956 }
16957
16958 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
16959 if(NULL == wdiGetRoamRssiRspCb)
16960 {
16961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16962 "%s: call back function is NULL", __func__);
16963 WDI_ASSERT(0);
16964 return WDI_STATUS_E_FAILURE;
16965 }
16966
16967 /*-------------------------------------------------------------------------
16968 Extract response and send it to UMAC
16969 -------------------------------------------------------------------------*/
16970 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
16971 pEventData->pEventData,
16972 sizeof(halRoamRssiRspParams.roamRssiRspParams));
16973
16974 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
16975 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
16976 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
16977
16978 /*Notify UMAC*/
16979 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
16980
16981 return WDI_STATUS_SUCCESS;
16982}/*WDI_ProcessGetRoamRssiRsp*/
16983#endif
16984
Jeff Johnson295189b2012-06-20 16:38:30 -070016985
16986/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016987 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016989
16990 @param pWDICtx: pointer to the WLAN DAL context
16991 pEventData: pointer to the event information structure
16992
Jeff Johnson295189b2012-06-20 16:38:30 -070016993 @see
16994 @return Result of the function call
16995*/
16996WDI_Status
16997WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016998(
Jeff Johnson295189b2012-06-20 16:38:30 -070016999 WDI_ControlBlockType* pWDICtx,
17000 WDI_EventInfoType* pEventData
17001)
17002{
17003 WDI_Status wdiStatus;
17004 eHalStatus halStatus;
17005 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17007
17008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017010 -------------------------------------------------------------------------*/
17011 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17012 ( NULL == pEventData->pEventData))
17013 {
17014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017018 }
17019
17020 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17021
17022 /*-------------------------------------------------------------------------
17023 Extract response and send it to UMAC
17024 -------------------------------------------------------------------------*/
17025 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017026 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017027
17028 /*Notify UMAC*/
17029 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17030
Jeff Johnsone7245742012-09-05 17:12:55 -070017031 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017032}/*WDI_ProcessUpdateCfgRsp*/
17033
17034
17035
17036/**
17037 @brief Process Add BA Rsp function (called when a response
17038 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017039
17040 @param pWDICtx: pointer to the WLAN DAL context
17041 pEventData: pointer to the event information structure
17042
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 @see
17044 @return Result of the function call
17045*/
17046WDI_Status
17047WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017048(
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 WDI_ControlBlockType* pWDICtx,
17050 WDI_EventInfoType* pEventData
17051)
17052{
17053 WDI_AddBARspCb wdiAddBARspCb;
17054
17055 tAddBARspParams halAddBARsp;
17056 WDI_AddBARspinfoType wdiAddBARsp;
17057
17058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17059
17060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017062 -------------------------------------------------------------------------*/
17063 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17064 ( NULL == pEventData->pEventData))
17065 {
17066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 }
17071
17072 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17073
17074 /*-------------------------------------------------------------------------
17075 Extract response and send it to UMAC
17076 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017077 wpalMemoryCopy( &halAddBARsp,
17078 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017079 sizeof(halAddBARsp));
17080
17081 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17082
Jeff Johnson43971f52012-07-17 12:26:56 -070017083 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 {
17085 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17086 }
17087
17088 /*Notify UMAC*/
17089 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17090
Jeff Johnsone7245742012-09-05 17:12:55 -070017091 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017092}/*WDI_ProcessAddSessionBARsp*/
17093
17094/**
17095 @brief Process Add BA Rsp function (called when a response
17096 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017097
17098 @param pWDICtx: pointer to the WLAN DAL context
17099 pEventData: pointer to the event information structure
17100
Jeff Johnson295189b2012-06-20 16:38:30 -070017101 @see
17102 @return Result of the function call
17103*/
17104WDI_Status
17105WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017106(
Jeff Johnson295189b2012-06-20 16:38:30 -070017107 WDI_ControlBlockType* pWDICtx,
17108 WDI_EventInfoType* pEventData
17109)
17110{
17111 WDI_TriggerBARspCb wdiTriggerBARspCb;
17112
17113 tTriggerBARspParams* halTriggerBARsp;
17114 tTriggerBaRspCandidate* halBaCandidate;
17115 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17116 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17117 wpt_uint16 index;
17118 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017119 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17121
17122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017123 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017124 -------------------------------------------------------------------------*/
17125 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17126 ( NULL == pEventData->pEventData))
17127 {
17128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017129 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 }
17133
17134 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17135
17136 /*-------------------------------------------------------------------------
17137 Extract response and send it to UMAC
17138 -------------------------------------------------------------------------*/
17139 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17140
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017141 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17142
17143 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17144 {
17145 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017146 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017147 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017148
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017149 if(NULL == wdiTriggerBARsp)
17150 {
17151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17152 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17153 pWDICtx, pEventData, pEventData->pEventData);
17154 WDI_ASSERT(0);
17155 return WDI_STATUS_E_FAILURE;
17156 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017157
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017158 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17159
Jeff Johnson295189b2012-06-20 16:38:30 -070017160 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017161 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017162 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17163
17164 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17165 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17166
17167 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17168 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017169 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017170 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17171 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17172 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017173 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017174 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017175 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017176 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17177 }
17178 wdiTriggerBARspCandidate++;
17179 halBaCandidate++;
17180 }
17181 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017182 else
17183 {
17184 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17185
17186 if(NULL == wdiTriggerBARsp)
17187 {
17188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17189 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17190 pWDICtx, pEventData, pEventData->pEventData);
17191 WDI_ASSERT(0);
17192 return WDI_STATUS_E_FAILURE;
17193 }
17194
17195 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17196
17197 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017198
17199 /*Notify UMAC*/
17200 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17201
17202 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017204}/*WDI_ProcessAddSessionBARsp*/
17205
17206/**
17207 @brief Process Update Beacon Params Rsp function (called when a response
17208 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017209
17210 @param pWDICtx: pointer to the WLAN DAL context
17211 pEventData: pointer to the event information structure
17212
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 @see
17214 @return Result of the function call
17215*/
17216WDI_Status
17217WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017218(
Jeff Johnson295189b2012-06-20 16:38:30 -070017219 WDI_ControlBlockType* pWDICtx,
17220 WDI_EventInfoType* pEventData
17221)
17222{
17223 WDI_Status wdiStatus;
17224 eHalStatus halStatus;
17225 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17227
17228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017229 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017230 -------------------------------------------------------------------------*/
17231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17232 ( NULL == pEventData->pEventData))
17233 {
17234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017238 }
17239
17240 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17241
17242 /*-------------------------------------------------------------------------
17243 Extract response and send it to UMAC
17244 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017245 wpalMemoryCopy( &halStatus,
17246 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017247 sizeof(halStatus));
17248
Jeff Johnsone7245742012-09-05 17:12:55 -070017249 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017250
17251 /*Notify UMAC*/
17252 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17253
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017255}/*WDI_ProcessUpdateBeaconParamsRsp*/
17256
17257/**
17258 @brief Process Send Beacon template Rsp function (called when a response
17259 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017260
17261 @param pWDICtx: pointer to the WLAN DAL context
17262 pEventData: pointer to the event information structure
17263
Jeff Johnson295189b2012-06-20 16:38:30 -070017264 @see
17265 @return Result of the function call
17266*/
17267WDI_Status
17268WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017269(
Jeff Johnson295189b2012-06-20 16:38:30 -070017270 WDI_ControlBlockType* pWDICtx,
17271 WDI_EventInfoType* pEventData
17272)
17273{
17274 WDI_Status wdiStatus;
17275 eHalStatus halStatus;
17276 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17278
17279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017280 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017281 -------------------------------------------------------------------------*/
17282 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17283 ( NULL == pEventData->pEventData))
17284 {
17285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017286 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017289 }
17290
17291 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17292
17293 /*-------------------------------------------------------------------------
17294 Extract response and send it to UMAC
17295 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017296 wpalMemoryCopy( &halStatus,
17297 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017298 sizeof(halStatus));
17299
Jeff Johnsone7245742012-09-05 17:12:55 -070017300 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017301
17302 /*Notify UMAC*/
17303 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17304
Jeff Johnsone7245742012-09-05 17:12:55 -070017305 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017306}/*WDI_ProcessSendBeaconParamsRsp*/
17307
Jeff Johnsone7245742012-09-05 17:12:55 -070017308
Jeff Johnson295189b2012-06-20 16:38:30 -070017309/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017310 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017311 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017312
17313 @param pWDICtx: pointer to the WLAN DAL context
17314 pEventData: pointer to the event information structure
17315
Jeff Johnson295189b2012-06-20 16:38:30 -070017316 @see
17317 @return Result of the function call
17318*/
17319WDI_Status
17320WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017321(
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 WDI_ControlBlockType* pWDICtx,
17323 WDI_EventInfoType* pEventData
17324)
17325{
17326 WDI_Status wdiStatus;
17327 eHalStatus halStatus;
17328 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17330
17331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017332 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017333 -------------------------------------------------------------------------*/
17334 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17335 ( NULL == pEventData->pEventData))
17336 {
17337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017338 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017339 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017340 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017341 }
17342
17343 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17344
17345 /*-------------------------------------------------------------------------
17346 Extract response and send it to UMAC
17347 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017348 wpalMemoryCopy( &halStatus,
17349 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017350 sizeof(halStatus));
17351
Jeff Johnsone7245742012-09-05 17:12:55 -070017352 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017353
17354 /*Notify UMAC*/
17355 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17356
Jeff Johnsone7245742012-09-05 17:12:55 -070017357 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017358}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17359
17360 /**
17361 @brief Process Set Max Tx Power Rsp function (called when a response
17362 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017363
17364 @param pWDICtx: pointer to the WLAN DAL context
17365 pEventData: pointer to the event information structure
17366
Jeff Johnson295189b2012-06-20 16:38:30 -070017367 @see
17368 @return Result of the function call
17369*/
17370WDI_Status
17371WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017372(
Jeff Johnson295189b2012-06-20 16:38:30 -070017373 WDI_ControlBlockType* pWDICtx,
17374 WDI_EventInfoType* pEventData
17375)
17376{
17377 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017378
Jeff Johnson295189b2012-06-20 16:38:30 -070017379 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017380
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17383
17384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 -------------------------------------------------------------------------*/
17387 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17388 ( NULL == pEventData->pEventData))
17389 {
17390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017391 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017394 }
17395
17396 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17397
17398 /*-------------------------------------------------------------------------
17399 Extract response and send it to UMAC
17400 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017401 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17402 pEventData->pEventData,
17403 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017404
17405 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17406 {
17407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17408 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017409 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017411 }
17412
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017414 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017416
17417 /*Notify UMAC*/
17418 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17419
Jeff Johnsone7245742012-09-05 17:12:55 -070017420 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017421}
17422
schangd82195a2013-03-13 18:41:24 -070017423 /**
17424 @brief Process Set Tx Power Rsp function (called when a response
17425 is being received over the bus from HAL)
17426
17427 @param pWDICtx: pointer to the WLAN DAL context
17428 pEventData: pointer to the event information structure
17429
17430 @see
17431 @return Result of the function call
17432*/
17433WDI_Status
17434WDI_ProcessSetTxPowerRsp
17435(
17436 WDI_ControlBlockType* pWDICtx,
17437 WDI_EventInfoType* pEventData
17438)
17439{
17440 tSetTxPwrRspMsg halTxpowerrsp;
17441 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17442 WDA_SetTxPowerRspCb wdiReqStatusCb;
17443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17444
17445 /*-------------------------------------------------------------------------
17446 Sanity check
17447 -------------------------------------------------------------------------*/
17448 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17449 ( NULL == pEventData->pEventData))
17450 {
17451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17452 "%s: Invalid parameters", __func__);
17453 WDI_ASSERT(0);
17454 return WDI_STATUS_E_FAILURE;
17455 }
17456
17457 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17458
17459 /*-------------------------------------------------------------------------
17460 Extract response and send it to UMAC
17461 -------------------------------------------------------------------------*/
17462 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17463 pEventData->pEventData,
17464 sizeof(halTxpowerrsp.setTxPwrRspParams));
17465
17466 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17467 {
17468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17469 "Error status returned in Set Tx Power Response ");
17470 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17471 return WDI_STATUS_E_FAILURE;
17472 }
17473
17474 wdiSetTxPowerRspMsg.wdiStatus =
17475 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17476
17477 /*Notify UMAC*/
17478 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17479
17480 return WDI_STATUS_SUCCESS;
17481}
17482
Jeff Johnson295189b2012-06-20 16:38:30 -070017483/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017484 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017486
17487 @param pWDICtx: pointer to the WLAN DAL context
17488 pEventData: pointer to the event information structure
17489
Jeff Johnson295189b2012-06-20 16:38:30 -070017490 @see
17491 @return Result of the function call
17492*/
17493WDI_Status
17494WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017495(
Jeff Johnson295189b2012-06-20 16:38:30 -070017496 WDI_ControlBlockType* pWDICtx,
17497 WDI_EventInfoType* pEventData
17498)
17499{
17500 WDI_Status wdiStatus;
17501 eHalStatus halStatus;
17502 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17504
17505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017507 -------------------------------------------------------------------------*/
17508 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17509 ( NULL == pEventData->pEventData))
17510 {
17511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017515 }
17516
17517 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17518
17519 /*-------------------------------------------------------------------------
17520 Extract response and send it to UMAC
17521 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 wpalMemoryCopy( &halStatus,
17523 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017524 sizeof(halStatus));
17525
Jeff Johnsone7245742012-09-05 17:12:55 -070017526 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017527
17528 /*Notify UMAC*/
17529 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17530
Jeff Johnsone7245742012-09-05 17:12:55 -070017531 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017532}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017533/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017534 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017536
17537 @param pWDICtx: pointer to the WLAN DAL context
17538 pEventData: pointer to the event information structure
17539
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 @see
17541 @return Result of the function call
17542*/
17543WDI_Status
17544WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017545(
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 WDI_ControlBlockType* pWDICtx,
17547 WDI_EventInfoType* pEventData
17548)
17549{
17550 WDI_Status wdiStatus;
17551 eHalStatus halStatus;
17552 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017553 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17555
17556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017557 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 -------------------------------------------------------------------------*/
17559 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17560 ( NULL == pEventData->pEventData))
17561 {
17562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017563 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017565 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017566 }
17567
17568 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17569
17570 /*-------------------------------------------------------------------------
17571 Extract response and send it to UMAC
17572 -------------------------------------------------------------------------*/
17573 halStatus = *((eHalStatus*)pEventData->pEventData);
17574
Jeff Johnsone7245742012-09-05 17:12:55 -070017575 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017576
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017577 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17578 * Other module states are taken care by PMC.
17579 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17580 */
17581 if (wdiStatus != WDI_STATUS_SUCCESS) {
17582
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17584 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17585 halStatus);
17586 /* Call Back is not required as we are putting the DXE in FULL
17587 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017588 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17589
17590 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17592 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17593 WDI_ASSERT(0);
17594 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017595 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 /*Notify UMAC*/
17597 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17598
Jeff Johnsone7245742012-09-05 17:12:55 -070017599 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017600}/*WDI_ProcessEnterImpsRsp*/
17601
17602/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017603 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017604 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017605
17606 @param pWDICtx: pointer to the WLAN DAL context
17607 pEventData: pointer to the event information structure
17608
Jeff Johnson295189b2012-06-20 16:38:30 -070017609 @see
17610 @return Result of the function call
17611*/
17612WDI_Status
17613WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017614(
Jeff Johnson295189b2012-06-20 16:38:30 -070017615 WDI_ControlBlockType* pWDICtx,
17616 WDI_EventInfoType* pEventData
17617)
17618{
17619 WDI_Status wdiStatus;
17620 eHalStatus halStatus;
17621 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017622 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17624
17625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017626 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017627 -------------------------------------------------------------------------*/
17628 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17629 ( NULL == pEventData->pEventData))
17630 {
17631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 }
17636
17637 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17638
17639 /*-------------------------------------------------------------------------
17640 Extract response and send it to UMAC
17641 -------------------------------------------------------------------------*/
17642 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017643 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017644
17645 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017646 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17647 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17648 {
17649 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17650 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17651 WDI_ASSERT(0);
17652 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017653 /*Notify UMAC*/
17654 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17655
Jeff Johnsone7245742012-09-05 17:12:55 -070017656 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017657}/*WDI_ProcessExitImpsRsp*/
17658
17659/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017660 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017661 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017662
17663 @param pWDICtx: pointer to the WLAN DAL context
17664 pEventData: pointer to the event information structure
17665
Jeff Johnson295189b2012-06-20 16:38:30 -070017666 @see
17667 @return Result of the function call
17668*/
17669WDI_Status
17670WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017671(
Jeff Johnson295189b2012-06-20 16:38:30 -070017672 WDI_ControlBlockType* pWDICtx,
17673 WDI_EventInfoType* pEventData
17674)
17675{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017676 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17677 tHalEnterBmpsRspParams halEnterBmpsRsp;
17678 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17679 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017680 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17682
17683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017684 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017685 -------------------------------------------------------------------------*/
17686 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17687 ( NULL == pEventData->pEventData))
17688 {
17689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017690 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017693 }
17694
Jeff Johnson295189b2012-06-20 16:38:30 -070017695 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017696 Extract response and send it to UMAC
17697 -------------------------------------------------------------------------*/
17698 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17699 {
17700 wpalMemoryCopy( &halEnterBmpsRsp,
17701 pEventData->pEventData,
17702 sizeof(halEnterBmpsRsp));
17703
17704 //Used to print debug message
17705 halStatus = halEnterBmpsRsp.status;
17706 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17707 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17708 }
17709 else
17710 {
17711 halStatus = *((eHalStatus*)pEventData->pEventData);
17712 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17713 }
17714
17715 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017716
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017717 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17718 * Other module states are taken care by PMC.
17719 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17720 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017721 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17722 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017723
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017725 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17726 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017727 /* Call Back is not required as we are putting the DXE in FULL
17728 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017729 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17730 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17731 {
17732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17733 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17734 WDI_ASSERT(0);
17735 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017736 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017737 }
17738
Jeff Johnson295189b2012-06-20 16:38:30 -070017739 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017740 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017741
Jeff Johnsone7245742012-09-05 17:12:55 -070017742 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017743}/*WDI_ProcessEnterBmpsRsp*/
17744
17745/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017746 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017747 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017748
17749 @param pWDICtx: pointer to the WLAN DAL context
17750 pEventData: pointer to the event information structure
17751
Jeff Johnson295189b2012-06-20 16:38:30 -070017752 @see
17753 @return Result of the function call
17754*/
17755WDI_Status
17756WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017757(
Jeff Johnson295189b2012-06-20 16:38:30 -070017758 WDI_ControlBlockType* pWDICtx,
17759 WDI_EventInfoType* pEventData
17760)
17761{
Jeff Johnson295189b2012-06-20 16:38:30 -070017762 eHalStatus halStatus;
17763 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017764 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017765 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17766 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17768
17769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017771 -------------------------------------------------------------------------*/
17772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17773 ( NULL == pEventData->pEventData))
17774 {
17775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 }
17780
17781 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17782
17783 /*-------------------------------------------------------------------------
17784 Extract response and send it to UMAC
17785 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017786
17787 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17788 {
17789 wpalMemoryCopy( &halExitBmpsRsp,
17790 pEventData->pEventData,
17791 sizeof(halExitBmpsRsp));
17792
17793 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17794 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17795 }
17796 else
17797 {
17798 halStatus = *((eHalStatus*)pEventData->pEventData);
17799 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17800 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017801
17802 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017803 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17804 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17805 {
17806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17807 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17808 WDI_ASSERT(0);
17809 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017810 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17811
17812 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017813 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017814
Jeff Johnsone7245742012-09-05 17:12:55 -070017815 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017816}/*WDI_ProcessExitBmpsRsp*/
17817
17818/**
17819 @brief Process Enter UAPSD Rsp function (called when a response
17820 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017821
17822 @param pWDICtx: pointer to the WLAN DAL context
17823 pEventData: pointer to the event information structure
17824
Jeff Johnson295189b2012-06-20 16:38:30 -070017825 @see
17826 @return Result of the function call
17827*/
17828WDI_Status
17829WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017830(
Jeff Johnson295189b2012-06-20 16:38:30 -070017831 WDI_ControlBlockType* pWDICtx,
17832 WDI_EventInfoType* pEventData
17833)
17834{
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017836 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017837 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017838 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17839
Jeff Johnson295189b2012-06-20 16:38:30 -070017840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17841
17842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017844 -------------------------------------------------------------------------*/
17845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17846 ( NULL == pEventData->pEventData))
17847 {
17848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017852 }
17853
17854 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17855
17856 /*-------------------------------------------------------------------------
17857 Extract response and send it to UMAC
17858 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017859 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17860 {
17861 wpalMemoryCopy( &halEnterUapsdRsp,
17862 pEventData->pEventData,
17863 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017864
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017865 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17866 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17867 }
17868 else
17869 {
17870 halStatus = *((eHalStatus*)pEventData->pEventData);
17871 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17872 }
17873
17874 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 {
17876 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17877 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17878 // the traffic to decide when to suspend the trigger frames when there is no traffic
17879 // activity on the trigger enabled ACs
17880 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17881
17882#ifdef WLAN_PERF
17883 // Increment the BD signature to refresh the fast path BD utilization
17884 pWDICtx->uBdSigSerialNum++;
17885#endif
17886 }
17887
17888 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017889 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017890
Jeff Johnsone7245742012-09-05 17:12:55 -070017891 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017892}/*WDI_ProcessEnterUapsdRsp*/
17893
17894/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017895 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017896 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017897
17898 @param pWDICtx: pointer to the WLAN DAL context
17899 pEventData: pointer to the event information structure
17900
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 @see
17902 @return Result of the function call
17903*/
17904WDI_Status
17905WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017906(
Jeff Johnson295189b2012-06-20 16:38:30 -070017907 WDI_ControlBlockType* pWDICtx,
17908 WDI_EventInfoType* pEventData
17909)
17910{
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 eHalStatus halStatus;
17912 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017913 tHalExitUapsdRspParams halExitUapsdRsp;
17914 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17916
17917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017919 -------------------------------------------------------------------------*/
17920 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17921 ( NULL == pEventData->pEventData))
17922 {
17923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017927 }
17928
17929 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17930
17931 /*-------------------------------------------------------------------------
17932 Extract response and send it to UMAC
17933 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017934 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17935 {
17936 wpalMemoryCopy( &halExitUapsdRsp,
17937 pEventData->pEventData,
17938 sizeof(halExitUapsdRsp));
17939
17940 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17941 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17942 }
17943 else
17944 {
17945 halStatus = *((eHalStatus*)pEventData->pEventData);
17946 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17947 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017948 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17949 // directly instead of the FW WQ.
17950 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17951
17952#ifdef WLAN_PERF
17953 // Increment the BD signature to refresh the fast path BD utilization
17954 pWDICtx->uBdSigSerialNum++;
17955#endif
17956
17957 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017958 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017959
Jeff Johnsone7245742012-09-05 17:12:55 -070017960 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017961}/*WDI_ProcessExitUapsdRsp*/
17962
17963/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017964 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017965 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017966
17967 @param pWDICtx: pointer to the WLAN DAL context
17968 pEventData: pointer to the event information structure
17969
Jeff Johnson295189b2012-06-20 16:38:30 -070017970 @see
17971 @return Result of the function call
17972*/
17973WDI_Status
17974WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017975(
Jeff Johnson295189b2012-06-20 16:38:30 -070017976 WDI_ControlBlockType* pWDICtx,
17977 WDI_EventInfoType* pEventData
17978)
17979{
17980 WDI_Status wdiStatus;
17981 eHalStatus halStatus;
17982 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17984
17985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017987 -------------------------------------------------------------------------*/
17988 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17989 ( NULL == pEventData->pEventData))
17990 {
17991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 }
17996
17997 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17998
17999 /*-------------------------------------------------------------------------
18000 Extract response and send it to UMAC
18001 -------------------------------------------------------------------------*/
18002 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018003 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018004
18005 /*Notify UMAC*/
18006 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18007
Jeff Johnsone7245742012-09-05 17:12:55 -070018008 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018009}/*WDI_ProcessSetUapsdAcParamsRsp*/
18010
18011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018012 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018014
18015 @param pWDICtx: pointer to the WLAN DAL context
18016 pEventData: pointer to the event information structure
18017
Jeff Johnson295189b2012-06-20 16:38:30 -070018018 @see
18019 @return Result of the function call
18020*/
18021WDI_Status
18022WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018023(
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 WDI_ControlBlockType* pWDICtx,
18025 WDI_EventInfoType* pEventData
18026)
18027{
18028 WDI_Status wdiStatus;
18029 eHalStatus halStatus;
18030 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18032
18033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018035 -------------------------------------------------------------------------*/
18036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18037 ( NULL == pEventData->pEventData))
18038 {
18039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 }
18044
18045 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18046
18047 /*-------------------------------------------------------------------------
18048 Extract response and send it to UMAC
18049 -------------------------------------------------------------------------*/
18050 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018051 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018052
18053 /*Notify UMAC*/
18054 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18055
Jeff Johnsone7245742012-09-05 17:12:55 -070018056 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018057}/*WDI_ProcessUpdateUapsdParamsRsp*/
18058
18059/**
18060 @brief Process Configure RXP filter Rsp function (called when a
18061 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018062
18063 @param pWDICtx: pointer to the WLAN DAL context
18064 pEventData: pointer to the event information structure
18065
Jeff Johnson295189b2012-06-20 16:38:30 -070018066 @see
18067 @return Result of the function call
18068*/
18069WDI_Status
18070WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018071(
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 WDI_ControlBlockType* pWDICtx,
18073 WDI_EventInfoType* pEventData
18074)
18075{
18076 WDI_Status wdiStatus;
18077 eHalStatus halStatus;
18078 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18080
18081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018083 -------------------------------------------------------------------------*/
18084 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18085 ( NULL == pEventData->pEventData))
18086 {
18087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 }
18092
18093 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18094
18095 /*-------------------------------------------------------------------------
18096 Extract response and send it to UMAC
18097 -------------------------------------------------------------------------*/
18098 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018099 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018100
18101 /*Notify UMAC*/
18102 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18103
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018105}/*WDI_ProcessConfigureRxpFilterRsp*/
18106
18107/**
18108 @brief Process Set beacon filter Rsp function (called when a
18109 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018110
18111 @param pWDICtx: pointer to the WLAN DAL context
18112 pEventData: pointer to the event information structure
18113
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 @see
18115 @return Result of the function call
18116*/
18117WDI_Status
18118WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018119(
Jeff Johnson295189b2012-06-20 16:38:30 -070018120 WDI_ControlBlockType* pWDICtx,
18121 WDI_EventInfoType* pEventData
18122)
18123{
18124 WDI_Status wdiStatus;
18125 eHalStatus halStatus;
18126 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18128
18129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018131 -------------------------------------------------------------------------*/
18132 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18133 ( NULL == pEventData->pEventData))
18134 {
18135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018137 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018139 }
18140
18141 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18142
18143 /*-------------------------------------------------------------------------
18144 Extract response and send it to UMAC
18145 -------------------------------------------------------------------------*/
18146 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018147 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018148
18149 /*Notify UMAC*/
18150 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18151
Jeff Johnsone7245742012-09-05 17:12:55 -070018152 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018153}/*WDI_ProcessSetBeaconFilterRsp*/
18154
18155/**
18156 @brief Process remove beacon filter Rsp function (called when a
18157 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018158
18159 @param pWDICtx: pointer to the WLAN DAL context
18160 pEventData: pointer to the event information structure
18161
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 @see
18163 @return Result of the function call
18164*/
18165WDI_Status
18166WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018167(
Jeff Johnson295189b2012-06-20 16:38:30 -070018168 WDI_ControlBlockType* pWDICtx,
18169 WDI_EventInfoType* pEventData
18170)
18171{
18172 WDI_Status wdiStatus;
18173 eHalStatus halStatus;
18174 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18176
18177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018179 -------------------------------------------------------------------------*/
18180 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18181 ( NULL == pEventData->pEventData))
18182 {
18183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018184 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018187 }
18188
18189 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18190
18191 /*-------------------------------------------------------------------------
18192 Extract response and send it to UMAC
18193 -------------------------------------------------------------------------*/
18194 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018195 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018196
18197 /*Notify UMAC*/
18198 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18199
Jeff Johnsone7245742012-09-05 17:12:55 -070018200 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018201}/*WDI_ProcessRemBeaconFilterRsp*/
18202
18203/**
18204 @brief Process set RSSI thresholds Rsp function (called when a
18205 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018206
18207 @param pWDICtx: pointer to the WLAN DAL context
18208 pEventData: pointer to the event information structure
18209
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 @see
18211 @return Result of the function call
18212*/
18213WDI_Status
18214WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018215(
Jeff Johnson295189b2012-06-20 16:38:30 -070018216 WDI_ControlBlockType* pWDICtx,
18217 WDI_EventInfoType* pEventData
18218)
18219{
18220 WDI_Status wdiStatus;
18221 eHalStatus halStatus;
18222 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18224
18225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018226 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018227 -------------------------------------------------------------------------*/
18228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18229 ( NULL == pEventData->pEventData))
18230 {
18231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 }
18236
18237 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18238
18239 /*-------------------------------------------------------------------------
18240 Extract response and send it to UMAC
18241 -------------------------------------------------------------------------*/
18242 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018243 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018244
18245 /*Notify UMAC*/
18246 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18247
Jeff Johnsone7245742012-09-05 17:12:55 -070018248 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018249}/*WDI_ProcessSetRSSIThresoldsRsp*/
18250
18251/**
18252 @brief Process host offload Rsp function (called when a
18253 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018254
18255 @param pWDICtx: pointer to the WLAN DAL context
18256 pEventData: pointer to the event information structure
18257
Jeff Johnson295189b2012-06-20 16:38:30 -070018258 @see
18259 @return Result of the function call
18260*/
18261WDI_Status
18262WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018263(
Jeff Johnson295189b2012-06-20 16:38:30 -070018264 WDI_ControlBlockType* pWDICtx,
18265 WDI_EventInfoType* pEventData
18266)
18267{
18268 WDI_Status wdiStatus;
18269 eHalStatus halStatus;
18270 WDI_HostOffloadCb wdiHostOffloadCb;
18271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18272
18273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018275 -------------------------------------------------------------------------*/
18276 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18277 ( NULL == pEventData->pEventData))
18278 {
18279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018283 }
18284
18285 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18286
18287 /*-------------------------------------------------------------------------
18288 Extract response and send it to UMAC
18289 -------------------------------------------------------------------------*/
18290 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018291 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018292
18293 /*Notify UMAC*/
18294 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18295
Jeff Johnsone7245742012-09-05 17:12:55 -070018296 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018297}/*WDI_ProcessHostOffloadRsp*/
18298
18299/**
18300 @brief Process keep alive Rsp function (called when a
18301 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018302
18303 @param pWDICtx: pointer to the WLAN DAL context
18304 pEventData: pointer to the event information structure
18305
Jeff Johnson295189b2012-06-20 16:38:30 -070018306 @see
18307 @return Result of the function call
18308*/
18309WDI_Status
18310WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018311(
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 WDI_ControlBlockType* pWDICtx,
18313 WDI_EventInfoType* pEventData
18314)
18315{
18316 WDI_Status wdiStatus;
18317 eHalStatus halStatus;
18318 WDI_KeepAliveCb wdiKeepAliveCb;
18319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18321 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18322
18323
18324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018325 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018326 -------------------------------------------------------------------------*/
18327 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18328 ( NULL == pEventData->pEventData))
18329 {
18330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018334 }
18335
Jeff Johnsone7245742012-09-05 17:12:55 -070018336 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18337
Jeff Johnson295189b2012-06-20 16:38:30 -070018338 /*-------------------------------------------------------------------------
18339 Extract response and send it to UMAC
18340 -------------------------------------------------------------------------*/
18341 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018342 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018343
18344 /*Notify UMAC*/
18345 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18346
Jeff Johnsone7245742012-09-05 17:12:55 -070018347 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018348}/*WDI_ProcessKeepAliveRsp*/
18349
18350/**
18351 @brief Process wowl add ptrn Rsp function (called when a
18352 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018353
18354 @param pWDICtx: pointer to the WLAN DAL context
18355 pEventData: pointer to the event information structure
18356
Jeff Johnson295189b2012-06-20 16:38:30 -070018357 @see
18358 @return Result of the function call
18359*/
18360WDI_Status
18361WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018362(
Jeff Johnson295189b2012-06-20 16:38:30 -070018363 WDI_ControlBlockType* pWDICtx,
18364 WDI_EventInfoType* pEventData
18365)
18366{
Jeff Johnson295189b2012-06-20 16:38:30 -070018367 eHalStatus halStatus;
18368 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018369 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18370 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18371
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18373
18374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018376 -------------------------------------------------------------------------*/
18377 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18378 ( NULL == pEventData->pEventData))
18379 {
18380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018384 }
18385
18386 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18387
18388 /*-------------------------------------------------------------------------
18389 Extract response and send it to UMAC
18390 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018391 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18392 {
18393 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18394 pEventData->pEventData,
18395 sizeof(halAddWowlBcastPtrRsp));
18396
18397 wdiWowlAddBcPtrRsp.wdiStatus =
18398 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18399 }
18400 else
18401 {
18402 halStatus = *((eHalStatus*)pEventData->pEventData);
18403 wdiWowlAddBcPtrRsp.wdiStatus =
18404 WDI_HAL_2_WDI_STATUS(halStatus);
18405 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018406
18407 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018408 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018409
Jeff Johnsone7245742012-09-05 17:12:55 -070018410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018411}/*WDI_ProcessWowlAddBcPtrnRsp*/
18412
18413/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018414 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018415 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018416
18417 @param pWDICtx: pointer to the WLAN DAL context
18418 pEventData: pointer to the event information structure
18419
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 @see
18421 @return Result of the function call
18422*/
18423WDI_Status
18424WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018425(
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 WDI_ControlBlockType* pWDICtx,
18427 WDI_EventInfoType* pEventData
18428)
18429{
Jeff Johnson295189b2012-06-20 16:38:30 -070018430 eHalStatus halStatus;
18431 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018432 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18433 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18435
18436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018438 -------------------------------------------------------------------------*/
18439 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18440 ( NULL == pEventData->pEventData))
18441 {
18442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018446 }
18447
18448 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18449
18450 /*-------------------------------------------------------------------------
18451 Extract response and send it to UMAC
18452 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018453 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18454 {
18455 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18456 pEventData->pEventData,
18457 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018458
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018459 wdiWowlDelBcstPtrRsp.wdiStatus =
18460 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18461 }
18462 else
18463 {
18464 halStatus = *((eHalStatus*)pEventData->pEventData);
18465 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18466 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018468 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018469
Jeff Johnsone7245742012-09-05 17:12:55 -070018470 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018471}/*WDI_ProcessWowlDelBcPtrnRsp*/
18472
18473/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018474 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018475 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018476
18477 @param pWDICtx: pointer to the WLAN DAL context
18478 pEventData: pointer to the event information structure
18479
Jeff Johnson295189b2012-06-20 16:38:30 -070018480 @see
18481 @return Result of the function call
18482*/
18483WDI_Status
18484WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018485(
Jeff Johnson295189b2012-06-20 16:38:30 -070018486 WDI_ControlBlockType* pWDICtx,
18487 WDI_EventInfoType* pEventData
18488)
18489{
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 eHalStatus halStatus;
18491 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018492 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18493 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18495
18496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018498 -------------------------------------------------------------------------*/
18499 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18500 ( NULL == pEventData->pEventData))
18501 {
18502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018506 }
18507
18508 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18509
18510 /*-------------------------------------------------------------------------
18511 Extract response and send it to UMAC
18512 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018513 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18514 {
18515 wpalMemoryCopy( &halEnterWowlRspParams,
18516 (wpt_uint8*)pEventData->pEventData,
18517 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018518
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018519 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18520 wdiwowlEnterRsp.status =
18521 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18522 }
18523 else
18524 {
18525 halStatus = *((eHalStatus*)pEventData->pEventData);
18526 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18527 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018528 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018529 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018530
Jeff Johnsone7245742012-09-05 17:12:55 -070018531 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018532}/*WDI_ProcessWowlEnterRsp*/
18533
18534/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018535 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018536 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018537
18538 @param pWDICtx: pointer to the WLAN DAL context
18539 pEventData: pointer to the event information structure
18540
Jeff Johnson295189b2012-06-20 16:38:30 -070018541 @see
18542 @return Result of the function call
18543*/
18544WDI_Status
18545WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018546(
Jeff Johnson295189b2012-06-20 16:38:30 -070018547 WDI_ControlBlockType* pWDICtx,
18548 WDI_EventInfoType* pEventData
18549)
18550{
Jeff Johnson295189b2012-06-20 16:38:30 -070018551 eHalStatus halStatus;
18552 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018553 tHalExitWowlRspParams halExitWowlRspParams;
18554 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18555
Jeff Johnson295189b2012-06-20 16:38:30 -070018556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18557
18558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 -------------------------------------------------------------------------*/
18561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18562 ( NULL == pEventData->pEventData))
18563 {
18564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018568 }
18569
18570 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18571
18572 /*-------------------------------------------------------------------------
18573 Extract response and send it to UMAC
18574 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018575 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18576 {
18577 wpalMemoryCopy( &halExitWowlRspParams,
18578 pEventData->pEventData,
18579 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018580
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018581 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18582 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18583
18584 }
18585 else
18586 {
18587 halStatus = *((eHalStatus*)pEventData->pEventData);
18588 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18589 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018591 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018592
Jeff Johnsone7245742012-09-05 17:12:55 -070018593 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018594}/*WDI_ProcessWowlExitRsp*/
18595
18596/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018597 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018598 (called when a response is being received over the bus
18599 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018600
18601 @param pWDICtx: pointer to the WLAN DAL context
18602 pEventData: pointer to the event information structure
18603
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 @see
18605 @return Result of the function call
18606*/
18607WDI_Status
18608WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018609(
Jeff Johnson295189b2012-06-20 16:38:30 -070018610 WDI_ControlBlockType* pWDICtx,
18611 WDI_EventInfoType* pEventData
18612)
18613{
18614 WDI_Status wdiStatus;
18615 eHalStatus halStatus;
18616 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18618
18619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018620 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018621 -------------------------------------------------------------------------*/
18622 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18623 ( NULL == pEventData->pEventData))
18624 {
18625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 }
18630
18631 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18632
18633 /*-------------------------------------------------------------------------
18634 Extract response and send it to UMAC
18635 -------------------------------------------------------------------------*/
18636 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018637 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018638
18639 /*Notify UMAC*/
18640 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18641
Jeff Johnsone7245742012-09-05 17:12:55 -070018642 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018643}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18644
18645
18646/**
18647 @brief Process Nv download(called when a response
18648 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018649
18650 @param pWDICtx: pointer to the WLAN DAL context
18651 pEventData: pointer to the event information structure
18652
Jeff Johnson295189b2012-06-20 16:38:30 -070018653 @see
18654 @return Result of the function call
18655*/
18656WDI_Status
18657WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018658(
Jeff Johnson295189b2012-06-20 16:38:30 -070018659 WDI_ControlBlockType* pWDICtx,
18660 WDI_EventInfoType* pEventData
18661)
18662{
18663
18664 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18665 tHalNvImgDownloadRspParams halNvDownloadRsp;
18666 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18667
18668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018670 -------------------------------------------------------------------------*/
18671 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18672 ( NULL == pEventData->pEventData))
18673 {
18674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 }
18679
18680 /*-------------------------------------------------------------------------
18681 Extract response and send it to UMAC
18682 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018683 wpalMemoryCopy( &halNvDownloadRsp,
18684 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018685 sizeof(halNvDownloadRsp));
18686
18687 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18688
18689 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018690 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18691 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 {
18693 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018694 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 }
18696 else
18697 {
18698 /*Reset the Nv related global information in WDI context information */
18699 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18700 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18701 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18702 /*call WDA callback function for last fragment */
18703 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18704 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18705 }
18706
Jeff Johnsone7245742012-09-05 17:12:55 -070018707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018708}
18709#ifdef WLAN_FEATURE_VOWIFI_11R
18710/**
18711 @brief Process Add TSpec Rsp function (called when a response
18712 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018713
18714 @param pWDICtx: pointer to the WLAN DAL context
18715 pEventData: pointer to the event information structure
18716
Jeff Johnson295189b2012-06-20 16:38:30 -070018717 @see
18718 @return Result of the function call
18719*/
18720WDI_Status
18721WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018722(
Jeff Johnson295189b2012-06-20 16:38:30 -070018723 WDI_ControlBlockType* pWDICtx,
18724 WDI_EventInfoType* pEventData
18725)
18726{
18727 WDI_Status wdiStatus;
18728 tAggrAddTsRspParams aggrAddTsRsp;
18729 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18731
18732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018733 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018734 -------------------------------------------------------------------------*/
18735 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18736 ( NULL == pEventData->pEventData))
18737 {
18738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018742 }
18743
18744 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18745
18746 /*-------------------------------------------------------------------------
18747 Extract response and send it to UMAC
18748 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018749 wpalMemoryCopy( &aggrAddTsRsp,
18750 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018751 sizeof(aggrAddTsRsp));
18752
18753 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018754 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018755
18756 /*Notify UMAC*/
18757 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18758
Jeff Johnsone7245742012-09-05 17:12:55 -070018759 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018760}/*WDI_ProcessAddTSpecRsp*/
18761#endif /* WLAN_FEATURE_VOWIFI_11R */
18762
18763/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018764 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018765 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018766
18767 @param pWDICtx: pointer to the WLAN DAL context
18768 pEventData: pointer to the event information structure
18769
Jeff Johnson295189b2012-06-20 16:38:30 -070018770 @see
18771 @return Result of the function call
18772*/
18773WDI_Status
18774WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018775(
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 WDI_ControlBlockType* pWDICtx,
18777 WDI_EventInfoType* pEventData
18778)
18779{
18780 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18781 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18782 tHalHostResumeRspParams hostResumeRspMsg;
18783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18784
18785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018787 -------------------------------------------------------------------------*/
18788 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18789 ( NULL == pEventData->pEventData))
18790 {
18791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018795 }
18796
18797 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18798
18799 /*-------------------------------------------------------------------------
18800 Extract response and send it to UMAC
18801 -------------------------------------------------------------------------*/
18802
Jeff Johnsone7245742012-09-05 17:12:55 -070018803 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 (wpt_uint8*)pEventData->pEventData,
18805 sizeof(hostResumeRspMsg));
18806
Jeff Johnsone7245742012-09-05 17:12:55 -070018807 wdiResumeRspParams.wdiStatus =
18808 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018809
18810 /*Notify UMAC*/
18811 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18812
18813 return WDI_STATUS_SUCCESS;
18814}
18815
18816/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018817 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018819
18820 @param pWDICtx: pointer to the WLAN DAL context
18821 pEventData: pointer to the event information structure
18822
Jeff Johnson295189b2012-06-20 16:38:30 -070018823 @see
18824 @return Result of the function call
18825*/
18826WDI_Status
18827WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018828(
Jeff Johnson295189b2012-06-20 16:38:30 -070018829 WDI_ControlBlockType* pWDICtx,
18830 WDI_EventInfoType* pEventData
18831)
18832{
18833 WDI_Status wdiStatus;
18834 eHalStatus halStatus;
18835 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18837
18838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018840 -------------------------------------------------------------------------*/
18841 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18842 ( NULL == pEventData->pEventData))
18843 {
18844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018849
18850 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018851
18852 /*-------------------------------------------------------------------------
18853 Extract response and send it to UMAC
18854 -------------------------------------------------------------------------*/
18855 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018856 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018857
18858 /*Notify UMAC*/
18859 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18860
Jeff Johnsone7245742012-09-05 17:12:55 -070018861 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018862}/*WDI_ProcessSetTxPerTrackingRsp*/
18863
18864/*==========================================================================
18865 Indications from HAL
18866 ==========================================================================*/
18867/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018868 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018869 indication of this kind is being received over the bus
18870 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018871
18872 @param pWDICtx: pointer to the WLAN DAL context
18873 pEventData: pointer to the event information structure
18874
Jeff Johnson295189b2012-06-20 16:38:30 -070018875 @see
18876 @return Result of the function call
18877*/
18878WDI_Status
18879WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018880(
Jeff Johnson295189b2012-06-20 16:38:30 -070018881 WDI_ControlBlockType* pWDICtx,
18882 WDI_EventInfoType* pEventData
18883)
18884{
18885 WDI_LowLevelIndType wdiInd;
18886 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18888
18889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018890 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018891 -------------------------------------------------------------------------*/
18892 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18893 ( NULL == pEventData->pEventData))
18894 {
18895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018899 }
18900
18901 /*-------------------------------------------------------------------------
18902 Extract indication and send it to UMAC
18903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018904 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18905 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018906 sizeof(tHalRSSINotification));
18907
18908 /*Fill in the indication parameters*/
18909 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18910 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18911 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18912 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18913 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18914 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18915 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18916 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18917 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18918 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18919 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18920 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18921 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018922 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18923 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018924
ltimariu034f7d62013-01-24 18:54:33 -080018925 if ( pWDICtx->wdiLowLevelIndCB )
18926 {
18927 /*Notify UMAC of indication*/
18928 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18929 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018930
18931 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018932}/*WDI_ProcessLowRSSIInd*/
18933
18934
18935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018936 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018937 an indication of this kind is being received over the
18938 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018939
18940 @param pWDICtx: pointer to the WLAN DAL context
18941 pEventData: pointer to the event information structure
18942
Jeff Johnson295189b2012-06-20 16:38:30 -070018943 @see
18944 @return Result of the function call
18945*/
18946WDI_Status
18947WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018948(
Jeff Johnson295189b2012-06-20 16:38:30 -070018949 WDI_ControlBlockType* pWDICtx,
18950 WDI_EventInfoType* pEventData
18951)
18952{
18953 WDI_Status wdiStatus;
18954 eHalStatus halStatus;
18955 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018956 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18958
18959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 -------------------------------------------------------------------------*/
18962 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18963 ( NULL == pEventData->pEventData))
18964 {
18965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018969 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018970 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 /*-------------------------------------------------------------------------
18972 Extract indication and send it to UMAC
18973 -------------------------------------------------------------------------*/
18974 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18975 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018976 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018977
18978 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018979 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018980 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
18981 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080018982 if ( pWDICtx->wdiLowLevelIndCB )
18983 {
18984 /*Notify UMAC*/
18985 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18986 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018987
18988 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018989}/*WDI_ProcessMissedBeaconInd*/
18990
18991
18992/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018993 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018994 an indication of this kind is being received over the
18995 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018996
18997 @param pWDICtx: pointer to the WLAN DAL context
18998 pEventData: pointer to the event information structure
18999
Jeff Johnson295189b2012-06-20 16:38:30 -070019000 @see
19001 @return Result of the function call
19002*/
19003WDI_Status
19004WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019005(
Jeff Johnson295189b2012-06-20 16:38:30 -070019006 WDI_ControlBlockType* pWDICtx,
19007 WDI_EventInfoType* pEventData
19008)
19009{
19010 WDI_Status wdiStatus;
19011 eHalStatus halStatus;
19012 WDI_LowLevelIndType wdiInd;
19013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19014
19015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019016 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019017 -------------------------------------------------------------------------*/
19018 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19019 ( NULL == pEventData->pEventData))
19020 {
19021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019022 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019025 }
19026
19027 /*-------------------------------------------------------------------------
19028 Extract indication and send it to UMAC
19029 -------------------------------------------------------------------------*/
19030 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19031 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019032 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019033
19034 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019035 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019036 /* ! TO DO - fill in from HAL struct:
19037 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19038
ltimariu034f7d62013-01-24 18:54:33 -080019039 if ( pWDICtx->wdiLowLevelIndCB )
19040 {
19041 /*Notify UMAC*/
19042 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19043 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019044
19045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019046}/*WDI_ProcessUnkAddrFrameInd*/
19047
19048
19049/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019050 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019051 indication of this kind is being received over the bus
19052 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019053
19054 @param pWDICtx: pointer to the WLAN DAL context
19055 pEventData: pointer to the event information structure
19056
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 @see
19058 @return Result of the function call
19059*/
19060WDI_Status
19061WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019062(
Jeff Johnson295189b2012-06-20 16:38:30 -070019063 WDI_ControlBlockType* pWDICtx,
19064 WDI_EventInfoType* pEventData
19065)
19066{
19067 WDI_LowLevelIndType wdiInd;
19068 tpSirMicFailureInd pHalMicFailureInd;
19069
19070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19071
19072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019073 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 -------------------------------------------------------------------------*/
19075 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19076 ( NULL == pEventData->pEventData))
19077 {
19078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019083
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19085 /*-------------------------------------------------------------------------
19086 Extract indication and send it to UMAC
19087 -------------------------------------------------------------------------*/
19088
19089 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019090 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019091 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19092 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19093 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19094 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19095 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19096 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19097 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19098 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019099 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019100 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019101 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019103 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 pHalMicFailureInd->info.keyId;
19105 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19106 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19107 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19108 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019109
19110 if ( pWDICtx->wdiLowLevelIndCB )
19111 {
19112 /*Notify UMAC*/
19113 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19114 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019115
19116 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019117}/*WDI_ProcessMicFailureInd*/
19118
19119
19120/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019121 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 an indication of this kind is being received over the
19123 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019124
19125 @param pWDICtx: pointer to the WLAN DAL context
19126 pEventData: pointer to the event information structure
19127
Jeff Johnson295189b2012-06-20 16:38:30 -070019128 @see
19129 @return Result of the function call
19130*/
19131WDI_Status
19132WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019133(
Jeff Johnson295189b2012-06-20 16:38:30 -070019134 WDI_ControlBlockType* pWDICtx,
19135 WDI_EventInfoType* pEventData
19136)
19137{
19138 WDI_Status wdiStatus;
19139 eHalStatus halStatus;
19140 WDI_LowLevelIndType wdiInd;
19141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19142
19143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019145 -------------------------------------------------------------------------*/
19146 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19147 ( NULL == pEventData->pEventData))
19148 {
19149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019153 }
19154
19155 /*-------------------------------------------------------------------------
19156 Extract indication and send it to UMAC
19157 -------------------------------------------------------------------------*/
19158
19159 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19160 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019161 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019162
19163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19164 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019165
Jeff Johnson295189b2012-06-20 16:38:30 -070019166 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019167 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19168 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019169
ltimariu034f7d62013-01-24 18:54:33 -080019170 if ( pWDICtx->wdiLowLevelIndCB )
19171 {
19172 /*Notify UMAC*/
19173 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19174 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019175
19176 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019177}/*WDI_ProcessFatalErrorInd*/
19178
19179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019180 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019181 an indication of this kind is being received over the
19182 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019183
19184 @param pWDICtx: pointer to the WLAN DAL context
19185 pEventData: pointer to the event information structure
19186
Jeff Johnson295189b2012-06-20 16:38:30 -070019187 @see
19188 @return Result of the function call
19189*/
19190WDI_Status
19191WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019192(
Jeff Johnson295189b2012-06-20 16:38:30 -070019193 WDI_ControlBlockType* pWDICtx,
19194 WDI_EventInfoType* pEventData
19195)
19196{
19197 tDeleteStaContextParams halDelSTACtx;
19198 WDI_LowLevelIndType wdiInd;
19199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19200
19201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019202 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019203 -------------------------------------------------------------------------*/
19204 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19205 ( NULL == pEventData->pEventData))
19206 {
19207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019208 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019211 }
19212
19213 /*-------------------------------------------------------------------------
19214 Extract indication and send it to UMAC
19215 -------------------------------------------------------------------------*/
19216
19217 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 wpalMemoryCopy( &halDelSTACtx,
19219 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019220 sizeof(halDelSTACtx));
19221
19222 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019223 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019224
19225 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19226 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19227 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19228 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19229
Jeff Johnsone7245742012-09-05 17:12:55 -070019230 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019231 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19235 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019236
ltimariu034f7d62013-01-24 18:54:33 -080019237 if ( pWDICtx->wdiLowLevelIndCB )
19238 {
19239 /*Notify UMAC*/
19240 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19241 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019242
19243 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019244}/*WDI_ProcessDelSTAInd*/
19245
19246/**
19247*@brief Process Coex Indication function (called when
19248 an indication of this kind is being received over the
19249 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019250
19251 @param pWDICtx: pointer to the WLAN DAL context
19252 pEventData: pointer to the event information structure
19253
Jeff Johnson295189b2012-06-20 16:38:30 -070019254 @see
19255 @return Result of the function call
19256*/
19257WDI_Status
19258WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019259(
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 WDI_ControlBlockType* pWDICtx,
19261 WDI_EventInfoType* pEventData
19262)
19263{
19264 WDI_LowLevelIndType wdiInd;
19265 tCoexIndMsg halCoexIndMsg;
19266 wpt_uint32 index;
19267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19268
19269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019271 -------------------------------------------------------------------------*/
19272 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19273 ( NULL == pEventData->pEventData ))
19274 {
19275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019277 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019279 }
19280
19281 /*-------------------------------------------------------------------------
19282 Extract indication and send it to UMAC
19283 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019284 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19285 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019286 sizeof(halCoexIndMsg.coexIndParams) );
19287
19288 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019289 wdiInd.wdiIndicationType = WDI_COEX_IND;
19290 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019291 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19292 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019293 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019294 }
19295
19296 // DEBUG
19297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19298 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019299 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19300 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19301 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19302 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19303 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019304
ltimariu034f7d62013-01-24 18:54:33 -080019305 if ( pWDICtx->wdiLowLevelIndCB )
19306 {
19307 /*Notify UMAC*/
19308 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19309 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019310
19311 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019312}/*WDI_ProcessCoexInd*/
19313
19314/**
19315*@brief Process Tx Complete Indication function (called when
19316 an indication of this kind is being received over the
19317 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019318
19319 @param pWDICtx: pointer to the WLAN DAL context
19320 pEventData: pointer to the event information structure
19321
Jeff Johnson295189b2012-06-20 16:38:30 -070019322 @see
19323 @return Result of the function call
19324*/
19325WDI_Status
19326WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019327(
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 WDI_ControlBlockType* pWDICtx,
19329 WDI_EventInfoType* pEventData
19330)
19331{
19332 WDI_LowLevelIndType wdiInd;
19333 tTxComplIndMsg halTxComplIndMsg;
19334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19335
19336 /*-------------------------------------------------------------------------
19337 Sanity check
19338 -------------------------------------------------------------------------*/
19339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19340 ( NULL == pEventData->pEventData ))
19341 {
19342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019343 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019344 WDI_ASSERT( 0 );
19345 return WDI_STATUS_E_FAILURE;
19346 }
19347
19348 /*-------------------------------------------------------------------------
19349 Extract indication and send it to UMAC
19350 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019351 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19352 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019353 sizeof(halTxComplIndMsg.txComplParams) );
19354
19355 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019356 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19357 wdiInd.wdiIndicationData.tx_complete_status
19358 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019359
ltimariu034f7d62013-01-24 18:54:33 -080019360 if ( pWDICtx->wdiLowLevelIndCB )
19361 {
19362 /*Notify UMAC*/
19363 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19364 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019365
19366 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019367}/*WDI_ProcessTxCompleteInd*/
19368
Jeff Johnson295189b2012-06-20 16:38:30 -070019369/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019370*@brief Process Noa Start Indication function (called when
19371 an indication of this kind is being received over the
19372 bus from HAL)
19373
19374 @param pWDICtx: pointer to the WLAN DAL context
19375 pEventData: pointer to the event information structure
19376
19377 @see
19378 @return Result of the function call
19379*/
19380WDI_Status
19381WDI_ProcessP2pNoaStartInd
19382(
19383 WDI_ControlBlockType* pWDICtx,
19384 WDI_EventInfoType* pEventData
19385)
19386{
19387 WDI_LowLevelIndType wdiInd;
19388 tNoaStartIndMsg halNoaStartIndMsg;
19389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19390
19391 /*-------------------------------------------------------------------------
19392 Sanity check
19393 -------------------------------------------------------------------------*/
19394 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19395 ( NULL == pEventData->pEventData ))
19396 {
19397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19398 "%s: Invalid parameters", __func__);
19399 WDI_ASSERT( 0 );
19400 return WDI_STATUS_E_FAILURE;
19401 }
19402
19403 /*-------------------------------------------------------------------------
19404 Extract indication and send it to UMAC
19405 -------------------------------------------------------------------------*/
19406 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19407 pEventData->pEventData,
19408 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19409
19410 /*Fill in the indication parameters*/
19411 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19412
19413 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19414 = halNoaStartIndMsg.noaStartIndParams.status;
19415
19416 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19417 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19418
19419 /*Notify UMAC*/
19420 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19421
19422 return WDI_STATUS_SUCCESS;
19423}/*WDI_ProcessNoaAttrInd*/
19424
19425/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019426*@brief Process Noa Attr Indication function (called when
19427 an indication of this kind is being received over the
19428 bus from HAL)
19429
19430 @param pWDICtx: pointer to the WLAN DAL context
19431 pEventData: pointer to the event information structure
19432
19433 @see
19434 @return Result of the function call
19435*/
19436WDI_Status
19437WDI_ProcessP2pNoaAttrInd
19438(
19439 WDI_ControlBlockType* pWDICtx,
19440 WDI_EventInfoType* pEventData
19441)
19442{
19443 WDI_LowLevelIndType wdiInd;
19444 tNoaAttrIndMsg halNoaAttrIndMsg;
19445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19446
19447 /*-------------------------------------------------------------------------
19448 Sanity check
19449 -------------------------------------------------------------------------*/
19450 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19451 ( NULL == pEventData->pEventData ))
19452 {
19453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019455 WDI_ASSERT( 0 );
19456 return WDI_STATUS_E_FAILURE;
19457 }
19458
19459 /*-------------------------------------------------------------------------
19460 Extract indication and send it to UMAC
19461 -------------------------------------------------------------------------*/
19462 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19463 pEventData->pEventData,
19464 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19465
19466 /*Fill in the indication parameters*/
19467 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019468
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19470 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019471
Jeff Johnson295189b2012-06-20 16:38:30 -070019472 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19473 = halNoaAttrIndMsg.noaAttrIndParams.index;
19474 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19475 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19476 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19477 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019478
Jeff Johnson295189b2012-06-20 16:38:30 -070019479 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19480 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19481 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19482 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19483 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19484 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19485 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19486 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019487
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19489 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19490 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19491 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19492 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19493 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19494 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19495 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19496
ltimariu034f7d62013-01-24 18:54:33 -080019497 if ( pWDICtx->wdiLowLevelIndCB )
19498 {
19499 /*Notify UMAC*/
19500 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19501 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019502
19503 return WDI_STATUS_SUCCESS;
19504}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019505
19506/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019507 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019508 an indication of this kind is being received over the
19509 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019510
19511 @param pWDICtx: pointer to the WLAN DAL context
19512 pEventData: pointer to the event information structure
19513
Jeff Johnson295189b2012-06-20 16:38:30 -070019514 @see
19515 @return Result of the function call
19516*/
19517WDI_Status
19518WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019519(
Jeff Johnson295189b2012-06-20 16:38:30 -070019520 WDI_ControlBlockType* pWDICtx,
19521 WDI_EventInfoType* pEventData
19522)
19523{
19524 WDI_LowLevelIndType wdiInd;
19525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019526
Jeff Johnson295189b2012-06-20 16:38:30 -070019527 /*-------------------------------------------------------------------------
19528 Extract indication and send it to UMAC
19529 -------------------------------------------------------------------------*/
19530 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019531 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19532
ltimariu034f7d62013-01-24 18:54:33 -080019533 if ( pWDICtx->wdiLowLevelIndCB )
19534 {
19535 /*Notify UMAC*/
19536 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19537 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019538
Jeff Johnsone7245742012-09-05 17:12:55 -070019539 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019540}/*WDI_ProcessTxPerHitInd*/
19541
Jeff Johnson295189b2012-06-20 16:38:30 -070019542/**
19543 @brief WDI_ProcessFTMCommandReq
19544 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019545
19546 @param pWDICtx: pointer to the WLAN DAL context
19547 pEventData: pointer to the event information structure
19548
Jeff Johnson295189b2012-06-20 16:38:30 -070019549 @see
19550 @return Result of the function call
19551*/
19552WDI_Status
19553WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019554(
Jeff Johnson295189b2012-06-20 16:38:30 -070019555 WDI_ControlBlockType* pWDICtx,
19556 WDI_EventInfoType* pEventData
19557)
19558{
19559 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19560 wpt_uint8 *ftmCommandBuffer = NULL;
19561 wpt_uint16 dataOffset;
19562 wpt_uint16 bufferSize;
19563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019565 -------------------------------------------------------------------------*/
19566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19567 ( NULL == pEventData->pEventData))
19568
19569 {
19570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 }
19575
19576 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19577
19578 /* Get MSG Buffer */
19579 WDI_GetMessageBuffer(pWDICtx,
19580 WDI_FTM_CMD_REQ,
19581 ftmCommandReq->bodyLength,
19582 &ftmCommandBuffer,
19583 &dataOffset,
19584 &bufferSize);
19585
19586 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19587 ftmCommandReq->FTMCommandBody,
19588 ftmCommandReq->bodyLength);
19589
19590 /* Send MSG */
19591 return WDI_SendMsg(pWDICtx,
19592 ftmCommandBuffer,
19593 bufferSize,
19594 pEventData->pCBfnc,
19595 pEventData->pUserData,
19596 WDI_FTM_CMD_RESP);
19597}
19598
19599/**
19600 @brief WDI_ProcessFTMCommandRsp
19601 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019602
19603 @param pWDICtx: pointer to the WLAN DAL context
19604 pEventData: pointer to the event information structure
19605
Jeff Johnson295189b2012-06-20 16:38:30 -070019606 @see
19607 @return Result of the function call
19608*/
19609WDI_Status
19610WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019611(
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 WDI_ControlBlockType* pWDICtx,
19613 WDI_EventInfoType* pEventData
19614)
19615{
19616 WDI_FTMCommandRspCb ftmCMDRspCb;
19617 tProcessPttRspParams *ftmCMDRspData = NULL;
19618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19619
19620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019622 -------------------------------------------------------------------------*/
19623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19624 ( NULL == pEventData->pEventData))
19625 {
19626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019630 }
19631
19632 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19633
19634 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19635
Jeff Johnsone7245742012-09-05 17:12:55 -070019636 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19637 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019638 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19639
19640 /*Notify UMAC*/
19641 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19642
Jeff Johnsone7245742012-09-05 17:12:55 -070019643 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019644}
Jeff Johnson295189b2012-06-20 16:38:30 -070019645/**
19646 @brief WDI_ProcessHalDumpCmdReq
19647 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019648
19649 @param pWDICtx: pointer to the WLAN DAL context
19650 pEventData: pointer to the event information structure
19651
Jeff Johnson295189b2012-06-20 16:38:30 -070019652 @see
19653 @return Result of the function call
19654*/
19655WDI_Status
19656WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019657(
Jeff Johnson295189b2012-06-20 16:38:30 -070019658 WDI_ControlBlockType* pWDICtx,
19659 WDI_EventInfoType* pEventData
19660)
19661{
19662 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19663 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19664 wpt_uint16 usDataOffset = 0;
19665 wpt_uint16 usSendSize = 0;
19666 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019667 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019668
19669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019671 -------------------------------------------------------------------------*/
19672 if (( NULL == pEventData ) ||
19673 ( NULL == pEventData->pEventData) ||
19674 ( NULL == pEventData->pCBfnc ))
19675 {
19676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 }
19681
19682 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19683 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19684
19685 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019686 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019687 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019688 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019689 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019690 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019691 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019692 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019693 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019694 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019695 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019696
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 /*-----------------------------------------------------------------------
19698 Get message buffer
19699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19702 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019703 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019704 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19705 {
19706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19707 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19708 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019711 }
19712
Jeff Johnsone7245742012-09-05 17:12:55 -070019713 wpalMemoryCopy( pSendBuffer+usDataOffset,
19714 &halDumpCmdReqMsg.dumpCmdReqParams,
19715 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019716
19717 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019718 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019719
19720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019721 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019722 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019723 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19724 wdiHALDumpCmdRspCb, pEventData->pUserData,
19725 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019726}
19727
19728/**
19729 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019730 Process hal Dump Command Response from HAL, simply route to HDD
19731
19732 @param pWDICtx: pointer to the WLAN DAL context
19733 pEventData: pointer to the event information structure
19734
Jeff Johnson295189b2012-06-20 16:38:30 -070019735 @see
19736 @return Result of the function call
19737*/
19738WDI_Status
19739WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019740(
Jeff Johnson295189b2012-06-20 16:38:30 -070019741 WDI_ControlBlockType* pWDICtx,
19742 WDI_EventInfoType* pEventData
19743)
19744{
19745 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019746 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019747 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19748
19749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019750 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019751 -------------------------------------------------------------------------*/
19752 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19753 ( NULL == pEventData->pEventData))
19754 {
19755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019756 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019757 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019758 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 }
19760
Jeff Johnsone7245742012-09-05 17:12:55 -070019761 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019762
19763 /*Initialize the WDI Response structure */
19764 wdiHALDumpCmdRsp.usBufferLen = 0;
19765 wdiHALDumpCmdRsp.pBuffer = NULL;
19766
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019767 wpalMemoryCopy( &halDumpCmdRspParams,
19768 pEventData->pEventData,
19769 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019770
19771 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019772 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019773
19774 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019775 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019776 {
19777 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019778 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19779 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19780
19781 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19782 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053019783 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070019784 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019785
Jeff Johnson295189b2012-06-20 16:38:30 -070019786 /*Notify UMAC*/
19787 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19788
19789 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19790 {
19791 /* Free the allocated buffer */
19792 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19793 }
19794 return WDI_STATUS_SUCCESS;
19795}
19796
19797/*==========================================================================
19798 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019799
Jeff Johnson295189b2012-06-20 16:38:30 -070019800 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019801 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019802==========================================================================*/
19803/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019804 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019805 when it wishes to send up a notification like the ones
19806 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019807
Jeff Johnson295189b2012-06-20 16:38:30 -070019808 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019809
19810 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019811 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019812 wctsNotifyCBData: the callback data of the user
19813
Jeff Johnson295189b2012-06-20 16:38:30 -070019814 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019815
19816 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019817*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019818void
Jeff Johnson295189b2012-06-20 16:38:30 -070019819WDI_NotifyMsgCTSCB
19820(
Jeff Johnsone7245742012-09-05 17:12:55 -070019821 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019822 WCTS_NotifyEventType wctsEvent,
19823 void* wctsNotifyCBData
19824)
19825{
Jeff Johnsone7245742012-09-05 17:12:55 -070019826 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19828
19829 if (NULL == pWDICtx )
19830 {
19831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019834 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019835 }
19836
19837 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19838 {
19839 /* callback presumably occurred after close */
19840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019841 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019842 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019843 }
19844
19845 if ( WCTS_EVENT_OPEN == wctsEvent )
19846 {
19847 /*Flag must be set atomically as it is checked from incoming request
19848 functions*/
19849 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019850 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019851
19852 /*Nothing to do - so try to dequeue any pending request that may have
19853 occurred while we were trying to establish this*/
19854 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019855 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019856 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019857 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019858 {
19859 /*Flag must be set atomically as it is checked from incoming request
19860 functions*/
19861 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019862 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019863
19864 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019865 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019866 wpalMutexRelease(&pWDICtx->wptMutex);
19867
19868 /*Notify that the Control Channel is closed */
19869 wpalEventSet(&pWDICtx->wctsActionEvent);
19870 }
19871
19872}/*WDI_NotifyMsgCTSCB*/
19873
19874
19875/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019876 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019877 when it wishes to send up a packet received over the
19878 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019879
Jeff Johnson295189b2012-06-20 16:38:30 -070019880 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019881
19882 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019883 pMsg: the packet
19884 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019885 wctsRxMsgCBData: the callback data of the user
19886
Jeff Johnson295189b2012-06-20 16:38:30 -070019887 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019888
19889 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019890*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019891void
19892WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019893(
Jeff Johnsone7245742012-09-05 17:12:55 -070019894 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019895 void* pMsg,
19896 wpt_uint32 uLen,
19897 void* wctsRxMsgCBData
19898)
19899{
Jeff Johnsone7245742012-09-05 17:12:55 -070019900 tHalMsgHeader *pHalMsgHeader;
19901 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019902 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19904
19905 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019908 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019909 ( uLen < sizeof(tHalMsgHeader)))
19910 {
19911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019914 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 }
19916
19917 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19918 {
19919 /* callback presumably occurred after close */
19920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019921 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019922 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 }
19924
Jeff Johnsone7245742012-09-05 17:12:55 -070019925 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019926 context - so no serialization is necessary here
19927 ! - revisit this assumption */
19928
19929 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19930
19931 if ( uLen != pHalMsgHeader->msgLen )
19932 {
19933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19934 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019935 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19936 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 }
19938
19939 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19940
19941 /*The message itself starts after the header*/
19942 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19943 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19944 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19945 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19946
19947
19948 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19949 {
19950 /*Stop the timer as the response was received */
19951 /*!UT - check for potential race conditions between stop and response */
19952 wpalTimerStop(&pWDICtx->wptResponseTimer);
19953 }
19954 /* Check if we receive a response message which is not expected */
19955 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19956 {
19957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19958 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19959 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19962 pWDICtx->wdiExpectedResponse);
19963 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19964 return;
19965 }
19966
19967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19968 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19969
19970 /*Post response event to the state machine*/
19971 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19972
19973}/*WDI_RXMsgCTSCB*/
19974
19975
19976/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019977 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019978========================================================================*/
19979
19980/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019981 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019982 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019983
Jeff Johnson295189b2012-06-20 16:38:30 -070019984 @param pWDICtx - pointer to the control block
19985
19986 @return Result of the function call
19987*/
19988WPT_INLINE WDI_Status
19989WDI_CleanCB
19990(
19991 WDI_ControlBlockType* pWDICtx
19992)
19993{
19994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19995
19996 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019997 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019998
Jeff Johnsone7245742012-09-05 17:12:55 -070019999 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020000 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20001 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20002
20003 WDI_ResetAssocSessions( pWDICtx );
20004
20005 return WDI_STATUS_SUCCESS;
20006}/*WDI_CleanCB*/
20007
20008
20009/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020010 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020011
Jeff Johnsone7245742012-09-05 17:12:55 -070020012
20013 @param pWDICtx: pointer to the WLAN DAL context
20014 pEventData: pointer to the event information structure
20015
Jeff Johnson295189b2012-06-20 16:38:30 -070020016 @see
20017 @return Result of the function call
20018*/
20019WPT_INLINE WDI_Status
20020WDI_ProcessRequest
20021(
20022 WDI_ControlBlockType* pWDICtx,
20023 WDI_EventInfoType* pEventData
20024)
20025{
20026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20027
Jeff Johnsone7245742012-09-05 17:12:55 -070020028 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020029 already checked these pointers*/
20030
20031 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20032 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020033 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20035 "Calling request processing function for req %s (%d) %x",
20036 WDI_getReqMsgString(pEventData->wdiRequest),
20037 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20038 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20039 }
20040 else
20041 {
20042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020043 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020044 pEventData->wdiRequest);
20045 return WDI_STATUS_E_NOT_IMPLEMENT;
20046 }
20047}/*WDI_ProcessRequest*/
20048
20049
20050/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020051 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020052 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 prefixes it with a send message header
20054
20055 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020056 wdiReqType: type of the request being sent
20057 uBufferLen: message buffer len
20058 pMsgBuffer: resulting allocated buffer
20059 pusDataOffset: offset in the buffer where the caller
20060 can start copying its message data
20061 puBufferSize: the resulting buffer size (offset+buff
20062 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020063
Jeff Johnson295189b2012-06-20 16:38:30 -070020064 @see
20065 @return Result of the function call
20066*/
20067WDI_Status
20068WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020069(
20070 WDI_ControlBlockType* pWDICtx,
20071 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020073 wpt_uint8** pMsgBuffer,
20074 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 wpt_uint16* pusBufferSize
20076)
20077{
20078 tHalMsgHeader halMsgHeader;
20079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20080
Jeff Johnsone7245742012-09-05 17:12:55 -070020081 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020082 again*/
20083
20084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020085 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020087 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020088 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20089 if ( NULL == *pMsgBuffer )
20090 {
20091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20092 "Unable to allocate message buffer for req %s (%d)",
20093 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020094 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020096 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020097 }
20098
20099 /*-------------------------------------------------------------------------
20100 Fill in the message header
20101 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020102 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20103 /* Fill msgVersion */
20104#ifdef WLAN_FEATURE_11AC
20105 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020106 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020107 else
20108#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020109 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020110
Jeff Johnsone7245742012-09-05 17:12:55 -070020111 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20112 *pusDataOffset = sizeof(halMsgHeader);
20113 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20114
20115 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020116}/*WDI_GetMessageBuffer*/
20117
20118
20119/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020120 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 the CB
20123
20124 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020126
Jeff Johnson295189b2012-06-20 16:38:30 -070020127 usSendSize size of the buffer to be sent
20128 pRspCb: response callback - save in the WDI
20129 CB
20130 pUserData: user data associated with the
20131 callback
20132 wdiExpectedResponse: the code of the response that is
20133 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020134
Jeff Johnson295189b2012-06-20 16:38:30 -070020135 @see
20136 @return Result of the function call
20137*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020138WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020139WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020140(
20141 WDI_ControlBlockType* pWDICtx,
20142 wpt_uint8* pSendBuffer,
20143 wpt_uint32 usSendSize,
20144 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 void* pUserData,
20146 WDI_ResponseEnumType wdiExpectedResponse
20147)
20148{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020149 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020150 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20152
20153 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020154 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020155 ------------------------------------------------------------------------*/
20156 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020157 pWDICtx->pfncRspCB = pRspCb;
20158 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020159
20160 /*-----------------------------------------------------------------------
20161 Call the CTS to send this message over - free message afterwards
20162 - notify transport failure
20163 Note: CTS is reponsible for freeing the message buffer.
20164 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020165 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20166 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20167 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 "Failed to send message over the bus - catastrophic failure");
20171
Jeff Johnsond13512a2012-07-17 11:42:19 -070020172 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020174 else
20175 {
20176 /* even when message was placed in CTS deferred Q, we will treat it
20177 success but log this info
20178 */
20179 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20180 {
20181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20182 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20183 "response %s (%d)",
20184 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20185 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020186 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020187 }
20188 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020189
Jeff Johnsond13512a2012-07-17 11:42:19 -070020190 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 if ( NULL != pWDICtx->wdiReqStatusCB )
20192 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020193 /*Inform originator whether request went through or not*/
20194 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20195 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020196 pWDICtx->wdiReqStatusCB = NULL;
20197 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020198 callback(wdiStatus, callbackContext);
20199
20200 /*For WDI requests which have registered a request callback,
20201 inform the WDA caller of the same via setting the return value
20202 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20203 end up repeating the functonality in the req callback for the
20204 WDI_STATUS_E_FAILURE case*/
20205 if (wdiStatus == WDI_STATUS_E_FAILURE)
20206 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 }
20208
Jeff Johnsond13512a2012-07-17 11:42:19 -070020209 if ( wdiStatus == WDI_STATUS_SUCCESS )
20210 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 /*Start timer for the expected response */
20212 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020213
20214 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020215 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020216 }
20217 else
20218 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020219 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020220 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20221 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020222
Jeff Johnsond13512a2012-07-17 11:42:19 -070020223 return wdiStatus;
20224
Jeff Johnson295189b2012-06-20 16:38:30 -070020225}/*WDI_SendMsg*/
20226
20227
20228
20229/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020230 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020231 the bus using the control transport and saves some info
20232 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020233
20234 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020235 pSendBuffer: buffer to be sent
20236 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020237
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 @see
20239 @return Result of the function call
20240*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020241WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020242WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020243(
20244 WDI_ControlBlockType* pWDICtx,
20245 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020246 wpt_uint32 usSendSize
20247)
20248{
20249 wpt_uint32 uStatus ;
20250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20251
20252 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020253 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020254 Note: CTS is reponsible for freeing the message buffer.
20255 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020256 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020257 (void*)pSendBuffer, usSendSize );
20258
20259 /*Inform Upper MAC about the outcome of the request*/
20260 if ( NULL != pWDICtx->wdiReqStatusCB )
20261 {
20262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20263 "Send indication status : %d", uStatus);
20264
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020265 /* even if CTS placed indication into its deferred Q, we treat it
20266 * as success and let CTS drain its queue as per smd interrupt to CTS
20267 */
20268 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 -070020269 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020270 }
20271
20272 /*If sending of the message failed - it is considered catastrophic and
20273 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020274 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20275 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20276
Jeff Johnson295189b2012-06-20 16:38:30 -070020277 {
20278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020279 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020280
20281 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20282 return WDI_STATUS_E_FAILURE;
20283 }
20284
Jeff Johnsone7245742012-09-05 17:12:55 -070020285 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020286}/*WDI_SendIndication*/
20287
20288
20289/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020290 @brief WDI_DetectedDeviceError - called internally by DAL when
20291 it has detected a failure in the device
20292
20293 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020294 usErrorCode: error code detected by WDI or received
20295 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020296
Jeff Johnson295189b2012-06-20 16:38:30 -070020297 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020298 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020299*/
20300void
20301WDI_DetectedDeviceError
20302(
20303 WDI_ControlBlockType* pWDICtx,
20304 wpt_uint16 usErrorCode
20305)
20306{
20307 WDI_LowLevelIndType wdiInd;
20308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20309
20310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20311 "Device Error detected code: %d - transitioning to stopped state",
20312 usErrorCode);
20313
20314 wpalMutexAcquire(&pWDICtx->wptMutex);
20315
20316 WDI_STATableStop(pWDICtx);
20317
20318 WDI_ResetAssocSessions(pWDICtx);
20319
20320 /*Set the expected state transition to stopped - because the device
20321 experienced a failure*/
20322 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20323
20324 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020325 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020326
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020328
20329 /*TO DO: - there should be an attempt to reset the device here*/
20330
20331 wpalMutexRelease(&pWDICtx->wptMutex);
20332
20333 /*------------------------------------------------------------------------
20334 Notify UMAC if a handler is registered
20335 ------------------------------------------------------------------------*/
20336 if (pWDICtx->wdiLowLevelIndCB)
20337 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020338 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20339 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020340
20341 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20342 }
20343}/*WDI_DetectedDeviceError*/
20344
20345/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020346 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020347 we started on send message has expire - this should
20348 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020349 reply - trigger catastrophic failure
20350 @param
20351
Jeff Johnson295189b2012-06-20 16:38:30 -070020352 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020353
20354 @see
20355 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020356*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020357void
Jeff Johnson295189b2012-06-20 16:38:30 -070020358WDI_ResponseTimerCB
20359(
20360 void *pUserData
20361)
20362{
20363 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20365
20366 if (NULL == pWDICtx )
20367 {
20368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020371 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020372 }
20373
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020374 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020375 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020376
20377 /* If response timer is running at this time that means this timer
20378 * event is not for the last request but rather last-to-last request and
20379 * this timer event has come after we recevied respone for last-to-last
20380 * message
20381 */
20382 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20383 {
20384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20385 "WDI_ResponseTimerCB: timer in running state on timer event, "
20386 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20387 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20388 return;
20389 }
20390
Jeff Johnson295189b2012-06-20 16:38:30 -070020391 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
20392 {
20393
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053020394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020395 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020396 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020398 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20399 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020400 /* WDI timeout means Riva is not responding or SMD communication to Riva
20401 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020402 * is to initiate SSR from APPS
20403 * There is also an option to re-enable wifi, which will eventually
20404 * trigger SSR
20405 */
20406#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070020407 wpalWcnssResetIntr();
20408 /* if this timer fires, it means Riva did not receive the FIQ */
20409 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020410#else
20411 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20412 wpalWlanReload();
20413#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020414 }
20415 else
20416 {
20417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020418 "Timeout occurred but not waiting for any response %d "
20419 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20420 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20421 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020422 }
20423
20424 return;
20425
20426}/*WDI_ResponseTimerCB*/
20427
20428
20429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020430 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020431
Jeff Johnsone7245742012-09-05 17:12:55 -070020432
20433 @param pWDICtx: pointer to the WLAN DAL context
20434 pEventData: pointer to the event information structure
20435
Jeff Johnson295189b2012-06-20 16:38:30 -070020436 @see
20437 @return Result of the function call
20438*/
20439WPT_INLINE WDI_Status
20440WDI_ProcessResponse
20441(
20442 WDI_ControlBlockType* pWDICtx,
20443 WDI_EventInfoType* pEventData
20444)
20445{
20446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20447
Jeff Johnsone7245742012-09-05 17:12:55 -070020448 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020449 already checked these pointers
20450 ! - revisit this assumption */
20451 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20452 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020453 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020455 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020456 WDI_getRespMsgString(pEventData->wdiResponse),
20457 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20458 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20459 }
20460 else
20461 {
20462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020463 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020464 pEventData->wdiResponse);
20465 return WDI_STATUS_E_NOT_IMPLEMENT;
20466 }
20467}/*WDI_ProcessResponse*/
20468
20469
20470/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020471 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020472=========================================================================*/
20473
20474/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020475 @brief Utility function used by the DAL Core to help queue a
20476 request that cannot be processed right away.
20477 @param
20478
Jeff Johnson295189b2012-06-20 16:38:30 -070020479 pWDICtx: - pointer to the WDI control block
20480 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020481 queued
20482
20483 @see
20484 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020485*/
20486WDI_Status
20487WDI_QueuePendingReq
20488(
20489 WDI_ControlBlockType* pWDICtx,
20490 WDI_EventInfoType* pEventData
20491)
20492{
Jeff Johnsone7245742012-09-05 17:12:55 -070020493 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020494 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20497
20498 if ( NULL == pEventDataQueue )
20499 {
20500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020501 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020502 WDI_ASSERT(0);
20503 return WDI_STATUS_MEM_FAILURE;
20504 }
20505
20506 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20507 pEventDataQueue->pUserData = pEventData->pUserData;
20508 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20509 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020510 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020511
20512 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20513 {
20514 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020515
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 if ( NULL == pEventInfo )
20517 {
20518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020519 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020520 WDI_ASSERT(0);
20521 wpalMemoryFree(pEventDataQueue);
20522 return WDI_STATUS_MEM_FAILURE;
20523 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020524
Jeff Johnson295189b2012-06-20 16:38:30 -070020525 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20526
20527 }
20528 pEventDataQueue->pEventData = pEventInfo;
20529
20530 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020531 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020532
Jeff Johnsone7245742012-09-05 17:12:55 -070020533 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020534
20535 return WDI_STATUS_SUCCESS;
20536}/*WDI_QueuePendingReq*/
20537
20538/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020539 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020540 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020541 @param
20542
20543 pMsg - pointer to the message
20544
20545 @see
20546 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020547*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020548void
Jeff Johnson295189b2012-06-20 16:38:30 -070020549WDI_PALCtrlMsgCB
20550(
20551 wpt_msg *pMsg
20552)
20553{
20554 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020555 WDI_ControlBlockType* pWDICtx = NULL;
20556 WDI_Status wdiStatus;
20557 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020558 void* pUserData;
20559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20560
20561 if (( NULL == pMsg )||
20562 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20563 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20564 {
20565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020566 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020568 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 }
20570
20571 /*Transition back to the state that we had before serialization
20572 - serialization transitions us to BUSY to stop any incomming requests
20573 ! TO DO L: possible race condition here if a request comes in between the
20574 state transition and the post function*/
20575
Jeff Johnsone7245742012-09-05 17:12:55 -070020576 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020577
20578 /*-----------------------------------------------------------------------
20579 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020580 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 -----------------------------------------------------------------------*/
20582 switch ( pEventData->wdiRequest )
20583 {
20584
Jeff Johnsone7245742012-09-05 17:12:55 -070020585 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20587 break;
20588
Jeff Johnson295189b2012-06-20 16:38:30 -070020589 case WDI_NV_DOWNLOAD_REQ:
20590 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20591 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20592 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20593 {
20594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020595 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020596 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20597 }
20598 else
20599 {
20600 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20601 }
20602
20603 break;
20604
20605 default:
20606 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20607 break;
20608 }/*switch ( pEventData->wdiRequest )*/
20609
20610 if ( WDI_STATUS_SUCCESS != wdiStatus )
20611 {
20612 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20613
20614 if ( NULL != pfnReqStatusCB )
20615 {
20616 /*Fail the request*/
20617 pfnReqStatusCB( wdiStatus, pUserData);
20618 }
20619 }
20620
20621 /* Free data - that was allocated when queueing*/
20622 if( pEventData != NULL )
20623 {
20624 if( pEventData->pEventData != NULL )
20625 {
20626 wpalMemoryFree(pEventData->pEventData);
20627 }
20628 wpalMemoryFree(pEventData);
20629 }
20630
20631 if( pMsg != NULL )
20632 {
20633 wpalMemoryFree(pMsg);
20634 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020635
Jeff Johnson295189b2012-06-20 16:38:30 -070020636}/*WDI_PALCtrlMsgCB*/
20637
20638/**
20639 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020640 and schedule for execution a pending request
20641 @param
20642
Jeff Johnson295189b2012-06-20 16:38:30 -070020643 pWDICtx: - pointer to the WDI control block
20644 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020645 queued
20646
20647 @see
20648 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020649*/
20650WDI_Status
20651WDI_DequeuePendingReq
20652(
20653 WDI_ControlBlockType* pWDICtx
20654)
20655{
Jeff Johnsone7245742012-09-05 17:12:55 -070020656 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020658 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20660
Jeff Johnsone7245742012-09-05 17:12:55 -070020661 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020662
20663 if ( NULL == pNode )
20664 {
20665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020666 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 return WDI_STATUS_SUCCESS;
20668 }
20669
20670 /*The node actually points to the 1st element inside the Event Data struct -
20671 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020672 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020673
20674 /*Serialize processing in the control thread
20675 !TO DO: - check to see if these are all the messages params that need
20676 to be filled in*/
20677 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20678
20679 if ( NULL == palMsg )
20680 {
20681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020682 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020685 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020686 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 palMsg->callback = WDI_PALCtrlMsgCB;
20688 palMsg->ptr = pEventData;
20689
20690 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020691 palMsg->val = pWDICtx->uGlobalState;
20692
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 /*Transition back to BUSY as we need to handle a queued request*/
20694 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020695
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20697
20698 return WDI_STATUS_PENDING;
20699}/*WDI_DequeuePendingReq*/
20700
20701
20702/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020703 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020704 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020705 away.- The assoc requests will be queued by BSSID
20706 @param
20707
Jeff Johnson295189b2012-06-20 16:38:30 -070020708 pWDICtx: - pointer to the WDI control block
20709 pEventData: pointer to the evnt info that needs to be queued
20710 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020711
20712 @see
20713 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020714*/
20715WDI_Status
20716WDI_QueueNewAssocRequest
20717(
20718 WDI_ControlBlockType* pWDICtx,
20719 WDI_EventInfoType* pEventData,
20720 wpt_macAddr macBSSID
20721)
20722{
Jeff Johnsone7245742012-09-05 17:12:55 -070020723 wpt_uint8 i;
20724 WDI_BSSSessionType* pSession = NULL;
20725 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020727 void* pEventInfo;
20728 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020730
Jeff Johnsone7245742012-09-05 17:12:55 -070020731
20732 /*------------------------------------------------------------------------
20733 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020734 ------------------------------------------------------------------------*/
20735 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20736 {
20737 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20738 {
20739 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020740 pSession = &pWDICtx->aBSSSessions[i];
20741 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020742 }
20743 }
20744
20745 if ( i >= WDI_MAX_BSS_SESSIONS )
20746 {
20747 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020749 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020750
Jeff Johnson295189b2012-06-20 16:38:30 -070020751 /*------------------------------------------------------------------------
20752 Fill in the BSSID for this session and set the usage flag
20753 ------------------------------------------------------------------------*/
20754 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020756
20757 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020759 ------------------------------------------------------------------------*/
20760 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20761 if ( NULL == pEventDataQueue )
20762 {
20763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020764 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 WDI_ASSERT(0);
20766 return WDI_STATUS_MEM_FAILURE;
20767 }
20768
20769 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20770 if ( NULL == pSessionIdElement )
20771 {
20772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020773 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020774 WDI_ASSERT(0);
20775 wpalMemoryFree(pEventDataQueue);
20776 return WDI_STATUS_MEM_FAILURE;
20777 }
20778
20779 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20780 if ( NULL == pEventInfo )
20781 {
20782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020783 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 WDI_ASSERT(0);
20785 wpalMemoryFree(pSessionIdElement);
20786 wpalMemoryFree(pEventDataQueue);
20787 return WDI_STATUS_MEM_FAILURE;
20788 }
20789
20790 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20791 pEventDataQueue->pUserData = pEventData->pUserData;
20792 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20793 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020794 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020795
20796 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20797 pEventDataQueue->pEventData = pEventInfo;
20798
20799 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020800 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020801
20802 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020803 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020804
Jeff Johnsone7245742012-09-05 17:12:55 -070020805 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020806
20807 /*We need to maintain a separate list that keeps track of the order in which
20808 the new assoc requests are being queued such that we can start processing
20809 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020810 pSessionIdElement->ucIndex = i;
20811 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020812
20813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20814 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020815 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020816
20817 /*Return pending as this is what the status of the request is since it has
20818 been queued*/
20819 return WDI_STATUS_PENDING;
20820}/*WDI_QueueNewAssocRequest*/
20821
20822/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020823 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020824 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020825 away.- The assoc requests will be queued by BSSID
20826 @param
20827
Jeff Johnson295189b2012-06-20 16:38:30 -070020828 pWDICtx: - pointer to the WDI control block
20829 pSession: - session in which to queue
20830 pEventData: pointer to the event info that needs to be
20831 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020832
20833 @see
20834 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020835*/
20836WDI_Status
20837WDI_QueueAssocRequest
20838(
20839 WDI_ControlBlockType* pWDICtx,
20840 WDI_BSSSessionType* pSession,
20841 WDI_EventInfoType* pEventData
20842)
20843{
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020846 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020848
20849 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020850 Sanity check
20851 ------------------------------------------------------------------------*/
20852 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20853 {
20854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020856
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 }
20859
20860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020861 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020862 ------------------------------------------------------------------------*/
20863 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20864 if ( NULL == pEventDataQueue )
20865 {
20866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020867 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020868 WDI_ASSERT(0);
20869 return WDI_STATUS_MEM_FAILURE;
20870 }
20871
20872 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20873 if ( NULL == pEventInfo )
20874 {
20875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20876 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020877 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 WDI_ASSERT(0);
20879 wpalMemoryFree(pEventDataQueue);
20880 return WDI_STATUS_MEM_FAILURE;
20881 }
20882
20883 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20884 pEventDataQueue->pUserData = pEventData->pUserData;
20885 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20886 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 pEventDataQueue->pEventData = pEventInfo;
20889
20890 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20891
20892 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020893 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020894
20895 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020896 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020897
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020899
20900 /*The result of this operation is pending because the request has been
20901 queued and it will be processed at a later moment in time */
20902 return WDI_STATUS_PENDING;
20903}/*WDI_QueueAssocRequest*/
20904
20905/**
20906 @brief Utility function used by the DAL Core to help dequeue
20907 an association request that was pending
20908 The request will be queued up in front of the main
20909 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020910 @param
20911
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020913
20914
20915 @see
20916 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020917*/
20918WDI_Status
20919WDI_DequeueAssocRequest
20920(
20921 WDI_ControlBlockType* pWDICtx
20922)
20923{
Jeff Johnsone7245742012-09-05 17:12:55 -070020924 wpt_list_node* pNode = NULL;
20925 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020926 WDI_BSSSessionType* pSession;
20927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020928
20929 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 Sanity check
20931 ------------------------------------------------------------------------*/
20932 if ( NULL == pWDICtx )
20933 {
20934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020936
Jeff Johnsone7245742012-09-05 17:12:55 -070020937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020938 }
20939
20940 /*------------------------------------------------------------------------
20941 An association has been completed => a new association can occur
20942 Check to see if there are any pending associations ->
20943 If so , transfer all the pending requests into the busy queue for
20944 processing
20945 These requests have arrived prior to the requests in the busy queue
20946 (bc they needed to be processed in order to be placed in this queue)
20947 => they will be placed at the front of the busy queue
20948 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020949 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020950
20951 if ( NULL == pNode )
20952 {
20953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020954 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020955 return WDI_STATUS_SUCCESS;
20956 }
20957
20958 /*The node actually points to the 1st element inside the Session Id struct -
20959 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020960 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020961
20962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20963 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20964
20965 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20966 {
20967 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020968
Jeff Johnson295189b2012-06-20 16:38:30 -070020969 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020970 the front of the main waiting queue for subsequent execution*/
20971 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020972 while ( NULL != pNode )
20973 {
20974 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020975 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20976 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020977 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020978 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 }
20980 else
20981 {
20982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020983 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020984 WPAL_ASSERT(0);
20985 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020988
Jeff Johnson295189b2012-06-20 16:38:30 -070020989 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20990 wpalMemoryFree(pSessionIdElement);
20991 return WDI_STATUS_SUCCESS;
20992}/*WDI_DequeueAssocRequest*/
20993
20994/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020995 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 pending requests - all req cb will be called with
20997 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020998 @param
20999
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021001
21002 @see
21003 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021004*/
21005WDI_Status
21006WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021007(
Jeff Johnson295189b2012-06-20 16:38:30 -070021008 WDI_ControlBlockType* pWDICtx
21009)
21010{
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021013 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021014 void* pUserData;
21015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21016
Jeff Johnsone7245742012-09-05 17:12:55 -070021017 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021018
21019 /*------------------------------------------------------------------------
21020 Go through all the requests and fail them - this will only be called
21021 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021022 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021023 ------------------------------------------------------------------------*/
21024 while( pNode )
21025 {
21026 /*The node actually points to the 1st element inside the Event Data struct -
21027 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 pEventDataQueue = (WDI_EventInfoType*)pNode;
21029
Jeff Johnson295189b2012-06-20 16:38:30 -070021030 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21031 if ( NULL != pfnReqStatusCB )
21032 {
21033 /*Fail the request*/
21034 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21035 }
21036 /* Free data - that was allocated when queueing */
21037 if ( pEventDataQueue->pEventData != NULL )
21038 {
21039 wpalMemoryFree(pEventDataQueue->pEventData);
21040 }
21041 wpalMemoryFree(pEventDataQueue);
21042
21043 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21044 {
21045 break;
21046 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021047 }
21048
Jeff Johnson295189b2012-06-20 16:38:30 -070021049 return WDI_STATUS_SUCCESS;
21050}/*WDI_ClearPendingRequests*/
21051
21052/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021053 @brief Helper routine used to init the BSS Sessions in the WDI control block
21054
21055
21056 @param pWDICtx: pointer to the WLAN DAL context
21057
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 @see
21059*/
21060void
21061WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021062(
Jeff Johnson295189b2012-06-20 16:38:30 -070021063 WDI_ControlBlockType* pWDICtx
21064)
21065{
Jeff Johnsone7245742012-09-05 17:12:55 -070021066 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21068
21069 /*-------------------------------------------------------------------------
21070 No Sanity check
21071 -------------------------------------------------------------------------*/
21072 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21073 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021074 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021075 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21076 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21077 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21078 }
21079}/*WDI_ResetAssocSessions*/
21080
21081/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021082 @brief Helper routine used to find a session based on the BSSID
21083
21084
21085 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021086 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021087 pSession: pointer to the session (if found)
21088
Jeff Johnson295189b2012-06-20 16:38:30 -070021089 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021090 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021091*/
21092wpt_uint8
21093WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021094(
Jeff Johnson295189b2012-06-20 16:38:30 -070021095 WDI_ControlBlockType* pWDICtx,
21096 wpt_macAddr macBSSID,
21097 WDI_BSSSessionType** ppSession
21098)
21099{
Jeff Johnsone7245742012-09-05 17:12:55 -070021100 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21102
21103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 -------------------------------------------------------------------------*/
21106 if ( NULL == ppSession )
21107 {
21108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021109 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021110 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021111 }
21112
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021114
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 /*------------------------------------------------------------------------
21116 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021117 ------------------------------------------------------------------------*/
21118 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21119 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021120 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21121 (eWLAN_PAL_TRUE ==
21122 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21123 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 {
21125 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021126 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 return i;
21128 }
21129 }
21130
Jeff Johnsone7245742012-09-05 17:12:55 -070021131 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021132}/*WDI_FindAssocSession*/
21133
21134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021135 @brief Helper routine used to find a session based on the BSSID
21136
21137
21138 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021139 ucBSSIdx: BSS Index of the session
21140 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021141
Jeff Johnson295189b2012-06-20 16:38:30 -070021142 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021144*/
21145wpt_uint8
21146WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021147(
Jeff Johnson295189b2012-06-20 16:38:30 -070021148 WDI_ControlBlockType* pWDICtx,
21149 wpt_uint16 ucBSSIdx,
21150 WDI_BSSSessionType** ppSession
21151)
21152{
Jeff Johnsone7245742012-09-05 17:12:55 -070021153 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21155
21156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021158 -------------------------------------------------------------------------*/
21159 if ( NULL == ppSession )
21160 {
21161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021162 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 }
21165
Jeff Johnsone7245742012-09-05 17:12:55 -070021166 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021167
Jeff Johnsone7245742012-09-05 17:12:55 -070021168 /*------------------------------------------------------------------------
21169 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 ------------------------------------------------------------------------*/
21171 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21172 {
21173 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21174 {
21175 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021176 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021177 return i;
21178 }
21179 }
21180
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021182}/*WDI_FindAssocSessionByBSSIdx*/
21183
21184/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021185 @brief Helper routine used to find a session based on the BSSID
21186
21187
21188 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021189 ucBSSIdx: BSS Index of the session
21190 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021191
Jeff Johnson295189b2012-06-20 16:38:30 -070021192 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021193 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021194*/
21195wpt_uint8
21196WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021197(
Jeff Johnson295189b2012-06-20 16:38:30 -070021198 WDI_ControlBlockType* pWDICtx,
21199 wpt_uint16 usIdx,
21200 WDI_BSSSessionType** ppSession
21201)
21202{
21203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21204
21205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021207 -------------------------------------------------------------------------*/
21208 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21209 {
21210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021211 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021212 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 }
21214
21215 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021216 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021217
21218 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021219
Jeff Johnson295189b2012-06-20 16:38:30 -070021220}/*WDI_FindAssocSessionByBSSIdx*/
21221
21222/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021223 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021224 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021225
21226
21227 @param pWDICtx: pointer to the WLAN DAL context
21228 pSession: pointer to the session (if found)
21229
Jeff Johnson295189b2012-06-20 16:38:30 -070021230 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021231 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021232*/
21233wpt_uint8
21234WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021235(
Jeff Johnson295189b2012-06-20 16:38:30 -070021236 WDI_ControlBlockType* pWDICtx,
21237 WDI_BSSSessionType** ppSession
21238)
21239{
Jeff Johnsone7245742012-09-05 17:12:55 -070021240 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021244 -------------------------------------------------------------------------*/
21245 if ( NULL == ppSession )
21246 {
21247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021248 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021249 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021250 }
21251
Jeff Johnsone7245742012-09-05 17:12:55 -070021252 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021253
Jeff Johnsone7245742012-09-05 17:12:55 -070021254 /*------------------------------------------------------------------------
21255 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021256 ------------------------------------------------------------------------*/
21257 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21258 {
21259 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21260 {
21261 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021263 return i;
21264 }
21265 }
21266
Jeff Johnsone7245742012-09-05 17:12:55 -070021267 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021268}/*WDI_FindEmptySession*/
21269
21270
21271/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021272 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021273 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021274
21275
21276 @param pWDICtx: pointer to the WLAN DAL context
21277
Jeff Johnson295189b2012-06-20 16:38:30 -070021278 @see
21279 @return Number of sessions in use
21280*/
21281wpt_uint8
21282WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021283(
Jeff Johnson295189b2012-06-20 16:38:30 -070021284 WDI_ControlBlockType* pWDICtx
21285)
21286{
Jeff Johnsone7245742012-09-05 17:12:55 -070021287 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021289
21290 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021291 Count all sessions in use
21292 ------------------------------------------------------------------------*/
21293 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21294 {
21295 if ( pWDICtx->aBSSSessions[i].bInUse )
21296 {
21297 ucCount++;
21298 }
21299 }
21300
Jeff Johnsone7245742012-09-05 17:12:55 -070021301 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021302}/*WDI_GetActiveSessionsCount*/
21303
21304/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021306 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021307
21308
21309 @param pWDICtx: pointer to the WLAN DAL context
21310 pSession: pointer to the session (if found)
21311
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021313 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021314*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021315void
Jeff Johnson295189b2012-06-20 16:38:30 -070021316WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021317(
Jeff Johnson295189b2012-06-20 16:38:30 -070021318 WDI_ControlBlockType* pWDICtx,
21319 WDI_BSSSessionType* ppSession
21320)
21321{
21322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 -------------------------------------------------------------------------*/
21325 if ( NULL == ppSession )
21326 {
21327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021328 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021329 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021330 }
21331
Jeff Johnsone7245742012-09-05 17:12:55 -070021332 /*------------------------------------------------------------------------
21333 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 ------------------------------------------------------------------------*/
21335 wpal_list_destroy(&ppSession->wptPendingQueue);
21336 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21338 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21340 wpal_list_init(&ppSession->wptPendingQueue);
21341
21342}/*WDI_DeleteSession*/
21343
21344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021345 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021347 @param
21348
Jeff Johnson295189b2012-06-20 16:38:30 -070021349 WDI_AddStaParams: - pointer to the WDI Add STA params
21350 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021351
21352 @see
21353 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021354*/
21355void
21356WDI_AddBcastSTAtoSTATable
21357(
21358 WDI_ControlBlockType* pWDICtx,
21359 WDI_AddStaParams * staParams,
21360 wpt_uint16 usBcastStaIdx
21361)
21362{
21363 WDI_AddStaParams wdiAddSTAParam = {0};
21364 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21366
21367 /*---------------------------------------------------------------------
21368 Sanity check
21369 ---------------------------------------------------------------------*/
21370 if ( NULL == staParams )
21371 {
21372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021374
Jeff Johnsone7245742012-09-05 17:12:55 -070021375 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021376 }
21377
21378 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21379 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21380 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21381 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21382 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21383 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21384 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21385 WDI_MAC_ADDR_LEN );
21386 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21387 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21388 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21389 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21390 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21391 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21392 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021393
Jeff Johnson295189b2012-06-20 16:38:30 -070021394 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21395}
21396
21397/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021398 @brief NV blob will be divided into fragments of size 4kb and
21399 Sent to HAL
21400
21401 @param pWDICtx: pointer to the WLAN DAL context
21402 pEventData: pointer to the event information structure
21403
Jeff Johnson295189b2012-06-20 16:38:30 -070021404 @see
21405 @return Result of the function call
21406 */
21407
21408WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021409(
Jeff Johnson295189b2012-06-20 16:38:30 -070021410 WDI_ControlBlockType* pWDICtx,
21411 WDI_EventInfoType* pEventData
21412)
21413{
21414
21415 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21416 wpt_uint8* pSendBuffer = NULL;
21417 wpt_uint16 usDataOffset = 0;
21418 wpt_uint16 usSendSize = 0;
21419 wpt_uint16 usCurrentFragmentSize =0;
21420 wpt_uint8* pSrcBuffer = NULL;
21421 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21422 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21423
21424 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21425 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21426 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21427
Jeff Johnsone7245742012-09-05 17:12:55 -070021428 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21430
21431 /* Update the current Fragment Number */
21432 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21433
21434 /*Update the HAL REQ structure */
21435 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21436 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21437 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21438
21439 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021440 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021441 image will be sent to HAL*/
21442
Jeff Johnsone7245742012-09-05 17:12:55 -070021443 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021444 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021445 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021446 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21449 usCurrentFragmentSize = FRAGMENT_SIZE;
21450
21451 /*Update the HAL REQ structure */
21452 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21453 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21454
21455 }
21456 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021458 usCurrentFragmentSize = FRAGMENT_SIZE;
21459
21460 /*Update the HAL REQ structure */
21461 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21462 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21463 }
21464
21465 /*-----------------------------------------------------------------------
21466 Get message buffer
21467 -----------------------------------------------------------------------*/
21468 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21469 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21470 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021471 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021472 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21473 {
21474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21475 "Unable to get send buffer in NV Download req %x %x ",
21476 pEventData, pwdiNvDownloadReqParams);
21477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021479 }
21480
21481 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021482 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21484
21485 /* Appending the NV image fragment */
21486 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21487 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21488 usCurrentFragmentSize);
21489
21490 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021491 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021492
Jeff Johnsone7245742012-09-05 17:12:55 -070021493 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21494 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021495 WDI_NV_DOWNLOAD_RESP);
21496
21497}
Jeff Johnsone7245742012-09-05 17:12:55 -070021498/*============================================================================
21499 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 ============================================================================*/
21501/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021502 @brief Helper routine used to find a session based on the BSSID
21503 @param pContext: pointer to the WLAN DAL context
21504 @param pDPContext: pointer to the Datapath context
21505
Jeff Johnson295189b2012-06-20 16:38:30 -070021506 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021507 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021508*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021509WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021510WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21511{
21512 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21513
21514 pCB->pDPContext = pDPContext;
21515 return;
21516}
21517
21518/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021519 @brief Helper routine used to find a session based on the BSSID
21520
21521
21522 @param pContext: pointer to the WLAN DAL context
21523
Jeff Johnson295189b2012-06-20 16:38:30 -070021524 @see
21525 @return pointer to Datapath context
21526*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021527WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021528WDI_DS_GetDatapathContext (void *pContext)
21529{
21530 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21531 return pCB->pDPContext;
21532}
21533/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021534 @brief Helper routine used to find a session based on the BSSID
21535
21536
21537 @param pContext: pointer to the WLAN DAL context
21538 @param pDTDriverContext: pointer to the Transport Driver context
21539
Jeff Johnson295189b2012-06-20 16:38:30 -070021540 @see
21541 @return void
21542*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021543WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021544WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21545{
21546 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21547
21548 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021549 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021550}
21551
21552/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021553 @brief Helper routine used to find a session based on the BSSID
21554
21555
21556 @param pWDICtx: pointer to the WLAN DAL context
21557
Jeff Johnson295189b2012-06-20 16:38:30 -070021558 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021559 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021560*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021561WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021562WDT_GetTransportDriverContext (void *pContext)
21563{
21564 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021565 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021566}
21567
Jeff Johnsone7245742012-09-05 17:12:55 -070021568/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 Helper inline converters
21570 ============================================================================*/
21571/*Convert WDI driver type into HAL driver type*/
21572WPT_STATIC WPT_INLINE WDI_Status
21573WDI_HAL_2_WDI_STATUS
21574(
21575 eHalStatus halStatus
21576)
21577{
Jeff Johnsone7245742012-09-05 17:12:55 -070021578 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021579 the chances of getting inlined*/
21580 switch( halStatus )
21581 {
21582 case eHAL_STATUS_SUCCESS:
21583 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21584 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21585 return WDI_STATUS_SUCCESS;
21586 case eHAL_STATUS_FAILURE:
21587 return WDI_STATUS_E_FAILURE;
21588 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021589 return WDI_STATUS_MEM_FAILURE;
21590 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021592 default:
21593 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21594 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021595
Jeff Johnsone7245742012-09-05 17:12:55 -070021596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021597}/*WDI_HAL_2_WDI_STATUS*/
21598
21599/*Convert WDI request type into HAL request type*/
21600WPT_STATIC WPT_INLINE tHalHostMsgType
21601WDI_2_HAL_REQ_TYPE
21602(
21603 WDI_RequestEnumType wdiReqType
21604)
21605{
Jeff Johnsone7245742012-09-05 17:12:55 -070021606 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021607 the chances of getting inlined*/
21608 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021609 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021610 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021611 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021612 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021613 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021615 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021616 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021617 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021618 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021619 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021620 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021621 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021622 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021623 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021624 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021625 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021627 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021628 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021629 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021630 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021631 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021632 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021633 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021634 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021635 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021637 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021638 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021639 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021640 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021641 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021643 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021644 return WLAN_HAL_RMV_STAKEY_REQ;
21645 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021646 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021647 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021648 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021649 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021650 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021651 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021652 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021653 case WDI_DEL_BA_REQ:
21654 return WLAN_HAL_DEL_BA_REQ;
21655#ifdef FEATURE_WLAN_CCX
21656 case WDI_TSM_STATS_REQ:
21657 return WLAN_HAL_TSM_STATS_REQ;
21658#endif
21659 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021660 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021661 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021662 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021663 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021664 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021665 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021666 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021667 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 case WDI_ADD_BA_SESSION_REQ:
21670 return WLAN_HAL_ADD_BA_SESSION_REQ;
21671 case WDI_TRIGGER_BA_REQ:
21672 return WLAN_HAL_TRIGGER_BA_REQ;
21673 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021674 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021676 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021677 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21678 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21679 case WDI_SET_MAX_TX_POWER_REQ:
21680 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070021681 case WDI_SET_TX_POWER_REQ:
21682 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021683 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21684 return WLAN_HAL_SET_P2P_GONOA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021690 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021691 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021693 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021694 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021695 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021696 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021697 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021698 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021699 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021700 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021701 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021702 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021703 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 case WDI_REM_BEACON_FILTER_REQ:
21706 return WLAN_HAL_REM_BCN_FILTER_REQ;
21707 case WDI_SET_RSSI_THRESHOLDS_REQ:
21708 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21709 case WDI_HOST_OFFLOAD_REQ:
21710 return WLAN_HAL_HOST_OFFLOAD_REQ;
21711 case WDI_WOWL_ADD_BC_PTRN_REQ:
21712 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21713 case WDI_WOWL_DEL_BC_PTRN_REQ:
21714 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21715 case WDI_WOWL_ENTER_REQ:
21716 return WLAN_HAL_ENTER_WOWL_REQ;
21717 case WDI_WOWL_EXIT_REQ:
21718 return WLAN_HAL_EXIT_WOWL_REQ;
21719 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21720 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21721 case WDI_NV_DOWNLOAD_REQ:
21722 return WLAN_HAL_DOWNLOAD_NV_REQ;
21723 case WDI_FLUSH_AC_REQ:
21724 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21725 case WDI_BTAMP_EVENT_REQ:
21726 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21727#ifdef WLAN_FEATURE_VOWIFI_11R
21728 case WDI_AGGR_ADD_TS_REQ:
21729 return WLAN_HAL_AGGR_ADD_TS_REQ;
21730#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 case WDI_FTM_CMD_REQ:
21732 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021733 case WDI_ADD_STA_SELF_REQ:
21734 return WLAN_HAL_ADD_STA_SELF_REQ;
21735 case WDI_DEL_STA_SELF_REQ:
21736 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021737#ifdef FEATURE_OEM_DATA_SUPPORT
21738 case WDI_START_OEM_DATA_REQ:
21739 return WLAN_HAL_START_OEM_DATA_REQ;
21740#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 case WDI_HOST_RESUME_REQ:
21742 return WLAN_HAL_HOST_RESUME_REQ;
21743 case WDI_HOST_SUSPEND_IND:
21744 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021745 case WDI_TRAFFIC_STATS_IND:
21746 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070021747#ifdef WLAN_FEATURE_11W
21748 case WDI_EXCLUDE_UNENCRYPTED_IND:
21749 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
21750#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021751 case WDI_KEEP_ALIVE_REQ:
21752 return WLAN_HAL_KEEP_ALIVE_REQ;
21753
21754#ifdef FEATURE_WLAN_SCAN_PNO
21755 case WDI_SET_PREF_NETWORK_REQ:
21756 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21757 case WDI_SET_RSSI_FILTER_REQ:
21758 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21759 case WDI_UPDATE_SCAN_PARAMS_REQ:
21760 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21761#endif // FEATURE_WLAN_SCAN_PNO
21762 case WDI_SET_TX_PER_TRACKING_REQ:
21763 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21764#ifdef WLAN_FEATURE_PACKET_FILTERING
21765 case WDI_8023_MULTICAST_LIST_REQ:
21766 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21767 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021768 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021769 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21770 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21771 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21772 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21773#endif // WLAN_FEATURE_PACKET_FILTERING
21774 case WDI_HAL_DUMP_CMD_REQ:
21775 return WLAN_HAL_DUMP_COMMAND_REQ;
21776#ifdef WLAN_FEATURE_GTK_OFFLOAD
21777 case WDI_GTK_OFFLOAD_REQ:
21778 return WLAN_HAL_GTK_OFFLOAD_REQ;
21779 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21780 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21781#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21782
21783 case WDI_INIT_SCAN_CON_REQ:
21784 return WLAN_HAL_INIT_SCAN_CON_REQ;
21785 case WDI_SET_POWER_PARAMS_REQ:
21786 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21787 case WDI_SET_TM_LEVEL_REQ:
21788 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21789 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21790 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021791#ifdef WLAN_FEATURE_11AC
21792 case WDI_UPDATE_VHT_OP_MODE_REQ:
21793 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21794#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021795 case WDI_GET_ROAM_RSSI_REQ:
21796 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021797 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021798 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021800
Jeff Johnson295189b2012-06-20 16:38:30 -070021801}/*WDI_2_HAL_REQ_TYPE*/
21802
21803/*Convert WDI response type into HAL response type*/
21804WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21805HAL_2_WDI_RSP_TYPE
21806(
21807 tHalHostMsgType halMsg
21808)
21809{
Jeff Johnsone7245742012-09-05 17:12:55 -070021810 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021811 the chances of getting inlined*/
21812 switch( halMsg )
21813 {
21814 case WLAN_HAL_START_RSP:
21815 return WDI_START_RESP;
21816 case WLAN_HAL_STOP_RSP:
21817 return WDI_STOP_RESP;
21818 case WLAN_HAL_INIT_SCAN_RSP:
21819 return WDI_INIT_SCAN_RESP;
21820 case WLAN_HAL_START_SCAN_RSP:
21821 return WDI_START_SCAN_RESP;
21822 case WLAN_HAL_END_SCAN_RSP:
21823 return WDI_END_SCAN_RESP;
21824 case WLAN_HAL_FINISH_SCAN_RSP:
21825 return WDI_FINISH_SCAN_RESP;
21826 case WLAN_HAL_CONFIG_STA_RSP:
21827 return WDI_CONFIG_STA_RESP;
21828 case WLAN_HAL_DELETE_STA_RSP:
21829 return WDI_DEL_STA_RESP;
21830 case WLAN_HAL_CONFIG_BSS_RSP:
21831 return WDI_CONFIG_BSS_RESP;
21832 case WLAN_HAL_DELETE_BSS_RSP:
21833 return WDI_DEL_BSS_RESP;
21834 case WLAN_HAL_JOIN_RSP:
21835 return WDI_JOIN_RESP;
21836 case WLAN_HAL_POST_ASSOC_RSP:
21837 return WDI_POST_ASSOC_RESP;
21838 case WLAN_HAL_SET_BSSKEY_RSP:
21839 return WDI_SET_BSS_KEY_RESP;
21840 case WLAN_HAL_SET_STAKEY_RSP:
21841 return WDI_SET_STA_KEY_RESP;
21842 case WLAN_HAL_RMV_BSSKEY_RSP:
21843 return WDI_RMV_BSS_KEY_RESP;
21844 case WLAN_HAL_RMV_STAKEY_RSP:
21845 return WDI_RMV_STA_KEY_RESP;
21846 case WLAN_HAL_SET_BCASTKEY_RSP:
21847 return WDI_SET_STA_BCAST_KEY_RESP;
21848 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21849 // return WDI_RMV_STA_BCAST_KEY_RESP;
21850 case WLAN_HAL_ADD_TS_RSP:
21851 return WDI_ADD_TS_RESP;
21852 case WLAN_HAL_DEL_TS_RSP:
21853 return WDI_DEL_TS_RESP;
21854 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21855 return WDI_UPD_EDCA_PRMS_RESP;
21856 case WLAN_HAL_ADD_BA_RSP:
21857 return WDI_ADD_BA_RESP;
21858 case WLAN_HAL_DEL_BA_RSP:
21859 return WDI_DEL_BA_RESP;
21860#ifdef FEATURE_WLAN_CCX
21861 case WLAN_HAL_TSM_STATS_RSP:
21862 return WDI_TSM_STATS_RESP;
21863#endif
21864 case WLAN_HAL_CH_SWITCH_RSP:
21865 return WDI_CH_SWITCH_RESP;
21866 case WLAN_HAL_SET_LINK_ST_RSP:
21867 return WDI_SET_LINK_ST_RESP;
21868 case WLAN_HAL_GET_STATS_RSP:
21869 return WDI_GET_STATS_RESP;
21870 case WLAN_HAL_UPDATE_CFG_RSP:
21871 return WDI_UPDATE_CFG_RESP;
21872 case WLAN_HAL_ADD_BA_SESSION_RSP:
21873 return WDI_ADD_BA_SESSION_RESP;
21874 case WLAN_HAL_TRIGGER_BA_RSP:
21875 return WDI_TRIGGER_BA_RESP;
21876 case WLAN_HAL_UPDATE_BEACON_RSP:
21877 return WDI_UPD_BCON_PRMS_RESP;
21878 case WLAN_HAL_SEND_BEACON_RSP:
21879 return WDI_SND_BCON_RESP;
21880 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21881 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21882 /*Indications*/
21883 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21884 return WDI_HAL_RSSI_NOTIFICATION_IND;
21885 case WLAN_HAL_MISSED_BEACON_IND:
21886 return WDI_HAL_MISSED_BEACON_IND;
21887 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21888 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21889 case WLAN_HAL_MIC_FAILURE_IND:
21890 return WDI_HAL_MIC_FAILURE_IND;
21891 case WLAN_HAL_FATAL_ERROR_IND:
21892 return WDI_HAL_FATAL_ERROR_IND;
21893 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21894 return WDI_HAL_DEL_STA_IND;
21895 case WLAN_HAL_COEX_IND:
21896 return WDI_HAL_COEX_IND;
21897 case WLAN_HAL_OTA_TX_COMPL_IND:
21898 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021899 case WLAN_HAL_P2P_NOA_ATTR_IND:
21900 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021901 case WLAN_HAL_P2P_NOA_START_IND:
21902 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 case WLAN_HAL_TX_PER_HIT_IND:
21904 return WDI_HAL_TX_PER_HIT_IND;
21905 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21906 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070021907 case WLAN_HAL_SET_TX_POWER_RSP:
21908 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 case WLAN_HAL_SET_P2P_GONOA_RSP:
21910 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021911 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021912 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021913 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021914 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021915 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021916 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021917 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021918 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021919 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021920 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021921 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021922 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021923 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021924 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021927 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21930 return WDI_SET_BEACON_FILTER_RESP;
21931 case WLAN_HAL_REM_BCN_FILTER_RSP:
21932 return WDI_REM_BEACON_FILTER_RESP;
21933 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21934 return WDI_SET_RSSI_THRESHOLDS_RESP;
21935 case WLAN_HAL_HOST_OFFLOAD_RSP:
21936 return WDI_HOST_OFFLOAD_RESP;
21937 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21938 return WDI_WOWL_ADD_BC_PTRN_RESP;
21939 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21940 return WDI_WOWL_DEL_BC_PTRN_RESP;
21941 case WLAN_HAL_ENTER_WOWL_RSP:
21942 return WDI_WOWL_ENTER_RESP;
21943 case WLAN_HAL_EXIT_WOWL_RSP:
21944 return WDI_WOWL_EXIT_RESP;
21945 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21946 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21947 case WLAN_HAL_DOWNLOAD_NV_RSP:
21948 return WDI_NV_DOWNLOAD_RESP;
21949 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21950 return WDI_FLUSH_AC_RESP;
21951 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21952 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021953 case WLAN_HAL_PROCESS_PTT_RSP:
21954 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021955 case WLAN_HAL_ADD_STA_SELF_RSP:
21956 return WDI_ADD_STA_SELF_RESP;
21957case WLAN_HAL_DEL_STA_SELF_RSP:
21958 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021959#ifdef FEATURE_OEM_DATA_SUPPORT
21960 case WLAN_HAL_START_OEM_DATA_RSP:
21961 return WDI_START_OEM_DATA_RESP;
21962#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 case WLAN_HAL_HOST_RESUME_RSP:
21964 return WDI_HOST_RESUME_RESP;
21965 case WLAN_HAL_KEEP_ALIVE_RSP:
21966 return WDI_KEEP_ALIVE_RESP;
21967#ifdef FEATURE_WLAN_SCAN_PNO
21968 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21969 return WDI_SET_PREF_NETWORK_RESP;
21970 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021972 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21973 return WDI_UPDATE_SCAN_PARAMS_RESP;
21974 case WLAN_HAL_PREF_NETW_FOUND_IND:
21975 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21976#endif // FEATURE_WLAN_SCAN_PNO
21977 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21978 return WDI_SET_TX_PER_TRACKING_RESP;
21979#ifdef WLAN_FEATURE_PACKET_FILTERING
21980 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21981 return WDI_8023_MULTICAST_LIST_RESP;
21982 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21983 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21984 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21985 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21986 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21987 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21988#endif // WLAN_FEATURE_PACKET_FILTERING
21989
21990 case WLAN_HAL_DUMP_COMMAND_RSP:
21991 return WDI_HAL_DUMP_CMD_RESP;
21992 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21993 return WDI_SET_POWER_PARAMS_RESP;
21994#ifdef WLAN_FEATURE_VOWIFI_11R
21995 case WLAN_HAL_AGGR_ADD_TS_RSP:
21996 return WDI_AGGR_ADD_TS_RESP;
21997#endif
21998
21999#ifdef WLAN_FEATURE_GTK_OFFLOAD
22000 case WLAN_HAL_GTK_OFFLOAD_RSP:
22001 return WDI_GTK_OFFLOAD_RESP;
22002 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22003 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22004#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22005#ifdef WLAN_WAKEUP_EVENTS
22006 case WLAN_HAL_WAKE_REASON_IND:
22007 return WDI_HAL_WAKE_REASON_IND;
22008#endif // WLAN_WAKEUP_EVENTS
22009
22010 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22011 return WDI_SET_TM_LEVEL_RESP;
22012 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22013 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022014#ifdef WLAN_FEATURE_11AC
22015 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22016 return WDI_UPDATE_VHT_OP_MODE_RESP;
22017#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022018#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22019 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22020 return WDI_GET_ROAM_RSSI_RESP;
22021#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022022 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022023 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022024 }
22025
22026}/*HAL_2_WDI_RSP_TYPE*/
22027
22028
22029/*Convert WDI driver type into HAL driver type*/
22030WPT_STATIC WPT_INLINE tDriverType
22031WDI_2_HAL_DRV_TYPE
22032(
22033 WDI_DriverType wdiDriverType
22034)
22035{
Jeff Johnsone7245742012-09-05 17:12:55 -070022036 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022037 the chances of getting inlined*/
22038 switch( wdiDriverType )
22039 {
22040 case WDI_DRIVER_TYPE_PRODUCTION:
22041 return eDRIVER_TYPE_PRODUCTION;
22042 case WDI_DRIVER_TYPE_MFG:
22043 return eDRIVER_TYPE_MFG;
22044 case WDI_DRIVER_TYPE_DVT:
22045 return eDRIVER_TYPE_DVT;
22046 }
22047
Jeff Johnsone7245742012-09-05 17:12:55 -070022048 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022049}/*WDI_2_HAL_DRV_TYPE*/
22050
22051
22052/*Convert WDI stop reason into HAL stop reason*/
22053WPT_STATIC WPT_INLINE tHalStopType
22054WDI_2_HAL_STOP_REASON
22055(
22056 WDI_StopType wdiDriverType
22057)
22058{
Jeff Johnsone7245742012-09-05 17:12:55 -070022059 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 the chances of getting inlined*/
22061 switch( wdiDriverType )
22062 {
22063 case WDI_STOP_TYPE_SYS_RESET:
22064 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022065 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22066 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022067 case WDI_STOP_TYPE_RF_KILL:
22068 return HAL_STOP_TYPE_RF_KILL;
22069 }
22070
Jeff Johnsone7245742012-09-05 17:12:55 -070022071 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022072}/*WDI_2_HAL_STOP_REASON*/
22073
22074
22075/*Convert WDI scan mode type into HAL scan mode type*/
22076WPT_STATIC WPT_INLINE eHalSysMode
22077WDI_2_HAL_SCAN_MODE
22078(
22079 WDI_ScanMode wdiScanMode
22080)
22081{
Jeff Johnsone7245742012-09-05 17:12:55 -070022082 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022083 the chances of getting inlined*/
22084 switch( wdiScanMode )
22085 {
22086 case WDI_SCAN_MODE_NORMAL:
22087 return eHAL_SYS_MODE_NORMAL;
22088 case WDI_SCAN_MODE_LEARN:
22089 return eHAL_SYS_MODE_LEARN;
22090 case WDI_SCAN_MODE_SCAN:
22091 return eHAL_SYS_MODE_SCAN;
22092 case WDI_SCAN_MODE_PROMISC:
22093 return eHAL_SYS_MODE_PROMISC;
22094 case WDI_SCAN_MODE_SUSPEND_LINK:
22095 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022096 case WDI_SCAN_MODE_ROAM_SCAN:
22097 return eHAL_SYS_MODE_ROAM_SCAN;
22098 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22099 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022100 }
22101
Jeff Johnsone7245742012-09-05 17:12:55 -070022102 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022103}/*WDI_2_HAL_SCAN_MODE*/
22104
22105/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022106WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022107WDI_2_HAL_SEC_CH_OFFSET
22108(
22109 WDI_HTSecondaryChannelOffset wdiSecChOffset
22110)
22111{
Jeff Johnsone7245742012-09-05 17:12:55 -070022112 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 the chances of getting inlined*/
22114 switch( wdiSecChOffset )
22115 {
22116 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022117 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022118 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022121 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22122#ifdef WLAN_FEATURE_11AC
22123 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22124 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22125 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22126 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22127 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22128 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22129 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22130 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22131 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22132 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22133 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22134 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22135 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22136 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22137#endif
22138 default:
22139 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022140 }
22141
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022143}/*WDI_2_HAL_SEC_CH_OFFSET*/
22144
22145/*Convert WDI BSS type into HAL BSS type*/
22146WPT_STATIC WPT_INLINE tSirBssType
22147WDI_2_HAL_BSS_TYPE
22148(
22149 WDI_BssType wdiBSSType
22150)
22151{
Jeff Johnsone7245742012-09-05 17:12:55 -070022152 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022153 the chances of getting inlined*/
22154 switch( wdiBSSType )
22155 {
22156 case WDI_INFRASTRUCTURE_MODE:
22157 return eSIR_INFRASTRUCTURE_MODE;
22158 case WDI_INFRA_AP_MODE:
22159 return eSIR_INFRA_AP_MODE;
22160 case WDI_IBSS_MODE:
22161 return eSIR_IBSS_MODE;
22162 case WDI_BTAMP_STA_MODE:
22163 return eSIR_BTAMP_STA_MODE;
22164 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022165 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 case WDI_BSS_AUTO_MODE:
22167 return eSIR_AUTO_MODE;
22168 }
22169
Jeff Johnsone7245742012-09-05 17:12:55 -070022170 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022171}/*WDI_2_HAL_BSS_TYPE*/
22172
22173/*Convert WDI NW type into HAL NW type*/
22174WPT_STATIC WPT_INLINE tSirNwType
22175WDI_2_HAL_NW_TYPE
22176(
22177 WDI_NwType wdiNWType
22178)
22179{
Jeff Johnsone7245742012-09-05 17:12:55 -070022180 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 the chances of getting inlined*/
22182 switch( wdiNWType )
22183 {
22184 case WDI_11A_NW_TYPE:
22185 return eSIR_11A_NW_TYPE;
22186 case WDI_11B_NW_TYPE:
22187 return eSIR_11B_NW_TYPE;
22188 case WDI_11G_NW_TYPE:
22189 return eSIR_11G_NW_TYPE;
22190 case WDI_11N_NW_TYPE:
22191 return eSIR_11N_NW_TYPE;
22192 }
22193
Jeff Johnsone7245742012-09-05 17:12:55 -070022194 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022195}/*WDI_2_HAL_NW_TYPE*/
22196
22197/*Convert WDI chanel bonding type into HAL cb type*/
22198WPT_STATIC WPT_INLINE ePhyChanBondState
22199WDI_2_HAL_CB_STATE
22200(
22201 WDI_PhyChanBondState wdiCbState
22202)
22203{
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 the chances of getting inlined*/
22206 switch ( wdiCbState )
22207 {
22208 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22209 return PHY_SINGLE_CHANNEL_CENTERED;
22210 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22211 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22212 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22213 return PHY_DOUBLE_CHANNEL_CENTERED;
22214 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22215 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022216#ifdef WLAN_FEATURE_11AC
22217 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22218 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22219 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22220 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22221 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22222 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22223 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22224 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22225 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22226 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22227 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22228 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22229 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22230 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22231#endif
22232 case WDI_MAX_CB_STATE:
22233 default:
22234 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022235 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022236
Jeff Johnson295189b2012-06-20 16:38:30 -070022237 return PHY_CHANNEL_BONDING_STATE_MAX;
22238}/*WDI_2_HAL_CB_STATE*/
22239
22240/*Convert WDI chanel bonding type into HAL cb type*/
22241WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22242WDI_2_HAL_HT_OPER_MODE
22243(
22244 WDI_HTOperatingMode wdiHTOperMode
22245)
22246{
Jeff Johnsone7245742012-09-05 17:12:55 -070022247 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022248 the chances of getting inlined*/
22249 switch ( wdiHTOperMode )
22250 {
22251 case WDI_HT_OP_MODE_PURE:
22252 return eSIR_HT_OP_MODE_PURE;
22253 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22254 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22255 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22256 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22257 case WDI_HT_OP_MODE_MIXED:
22258 return eSIR_HT_OP_MODE_MIXED;
22259 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022260
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 return eSIR_HT_OP_MODE_MAX;
22262}/*WDI_2_HAL_HT_OPER_MODE*/
22263
22264/*Convert WDI mimo PS type into HAL mimo PS type*/
22265WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22266WDI_2_HAL_MIMO_PS
22267(
22268 WDI_HTMIMOPowerSaveState wdiHTOperMode
22269)
22270{
Jeff Johnsone7245742012-09-05 17:12:55 -070022271 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 the chances of getting inlined*/
22273 switch ( wdiHTOperMode )
22274 {
22275 case WDI_HT_MIMO_PS_STATIC:
22276 return eSIR_HT_MIMO_PS_STATIC;
22277 case WDI_HT_MIMO_PS_DYNAMIC:
22278 return eSIR_HT_MIMO_PS_DYNAMIC;
22279 case WDI_HT_MIMO_PS_NA:
22280 return eSIR_HT_MIMO_PS_NA;
22281 case WDI_HT_MIMO_PS_NO_LIMIT:
22282 return eSIR_HT_MIMO_PS_NO_LIMIT;
22283 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022284
Jeff Johnson295189b2012-06-20 16:38:30 -070022285 return eSIR_HT_MIMO_PS_MAX;
22286}/*WDI_2_HAL_MIMO_PS*/
22287
22288/*Convert WDI ENC type into HAL ENC type*/
22289WPT_STATIC WPT_INLINE tAniEdType
22290WDI_2_HAL_ENC_TYPE
22291(
22292 WDI_EncryptType wdiEncType
22293)
22294{
Jeff Johnsone7245742012-09-05 17:12:55 -070022295 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 the chances of getting inlined*/
22297 switch ( wdiEncType )
22298 {
22299 case WDI_ENCR_NONE:
22300 return eSIR_ED_NONE;
22301
22302 case WDI_ENCR_WEP40:
22303 return eSIR_ED_WEP40;
22304
22305 case WDI_ENCR_WEP104:
22306 return eSIR_ED_WEP104;
22307
22308 case WDI_ENCR_TKIP:
22309 return eSIR_ED_TKIP;
22310
22311 case WDI_ENCR_CCMP:
22312 return eSIR_ED_CCMP;
22313
22314 case WDI_ENCR_AES_128_CMAC:
22315 return eSIR_ED_AES_128_CMAC;
22316#if defined(FEATURE_WLAN_WAPI)
22317 case WDI_ENCR_WPI:
22318 return eSIR_ED_WPI;
22319#endif
22320 default:
22321 return eSIR_ED_NOT_IMPLEMENTED;
22322 }
22323
22324}/*WDI_2_HAL_ENC_TYPE*/
22325
22326/*Convert WDI WEP type into HAL WEP type*/
22327WPT_STATIC WPT_INLINE tAniWepType
22328WDI_2_HAL_WEP_TYPE
22329(
22330 WDI_WepType wdiWEPType
22331)
22332{
Jeff Johnsone7245742012-09-05 17:12:55 -070022333 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022334 the chances of getting inlined*/
22335 switch ( wdiWEPType )
22336 {
22337 case WDI_WEP_STATIC:
22338 return eSIR_WEP_STATIC;
22339
22340 case WDI_WEP_DYNAMIC:
22341 return eSIR_WEP_DYNAMIC;
22342 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022343
Jeff Johnson295189b2012-06-20 16:38:30 -070022344 return eSIR_WEP_MAX;
22345}/*WDI_2_HAL_WEP_TYPE*/
22346
22347WPT_STATIC WPT_INLINE tSirLinkState
22348WDI_2_HAL_LINK_STATE
22349(
22350 WDI_LinkStateType wdiLinkState
22351)
22352{
Jeff Johnsone7245742012-09-05 17:12:55 -070022353 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 the chances of getting inlined*/
22355 switch ( wdiLinkState )
22356 {
22357 case WDI_LINK_IDLE_STATE:
22358 return eSIR_LINK_IDLE_STATE;
22359
22360 case WDI_LINK_PREASSOC_STATE:
22361 return eSIR_LINK_PREASSOC_STATE;
22362
22363 case WDI_LINK_POSTASSOC_STATE:
22364 return eSIR_LINK_POSTASSOC_STATE;
22365
22366 case WDI_LINK_AP_STATE:
22367 return eSIR_LINK_AP_STATE;
22368
22369 case WDI_LINK_IBSS_STATE:
22370 return eSIR_LINK_IBSS_STATE;
22371
22372 case WDI_LINK_BTAMP_PREASSOC_STATE:
22373 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22374
22375 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22376 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22377
22378 case WDI_LINK_BTAMP_AP_STATE:
22379 return eSIR_LINK_BTAMP_AP_STATE;
22380
22381 case WDI_LINK_BTAMP_STA_STATE:
22382 return eSIR_LINK_BTAMP_STA_STATE;
22383
22384 case WDI_LINK_LEARN_STATE:
22385 return eSIR_LINK_LEARN_STATE;
22386
22387 case WDI_LINK_SCAN_STATE:
22388 return eSIR_LINK_SCAN_STATE;
22389
22390 case WDI_LINK_FINISH_SCAN_STATE:
22391 return eSIR_LINK_FINISH_SCAN_STATE;
22392
22393 case WDI_LINK_INIT_CAL_STATE:
22394 return eSIR_LINK_INIT_CAL_STATE;
22395
22396 case WDI_LINK_FINISH_CAL_STATE:
22397 return eSIR_LINK_FINISH_CAL_STATE;
22398
Jeff Johnson295189b2012-06-20 16:38:30 -070022399 case WDI_LINK_LISTEN_STATE:
22400 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022401
22402 default:
22403 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022404 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022405}
22406
Jeff Johnsone7245742012-09-05 17:12:55 -070022407/*Translate a STA Context from WDI into HAL*/
22408WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022409void
22410WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022411(
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 tConfigStaParams* phalConfigSta,
22413 WDI_ConfigStaReqInfoType* pwdiConfigSta
22414)
22415{
22416 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022417#ifdef WLAN_FEATURE_11AC
22418 /* Get the Version 1 Handler */
22419 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22420 if (WDI_getFwWlanFeatCaps(DOT11AC))
22421 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022422 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022423 }
22424#endif
22425 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022426 the chances of getting inlined*/
22427
Jeff Johnsone7245742012-09-05 17:12:55 -070022428 wpalMemoryCopy(phalConfigSta->bssId,
22429 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22430
22431 wpalMemoryCopy(phalConfigSta->staMac,
22432 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022433
22434 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22435 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22436 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22437 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22438 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22439 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22440 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22441 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22442 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22443 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22444 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22445 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22446 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22447 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22448 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22449 phalConfigSta->action = pwdiConfigSta->wdiAction;
22450 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22451 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22452 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22453 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22454 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22455 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22456 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022457
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22459
Jeff Johnsone7245742012-09-05 17:12:55 -070022460 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022461 pwdiConfigSta->wdiSupportedRates.opRateMode;
22462 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22463 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022464 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22466 }
22467 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22468 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22471 }
22472 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22473 {
22474 phalConfigSta->supportedRates.aniLegacyRates[i] =
22475 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22476 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22479 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22480 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22483 }
22484 phalConfigSta->supportedRates.rxHighestDataRate =
22485 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22486
Jeff Johnsone7245742012-09-05 17:12:55 -070022487#ifdef WLAN_FEATURE_11AC
22488 if(phalConfigSta_V1 != NULL)
22489 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022490 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22491 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22492 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22493 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022494 }
22495#endif
22496
Jeff Johnson295189b2012-06-20 16:38:30 -070022497 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022498
Jeff Johnsone7245742012-09-05 17:12:55 -070022499#ifdef WLAN_FEATURE_11AC
22500 if(phalConfigSta_V1 != NULL)
22501 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022502 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22503 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022504 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022505 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22506 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22507
Jeff Johnsone7245742012-09-05 17:12:55 -070022508 }
22509#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022510}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022511
22512/*Translate a Rate set info from WDI into HAL*/
22513WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022514WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022515(
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 tSirMacRateSet* pHalRateSet,
22517 WDI_RateSet* pwdiRateSet
22518)
22519{
Jeff Johnsone7245742012-09-05 17:12:55 -070022520 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22522
22523 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22524 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22525
22526 for ( i = 0; i < pHalRateSet->numRates; i++ )
22527 {
22528 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22529 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022530
Jeff Johnson295189b2012-06-20 16:38:30 -070022531}/*WDI_CopyWDIRateSetToHALRateSet*/
22532
22533
22534/*Translate an EDCA Parameter Record from WDI into HAL*/
22535WPT_STATIC WPT_INLINE void
22536WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022537(
Jeff Johnson295189b2012-06-20 16:38:30 -070022538 tSirMacEdcaParamRecord* phalEdcaParam,
22539 WDI_EdcaParamRecord* pWDIEdcaParam
22540)
22541{
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 the chances of getting inlined*/
22544
22545 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22546 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22547 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22548 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22549
22550 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22551 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22552 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22553}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22554
22555
22556/*Copy a management frame header from WDI fmt into HAL fmt*/
22557WPT_STATIC WPT_INLINE void
22558WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22559(
22560 tSirMacMgmtHdr* pmacMgmtHdr,
22561 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22562)
22563{
22564 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22565 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22566 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22567 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22568 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22569 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22570 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22571 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22572 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22573 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22574 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22575
22576 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22577 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22578
Jeff Johnsone7245742012-09-05 17:12:55 -070022579 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022580 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022581 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022582 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022583 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 pwdiMacMgmtHdr->bssId, 6);
22585
22586 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22587 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22588 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22589
22590}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22591
22592
22593/*Copy config bss parameters from WDI fmt into HAL fmt*/
22594WPT_STATIC WPT_INLINE void
22595WDI_CopyWDIConfigBSSToHALConfigBSS
22596(
22597 tConfigBssParams* phalConfigBSS,
22598 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22599)
22600{
22601
22602 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022603#ifdef WLAN_FEATURE_11AC
22604 /* Get the Version 1 Handler */
22605 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22606 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022607 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022608#endif
22609
Jeff Johnson295189b2012-06-20 16:38:30 -070022610 wpalMemoryCopy( phalConfigBSS->bssId,
22611 pwdiConfigBSS->macBSSID,
22612 WDI_MAC_ADDR_LEN);
22613
22614#ifdef HAL_SELF_STA_PER_BSS
22615 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22616 pwdiConfigBSS->macSelfAddr,
22617 WDI_MAC_ADDR_LEN);
22618#endif
22619
22620 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22621
22622 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22623 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22624
Jeff Johnsone7245742012-09-05 17:12:55 -070022625 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022626 pwdiConfigBSS->ucShortSlotTimeSupported;
22627 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22628 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22629 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22630 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22631 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022632 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022633 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22634 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22635 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22636 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22637 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22638 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22639 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22640 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22641 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22642 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22643 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22644
Jeff Johnsone7245742012-09-05 17:12:55 -070022645 phalConfigBSS->htOperMode =
22646 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022647
22648 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22649 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22650 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22651 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22652
22653#ifdef WLAN_FEATURE_VOWIFI
22654 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22655#endif
22656
22657 /*! Used 32 as magic number because that is how the ssid is declared inside the
22658 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022659 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022660 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22661 pwdiConfigBSS->wdiSSID.ucLength : 32;
22662 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022663 pwdiConfigBSS->wdiSSID.sSSID,
22664 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022665
22666 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22667 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022668
Jeff Johnson295189b2012-06-20 16:38:30 -070022669 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22670 &pwdiConfigBSS->wdiRateSet);
22671
22672 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22673
22674 if(phalConfigBSS->edcaParamsValid)
22675 {
22676 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22677 &pwdiConfigBSS->wdiBEEDCAParams);
22678 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22679 &pwdiConfigBSS->wdiBKEDCAParams);
22680 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22681 &pwdiConfigBSS->wdiVIEDCAParams);
22682 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22683 &pwdiConfigBSS->wdiVOEDCAParams);
22684 }
22685
Jeff Johnsone7245742012-09-05 17:12:55 -070022686 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022687
22688 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22689
22690#ifdef WLAN_FEATURE_VOWIFI_11R
22691
Jeff Johnsone7245742012-09-05 17:12:55 -070022692 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022694
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 if( phalConfigBSS->extSetStaKeyParamValid )
22696 {
22697 /*-----------------------------------------------------------------------
22698 Copy the STA Key parameters into the HAL message
22699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022700 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022701 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22702
Jeff Johnsone7245742012-09-05 17:12:55 -070022703 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022704 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22705
22706 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22707
22708 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22709
22710 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22711
Jeff Johnson295189b2012-06-20 16:38:30 -070022712 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22713 keyIndex++)
22714 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22717 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22718 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22719 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22720 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22721 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022724 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022725 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022726 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022727 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22728 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022729 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022730 WDI_MAX_KEY_LENGTH);
22731 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022732 }
22733 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22734 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022735 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022736 sizeof(phalConfigBSS->extSetStaKeyParam) );
22737 }
22738
22739#endif /*WLAN_FEATURE_VOWIFI_11R*/
22740
Jeff Johnsone7245742012-09-05 17:12:55 -070022741#ifdef WLAN_FEATURE_11AC
22742 if(phalConfigBSS_V1 != NULL)
22743 {
22744 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22745 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22746 }
22747#endif
22748
Jeff Johnson295189b2012-06-20 16:38:30 -070022749}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22750
22751
Jeff Johnsone7245742012-09-05 17:12:55 -070022752/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 pointed to by user data */
22754WPT_STATIC WPT_INLINE void
22755WDI_ExtractRequestCBFromEvent
22756(
22757 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022758 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 void** ppUserData
22760)
22761{
22762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22763 switch ( pEvent->wdiRequest )
22764 {
22765 case WDI_START_REQ:
22766 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22767 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22768 break;
22769 case WDI_STOP_REQ:
22770 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22771 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22772 break;
22773 case WDI_INIT_SCAN_REQ:
22774 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22775 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22776 break;
22777 case WDI_START_SCAN_REQ:
22778 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22779 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22780 break;
22781 case WDI_END_SCAN_REQ:
22782 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22783 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22784 break;
22785 case WDI_FINISH_SCAN_REQ:
22786 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22787 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22788 break;
22789 case WDI_JOIN_REQ:
22790 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22791 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22792 break;
22793 case WDI_CONFIG_BSS_REQ:
22794 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22795 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22796 break;
22797 case WDI_DEL_BSS_REQ:
22798 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22799 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22800 break;
22801 case WDI_POST_ASSOC_REQ:
22802 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22803 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22804 break;
22805 case WDI_DEL_STA_REQ:
22806 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22807 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22808 break;
22809 case WDI_DEL_STA_SELF_REQ:
22810 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22811 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22812 break;
22813
22814 case WDI_SET_BSS_KEY_REQ:
22815 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22816 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22817 break;
22818 case WDI_RMV_BSS_KEY_REQ:
22819 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22820 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22821 break;
22822 case WDI_SET_STA_KEY_REQ:
22823 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22824 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22825 break;
22826 case WDI_RMV_STA_KEY_REQ:
22827 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22828 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22829 break;
22830 case WDI_ADD_TS_REQ:
22831 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22832 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22833 break;
22834 case WDI_DEL_TS_REQ:
22835 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22836 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22837 break;
22838 case WDI_UPD_EDCA_PRMS_REQ:
22839 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22840 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22841 break;
22842 case WDI_ADD_BA_SESSION_REQ:
22843 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22844 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22845 break;
22846 case WDI_DEL_BA_REQ:
22847 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22848 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22849 break;
22850#ifdef FEATURE_WLAN_CCX
22851 case WDI_TSM_STATS_REQ:
22852 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22853 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22854 break;
22855#endif
22856 case WDI_CH_SWITCH_REQ:
22857 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22858 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22859 break;
22860 case WDI_CONFIG_STA_REQ:
22861 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22862 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22863 break;
22864 case WDI_SET_LINK_ST_REQ:
22865 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22866 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22867 break;
22868 case WDI_GET_STATS_REQ:
22869 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22870 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22871 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022872#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22873 case WDI_GET_ROAM_RSSI_REQ:
22874 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22875 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
22876 break;
22877#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022878 case WDI_UPDATE_CFG_REQ:
22879 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22880 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22881 break;
22882 case WDI_ADD_BA_REQ:
22883 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22884 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22885 break;
22886 case WDI_TRIGGER_BA_REQ:
22887 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22888 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22889 break;
22890 case WDI_UPD_BCON_PRMS_REQ:
22891 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22892 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22893 break;
22894 case WDI_SND_BCON_REQ:
22895 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22896 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22897 break;
22898 case WDI_ENTER_BMPS_REQ:
22899 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22900 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22901 break;
22902 case WDI_EXIT_BMPS_REQ:
22903 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22904 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22905 break;
22906 case WDI_ENTER_UAPSD_REQ:
22907 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22908 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22909 break;
22910 case WDI_UPDATE_UAPSD_PARAM_REQ:
22911 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22912 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22913 break;
22914 case WDI_CONFIGURE_RXP_FILTER_REQ:
22915 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22916 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22917 break;
22918 case WDI_SET_BEACON_FILTER_REQ:
22919 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22920 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22921 break;
22922 case WDI_REM_BEACON_FILTER_REQ:
22923 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22924 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022925 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022926 case WDI_SET_RSSI_THRESHOLDS_REQ:
22927 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22928 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22929 break;
22930 case WDI_HOST_OFFLOAD_REQ:
22931 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22932 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22933 break;
22934 case WDI_WOWL_ADD_BC_PTRN_REQ:
22935 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22936 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22937 break;
22938 case WDI_WOWL_DEL_BC_PTRN_REQ:
22939 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22940 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22941 break;
22942 case WDI_WOWL_ENTER_REQ:
22943 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22944 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22945 break;
22946 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22947 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22948 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22949 break;
22950 case WDI_FLUSH_AC_REQ:
22951 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22952 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22953 break;
22954 case WDI_BTAMP_EVENT_REQ:
22955 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22956 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22957 break;
22958 case WDI_KEEP_ALIVE_REQ:
22959 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22960 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22961 break;
22962 case WDI_SET_TX_PER_TRACKING_REQ:
22963 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22964 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080022965 break;
22966 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
22967 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22968 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
22969 break;
22970 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22971 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22972 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
22973 break;
22974 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22975 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22976 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
22977 break;
22978
Jeff Johnson295189b2012-06-20 16:38:30 -070022979 default:
22980 *ppfnReqCB = NULL;
22981 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022982 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022983 }
22984}/*WDI_ExtractRequestCBFromEvent*/
22985
22986
22987/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022988 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022989 frame xtl is enabled for a particular STA.
22990
22991 WDI_PostAssocReq must have been called.
22992
Jeff Johnsone7245742012-09-05 17:12:55 -070022993 @param uSTAIdx: STA index
22994
Jeff Johnson295189b2012-06-20 16:38:30 -070022995 @see WDI_PostAssocReq
22996 @return Result of the function call
22997*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022998wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022999WDI_IsHwFrameTxTranslationCapable
23000(
23001 wpt_uint8 uSTAIdx
23002)
23003{
Jeff Johnsone7245742012-09-05 17:12:55 -070023004 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023005 uma value*/
23006 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023007 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023008 ------------------------------------------------------------------------*/
23009 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23010 {
23011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23012 "WDI API call before module is initialized - Fail request");
23013
Jeff Johnsone7245742012-09-05 17:12:55 -070023014 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023015 }
23016
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023017#ifdef WLAN_SOFTAP_VSTA_FEATURE
23018 if (IS_VSTA_IDX(uSTAIdx))
23019 {
23020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23021 "STA %d is a Virtual STA, "
23022 "HW frame translation disabled", uSTAIdx);
23023 return eWLAN_PAL_FALSE;
23024 }
23025#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023026
Jeff Johnson295189b2012-06-20 16:38:30 -070023027 return gWDICb.bFrameTransEnabled;
23028}/*WDI_IsHwFrameTxTranslationCapable*/
23029
23030#ifdef FEATURE_WLAN_SCAN_PNO
23031/**
23032 @brief WDI_SetPreferredNetworkList
23033
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023036
Jeff Johnson295189b2012-06-20 16:38:30 -070023037 wdiPNOScanCb: callback for passing back the response
23038 of the Set PNO operation received from the
23039 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023040
Jeff Johnson295189b2012-06-20 16:38:30 -070023041 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023042 callback
23043
Jeff Johnson295189b2012-06-20 16:38:30 -070023044 @return Result of the function call
23045*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023046WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023047WDI_SetPreferredNetworkReq
23048(
23049 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23050 WDI_PNOScanCb wdiPNOScanCb,
23051 void* pUserData
23052)
23053{
23054 WDI_EventInfoType wdiEventData = {{0}};
23055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23056
23057 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023058 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023059 ------------------------------------------------------------------------*/
23060 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23061 {
23062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23063 "WDI API call before module is initialized - Fail request");
23064
Jeff Johnsone7245742012-09-05 17:12:55 -070023065 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 }
23067
23068 /*------------------------------------------------------------------------
23069 Fill in Event data and post to the Main FSM
23070 ------------------------------------------------------------------------*/
23071 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023072 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023073 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023075 wdiEventData.pUserData = pUserData;
23076
23077 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23078}
23079
23080
23081/**
23082 @brief WDI_SetRssiFilterReq
23083
Jeff Johnsone7245742012-09-05 17:12:55 -070023084 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023086
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 wdiRssiFilterCb: callback for passing back the response
23088 of the Set RSSI Filter operation received from the
23089 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023090
Jeff Johnson295189b2012-06-20 16:38:30 -070023091 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023092 callback
23093
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 @return Result of the function call
23095*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023096WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023097WDI_SetRssiFilterReq
23098(
23099 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23100 WDI_RssiFilterCb wdiRssiFilterCb,
23101 void* pUserData
23102)
23103{
23104 WDI_EventInfoType wdiEventData = {{0}};
23105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23106
23107 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023108 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023109 ------------------------------------------------------------------------*/
23110 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23111 {
23112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23113 "WDI API call before module is initialized - Fail request");
23114
Jeff Johnsone7245742012-09-05 17:12:55 -070023115 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023116 }
23117
23118 /*------------------------------------------------------------------------
23119 Fill in Event data and post to the Main FSM
23120 ------------------------------------------------------------------------*/
23121 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023122 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023123 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023124 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023125 wdiEventData.pUserData = pUserData;
23126
23127 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23128}/*WDI_SetRssiFilterReq*/
23129
23130/**
23131 @brief WDI_UpdateScanParamsReq
23132
Jeff Johnsone7245742012-09-05 17:12:55 -070023133 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023134 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023135
Jeff Johnson295189b2012-06-20 16:38:30 -070023136 wdiUpdateScanParamsCb: callback for passing back the response
23137 of the Set PNO operation received from the
23138 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023139
Jeff Johnson295189b2012-06-20 16:38:30 -070023140 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023141 callback
23142
Jeff Johnson295189b2012-06-20 16:38:30 -070023143 @return Result of the function call
23144*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023146WDI_UpdateScanParamsReq
23147(
23148 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23149 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23150 void* pUserData
23151)
23152{
23153 WDI_EventInfoType wdiEventData = {{0}};
23154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23155
23156 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023157 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023158 ------------------------------------------------------------------------*/
23159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23160 {
23161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23162 "WDI API call before module is initialized - Fail request");
23163
Jeff Johnsone7245742012-09-05 17:12:55 -070023164 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023165 }
23166
23167 /*------------------------------------------------------------------------
23168 Fill in Event data and post to the Main FSM
23169 ------------------------------------------------------------------------*/
23170 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023171 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023172 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023173 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 wdiEventData.pUserData = pUserData;
23175
23176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23177}
23178
23179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023180 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023181 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023182
23183 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023184 pwdiPNOScanReqParams: pointer to the info received
23185 from upper layers
23186 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023187 and its size
23188
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 @return Result of the function call
23190*/
23191
23192WDI_Status
23193WDI_PackPreferredNetworkList
23194(
23195 WDI_ControlBlockType* pWDICtx,
23196 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23197 wpt_uint8** ppSendBuffer,
23198 wpt_uint16* pSize
23199)
23200{
Jeff Johnsone7245742012-09-05 17:12:55 -070023201 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023202 wpt_uint16 usDataOffset = 0;
23203 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023204 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023205 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 /*-----------------------------------------------------------------------
23207 Get message buffer
23208 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023210 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023211 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023212 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 {
23214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23215 "Unable to get send buffer in Set PNO req %x ",
23216 pwdiPNOScanReqParams);
23217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023219 }
23220
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023221 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23222
Jeff Johnson295189b2012-06-20 16:38:30 -070023223 /*-------------------------------------------------------------------------
23224 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23225 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023226 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023227 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023228 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23230
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023231 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023232 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
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;
23236
23237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023238 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023239 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23240 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23241 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23242
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023243 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023244 {
23245 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023246 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023247 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23248
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023249 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023250 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023251 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023252
23253 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023254 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023255 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023256
23257 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023258 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023259 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023260
Jeff Johnsone7245742012-09-05 17:12:55 -070023261 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023262 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023263 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023264 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23265 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23266 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23267 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023268
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023269 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023271 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023272
23273 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023274 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023275 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23276
23277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023278 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023279 pPrefNetwListParams->aNetworks[i].ssId.length,
23280 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023281 }
23282
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023283 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023284 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023285 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23286 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23287 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23288
23289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023290 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023291 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023292 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23293 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23294
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023295 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023296 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023297 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023298 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023299 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023300 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23301 }
23302
23303 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023304 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023305 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23306 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23307 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023308 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023309
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023310 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023311 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023312 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023313
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023314 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23316 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23317 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023318 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023319
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023320 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023321 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023322 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023323
23324 /*Set the output values*/
23325 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023327
23328 return WDI_STATUS_SUCCESS;
23329}/*WDI_PackPreferredNetworkList*/
23330
23331/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023332 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023333 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023334
23335 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023336 pwdiPNOScanReqParams: pointer to the info received
23337 from upper layers
23338 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023339 and its size
23340
Jeff Johnson295189b2012-06-20 16:38:30 -070023341 @return Result of the function call
23342*/
23343
23344WDI_Status
23345WDI_PackPreferredNetworkListNew
23346(
23347 WDI_ControlBlockType* pWDICtx,
23348 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23349 wpt_uint8** ppSendBuffer,
23350 wpt_uint16* pSize
23351)
23352{
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 wpt_uint16 usDataOffset = 0;
23355 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023356 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023357 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023358
23359 /*-----------------------------------------------------------------------
23360 Get message buffer
23361 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023362 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023363 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023365 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023366 {
23367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23368 "Unable to get send buffer in Set PNO req %x ",
23369 pwdiPNOScanReqParams);
23370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023372 }
23373
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023374 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23375
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 /*-------------------------------------------------------------------------
23377 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23378 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023379 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023381 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23383
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023384 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023385 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023386 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
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;
23389
23390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023391 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023392 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23393 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23394 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23395
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023396 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023397 {
23398 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023399 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023400 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23401
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023402 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023403 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023404 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023405
23406 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023407 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023408 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023409
23410 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023411 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023412 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023413
23414 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023415 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023416 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023417
Jeff Johnsone7245742012-09-05 17:12:55 -070023418 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023419 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023420 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023421 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23422
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023423 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023424 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023425 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023426
23427 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023428 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023429 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23430
23431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023432 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023433 pPrefNetwListParams->aNetworks[i].ssId.length,
23434 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023435 }
23436
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023437 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23440 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23441 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23442
23443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023444 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023445 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023446 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23447 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23448
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023449 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023451 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023453 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023454 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23455 }
23456
23457 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023458 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023459 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23460 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23461 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023462 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023463
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023464 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023465 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023466 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023467
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023468 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023469 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23470 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23471 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023472 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023473
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023474 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023475 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023476 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023477
Jeff Johnson295189b2012-06-20 16:38:30 -070023478
23479 /*Set the output values*/
23480 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023481 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023482
23483 return WDI_STATUS_SUCCESS;
23484}/*WDI_PackPreferredNetworkListNew*/
23485
23486/**
23487 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023488
23489 @param pWDICtx: pointer to the WLAN DAL context
23490 pEventData: pointer to the event information structure
23491
Jeff Johnson295189b2012-06-20 16:38:30 -070023492 @return Result of the function call
23493*/
23494WDI_Status
23495WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023496(
Jeff Johnson295189b2012-06-20 16:38:30 -070023497 WDI_ControlBlockType* pWDICtx,
23498 WDI_EventInfoType* pEventData
23499)
23500{
23501 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23502 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023503 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023504 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023505 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023506
23507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023509 -------------------------------------------------------------------------*/
23510 if (( NULL == pEventData ) ||
23511 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23512 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23513 {
23514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023518 }
23519
23520 /*-------------------------------------------------------------------------
23521 Pack the PNO request structure based on version
23522 -------------------------------------------------------------------------*/
23523 if ( pWDICtx->wdiPNOVersion > 0 )
23524 {
23525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023526 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023527 pWDICtx->wdiPNOVersion);
23528
23529 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23530 &pSendBuffer, &usSendSize);
23531 }
23532 else
23533 {
23534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023535 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023536 pWDICtx->wdiPNOVersion);
23537
23538 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23539 &pSendBuffer, &usSendSize);
23540 }
23541
23542 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23543 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23544 {
23545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023546 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023548 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023549 }
23550
23551 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023552 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023553
23554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023555 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23558 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023559}
23560
23561/**
23562 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023563
23564 @param pWDICtx: pointer to the WLAN DAL context
23565 pEventData: pointer to the event information structure
23566
Jeff Johnson295189b2012-06-20 16:38:30 -070023567 @see
23568 @return Result of the function call
23569*/
23570WDI_Status
23571WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023572(
Jeff Johnson295189b2012-06-20 16:38:30 -070023573 WDI_ControlBlockType* pWDICtx,
23574 WDI_EventInfoType* pEventData
23575)
23576{
23577 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23578 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 wpt_uint16 usDataOffset = 0;
23581 wpt_uint16 usSendSize = 0;
23582 wpt_uint8 ucRssiThreshold;
23583
23584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023586 -------------------------------------------------------------------------*/
23587 if (( NULL == pEventData ) ||
23588 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23589 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23590 {
23591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023595 }
23596
23597 /*-----------------------------------------------------------------------
23598 Get message buffer
23599 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023600 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023601 sizeof(ucRssiThreshold),
23602 &pSendBuffer, &usDataOffset, &usSendSize))||
23603 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
23604 {
23605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23606 "Unable to get send buffer in Set PNO req %x %x %x",
23607 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023610 }
23611
23612 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23613
Jeff Johnsone7245742012-09-05 17:12:55 -070023614 wpalMemoryCopy( pSendBuffer+usDataOffset,
23615 &ucRssiThreshold,
23616 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023617
23618 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023620
23621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023622 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023623 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023624 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23625 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023626}
23627
23628
23629/**
23630 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070023631
23632 @param pWDICtx: pointer to the WLAN DAL context
23633 pEventData: pointer to the event information structure
23634
Jeff Johnson295189b2012-06-20 16:38:30 -070023635 @see
23636 @return Result of the function call
23637*/
23638WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023639WDI_PackUpdateScanParamsReq
23640(
23641 WDI_ControlBlockType* pWDICtx,
23642 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23643 wpt_uint8** ppSendBuffer,
23644 wpt_uint16* pSize
23645)
23646{
23647 wpt_uint8* pSendBuffer = NULL;
23648 wpt_uint16 usDataOffset = 0;
23649 wpt_uint16 usSendSize = 0;
23650 tUpdateScanParams updateScanParams = {0};
23651
23652
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023654 "Begin WDI Update Scan Parameters Old Style Params");
23655 /*-----------------------------------------------------------------------
23656 Get message buffer
23657 -----------------------------------------------------------------------*/
23658 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23659 sizeof(updateScanParams),
23660 &pSendBuffer, &usDataOffset, &usSendSize))||
23661 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23662 {
23663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23664 "Unable to get send buffer in Update Scan Params req %x",
23665 pwdiUpdateScanParams);
23666 WDI_ASSERT(0);
23667 return WDI_STATUS_E_FAILURE;
23668 }
23669
23670 //
23671 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23672 //
23673
23674 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23675 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23676
23677 updateScanParams.ucChannelCount =
23678 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23679 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23680 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23681 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
23682
23683 wpalMemoryCopy( updateScanParams.aChannels,
23684 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23685 updateScanParams.ucChannelCount);
23686
23687
23688 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23689 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23690 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23691 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23692 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23693
23694 wpalMemoryCopy( pSendBuffer+usDataOffset,
23695 &updateScanParams,
23696 sizeof(updateScanParams));
23697
23698 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23699 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23700
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023702 "End Update Scan Parameters Old Style");
23703
23704 /*Set the output values*/
23705 *ppSendBuffer = pSendBuffer;
23706 *pSize = usSendSize;
23707
23708 return WDI_STATUS_SUCCESS;
23709}
23710
23711/**
23712 @brief Process Update Scan Params function
23713
23714 @param pWDICtx: pointer to the WLAN DAL context
23715 pEventData: pointer to the event information structure
23716
23717 @see
23718 @return Result of the function call
23719*/
23720WDI_Status
23721WDI_PackUpdateScanParamsReqEx
23722(
23723 WDI_ControlBlockType* pWDICtx,
23724 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23725 wpt_uint8** ppSendBuffer,
23726 wpt_uint16* pSize
23727)
23728{
23729 wpt_uint8* pSendBuffer = NULL;
23730 wpt_uint16 usDataOffset = 0;
23731 wpt_uint16 usSendSize = 0;
23732 tUpdateScanParamsEx updateScanParams = {0};
23733
23734
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023735 /*-----------------------------------------------------------------------
23736 Get message buffer
23737 -----------------------------------------------------------------------*/
23738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23739 sizeof(updateScanParams),
23740 &pSendBuffer, &usDataOffset, &usSendSize))||
23741 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23742 {
23743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23744 "Unable to get send buffer in Update Scan Params Ex req %x",
23745 pwdiUpdateScanParams);
23746 WDI_ASSERT(0);
23747 return WDI_STATUS_E_FAILURE;
23748 }
23749
23750 //
23751 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23752 //
23753
23754 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23755 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23756
23757 updateScanParams.ucChannelCount =
23758 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23759 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23760 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23761 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23762
23763 wpalMemoryCopy( updateScanParams.aChannels,
23764 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23765 updateScanParams.ucChannelCount);
23766
23767
23768 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23769 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23770 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23771 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23772 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23773
23774 wpalMemoryCopy( pSendBuffer+usDataOffset,
23775 &updateScanParams,
23776 sizeof(updateScanParams));
23777
23778 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23779 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23780
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023781 /*Set the output values*/
23782 *ppSendBuffer = pSendBuffer;
23783 *pSize = usSendSize;
23784
23785 return WDI_STATUS_SUCCESS;
23786}
23787
23788/**
23789 @brief Process Update Scan Params function
23790
23791 @param pWDICtx: pointer to the WLAN DAL context
23792 pEventData: pointer to the event information structure
23793
23794 @see
23795 @return Result of the function call
23796*/
23797WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023798WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023799(
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 WDI_ControlBlockType* pWDICtx,
23801 WDI_EventInfoType* pEventData
23802)
23803{
23804 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23805 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023806 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023808 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023809
23810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023812 -------------------------------------------------------------------------*/
23813 if (( NULL == pEventData ) ||
23814 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23815 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23816 {
23817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023821 }
23822
23823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23824 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023825
23826 //
23827 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23828 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023829 if ( pWDICtx->wlanVersion.revision < 1 )
23830 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023831 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023832 &pSendBuffer, &usSendSize);
23833 }
23834 else
23835 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023836 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23837 &pSendBuffer, &usSendSize);
23838 }
23839
23840 if(WDI_STATUS_SUCCESS != wdiStatus)
23841 {
23842 //memory allocation failed
23843 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023844 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023845
Jeff Johnson295189b2012-06-20 16:38:30 -070023846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023848 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023849 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023850 wdiUpdateScanParamsCb, pEventData->pUserData,
23851 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023852}
23853
23854/**
23855 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023856
23857 @param pWDICtx: pointer to the WLAN DAL context
23858 pEventData: pointer to the event information structure
23859
Jeff Johnson295189b2012-06-20 16:38:30 -070023860 @see
23861 @return Result of the function call
23862*/
23863WDI_Status
23864WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023865(
Jeff Johnson295189b2012-06-20 16:38:30 -070023866 WDI_ControlBlockType* pWDICtx,
23867 WDI_EventInfoType* pEventData
23868)
23869{
23870 WDI_LowLevelIndType wdiInd;
23871 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23872
23873
23874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023876 -------------------------------------------------------------------------*/
23877 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23878 ( NULL == pEventData->pEventData ))
23879 {
23880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023884 }
23885
23886 /*-------------------------------------------------------------------------
23887 Extract indication and send it to UMAC
23888 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023889 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23890 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 sizeof(tPrefNetwFoundParams));
23892
23893 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023894 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023895
23896 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23897
Jeff Johnsone7245742012-09-05 17:12:55 -070023898 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023899 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023900 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023901
Jeff Johnsone7245742012-09-05 17:12:55 -070023902 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23903 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023904 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23905
23906 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23907 prefNetwFoundInd.prefNetwFoundParams.rssi;
23908
23909 // DEBUG
23910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23911 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23912 wdiInd.wdiIndicationType,
23913 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23914 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23915
ltimariu034f7d62013-01-24 18:54:33 -080023916 if ( pWDICtx->wdiLowLevelIndCB )
23917 {
23918 /*Notify UMAC*/
23919 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
23920 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023921
23922 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023923}
23924
23925/**
23926 @brief Process PNO Rsp function (called when a
23927 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023928
23929 @param pWDICtx: pointer to the WLAN DAL context
23930 pEventData: pointer to the event information structure
23931
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 @see
23933 @return Result of the function call
23934*/
23935WDI_Status
23936WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023937(
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 WDI_ControlBlockType* pWDICtx,
23939 WDI_EventInfoType* pEventData
23940)
23941{
23942 WDI_Status wdiStatus;
23943 eHalStatus halStatus;
23944 WDI_PNOScanCb wdiPNOScanCb = NULL;
23945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23946
23947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023949 -------------------------------------------------------------------------*/
23950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23951 ( NULL == pEventData->pEventData ))
23952 {
23953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023957 }
23958
23959
Jeff Johnsone7245742012-09-05 17:12:55 -070023960 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023961
23962 /*-------------------------------------------------------------------------
23963 Extract response and send it to UMAC
23964 -------------------------------------------------------------------------*/
23965 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023967
23968 /*Notify UMAC*/
23969 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23970
Jeff Johnsone7245742012-09-05 17:12:55 -070023971 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023972}/*WDI_ProcessSetPreferredNetworkRsp*/
23973
23974/**
23975 @brief Process RSSI Filter Rsp function (called when a
23976 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023977
23978 @param pWDICtx: pointer to the WLAN DAL context
23979 pEventData: pointer to the event information structure
23980
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 @see
23982 @return Result of the function call
23983*/
23984WDI_Status
23985WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023986(
Jeff Johnson295189b2012-06-20 16:38:30 -070023987 WDI_ControlBlockType* pWDICtx,
23988 WDI_EventInfoType* pEventData
23989)
23990{
23991 WDI_Status wdiStatus;
23992 eHalStatus halStatus;
23993 WDI_RssiFilterCb wdiRssiFilterCb;
23994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23995
23996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023998 -------------------------------------------------------------------------*/
23999 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24000 ( NULL == pEventData->pEventData ))
24001 {
24002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 }
24007
Jeff Johnsone7245742012-09-05 17:12:55 -070024008 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024009
24010 /*-------------------------------------------------------------------------
24011 Extract response and send it to UMAC
24012 -------------------------------------------------------------------------*/
24013 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024014 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024015
24016 /*Notify UMAC*/
24017 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24018
Jeff Johnsone7245742012-09-05 17:12:55 -070024019 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024020}/*WDI_ProcessSetRssiFilterRsp*/
24021
24022/**
24023 @brief Process Update Scan Params Rsp function (called when a
24024 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024025
24026 @param pWDICtx: pointer to the WLAN DAL context
24027 pEventData: pointer to the event information structure
24028
Jeff Johnson295189b2012-06-20 16:38:30 -070024029 @see
24030 @return Result of the function call
24031*/
24032WDI_Status
24033WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024034(
Jeff Johnson295189b2012-06-20 16:38:30 -070024035 WDI_ControlBlockType* pWDICtx,
24036 WDI_EventInfoType* pEventData
24037)
24038{
24039 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024040 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024041 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024042 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24044
24045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024047 -------------------------------------------------------------------------*/
24048 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24049 ( NULL == pEventData->pEventData ))
24050 {
24051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024055 }
24056
24057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024058 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024059
Jeff Johnsone7245742012-09-05 17:12:55 -070024060 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024061
24062 /*-------------------------------------------------------------------------
24063 Extract response and send it to UMAC
24064 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024065 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24066 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024067 sizeof(halUpdScanParams.status));
24068
24069 uStatus = halUpdScanParams.status;
24070
24071 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024072 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024073
24074 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024075 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070024076
Jeff Johnsone7245742012-09-05 17:12:55 -070024077 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024078
24079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024080 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024081 halUpdScanParams.status);
24082
24083 /*Notify UMAC*/
24084 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24085
Jeff Johnsone7245742012-09-05 17:12:55 -070024086 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024087}
24088#endif // FEATURE_WLAN_SCAN_PNO
24089
24090#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070024091WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024092WDI_8023MulticastListReq
24093(
24094 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
24095 WDI_8023MulticastListCb wdi8023MulticastListCallback,
24096 void* pUserData
24097)
24098{
24099 WDI_EventInfoType wdiEventData;
24100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24101
24102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024103 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024104
24105 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024106 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 ------------------------------------------------------------------------*/
24108 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24109 {
24110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24111 "WDI API call before module is initialized - Fail request");
24112
Jeff Johnsone7245742012-09-05 17:12:55 -070024113 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024114 }
24115
24116 /*------------------------------------------------------------------------
24117 Fill in Event data and post to the Main FSM
24118 ------------------------------------------------------------------------*/
24119 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024120 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024121 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024122 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024123 wdiEventData.pUserData = pUserData;
24124
24125 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24126}
24127
Jeff Johnsone7245742012-09-05 17:12:55 -070024128WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024129WDI_ReceiveFilterSetFilterReq
24130(
24131 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
24132 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
24133 void* pUserData
24134)
24135{
24136 WDI_EventInfoType wdiEventData;
24137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24138
24139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024140 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024141
24142 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024143 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024144 ------------------------------------------------------------------------*/
24145 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24146 {
24147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24148 "WDI API call before module is initialized - Fail request");
24149
Jeff Johnsone7245742012-09-05 17:12:55 -070024150 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024151 }
24152
24153 /*------------------------------------------------------------------------
24154 Fill in Event data and post to the Main FSM
24155 ------------------------------------------------------------------------*/
24156 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024157 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
24158 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070024159 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24160 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024161 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024162 wdiEventData.pUserData = pUserData;
24163
24164
24165 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24166}
24167
Jeff Johnsone7245742012-09-05 17:12:55 -070024168WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024169WDI_FilterMatchCountReq
24170(
24171 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24172 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24173 void* pUserData
24174)
24175{
24176 WDI_EventInfoType wdiEventData;
24177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24178
24179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024180 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024181
24182 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024183 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024184 ------------------------------------------------------------------------*/
24185 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24186 {
24187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24188 "WDI API call before module is initialized - Fail request");
24189
Jeff Johnsone7245742012-09-05 17:12:55 -070024190 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024191 }
24192
24193 /*------------------------------------------------------------------------
24194 Fill in Event data and post to the Main FSM
24195 ------------------------------------------------------------------------*/
24196 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024197 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024198 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024199 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024200 wdiEventData.pUserData = pUserData;
24201
24202
24203 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24204}
24205
Jeff Johnsone7245742012-09-05 17:12:55 -070024206WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024207WDI_ReceiveFilterClearFilterReq
24208(
24209 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24210 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24211 void* pUserData
24212)
24213{
24214 WDI_EventInfoType wdiEventData;
24215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24216
24217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024218 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024219
24220 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024221 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024222 ------------------------------------------------------------------------*/
24223 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24224 {
24225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24226 "WDI API call before module is initialized - Fail request");
24227
Jeff Johnsone7245742012-09-05 17:12:55 -070024228 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024229 }
24230
24231 /*------------------------------------------------------------------------
24232 Fill in Event data and post to the Main FSM
24233 ------------------------------------------------------------------------*/
24234 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024235 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024236 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024237 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024238 wdiEventData.pUserData = pUserData;
24239
24240
24241 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24242}
24243
24244/**
24245 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024246
24247 @param pWDICtx: pointer to the WLAN DAL context
24248 pEventData: pointer to the event information structure
24249
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 @see
24251 @return Result of the function call
24252*/
24253WDI_Status
24254WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024255(
Jeff Johnson295189b2012-06-20 16:38:30 -070024256 WDI_ControlBlockType* pWDICtx,
24257 WDI_EventInfoType* pEventData
24258)
24259{
24260 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
24261 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024262 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024263 wpt_uint16 usDataOffset = 0;
24264 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024265 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024266 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024267 wpt_uint8 ucCurrentBSSSesIdx = 0;
24268 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024269
24270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024271 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024272
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024273 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
24274 if( NULL == pRcvFltMcAddrListType )
24275 {
24276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24277 "Failed to alloc in WDI_Process8023MulticastListReq");
24278 return WDI_STATUS_E_FAILURE;
24279 }
24280
Jeff Johnson295189b2012-06-20 16:38:30 -070024281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024283 -------------------------------------------------------------------------*/
24284 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024285 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024286 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024287 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
24289 {
24290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024291 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024292 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024294 return WDI_STATUS_E_FAILURE;
24295 }
24296
24297 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24298 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
24299 &pBSSSes);
24300 if ( NULL == pBSSSes )
24301 {
24302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024303 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024304 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 }
24307
24308 /*-----------------------------------------------------------------------
24309 Get message buffer
24310 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024311 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24312 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 sizeof(tHalRcvFltMcAddrListType),
24314 &pSendBuffer, &usDataOffset, &usSendSize))||
24315 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
24316 {
24317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24318 "Unable to get send buffer in "
24319 "WDI_Process8023MulticastListReq() %x %x %x",
24320 pEventData, pwdiFltPktSetMcListReqParamsType,
24321 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070024322 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024325 }
24326
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024327 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070024328 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024329 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024330 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024331 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
24333 sizeof(tSirMacAddr));
24334 }
24335
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024336 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024338 pRcvFltMcAddrListType,
24339 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070024340
24341 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024342 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024343
24344
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024345 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024350 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024351 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024352}
24353
24354/**
24355 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024356
24357 @param pWDICtx: pointer to the WLAN DAL context
24358 pEventData: pointer to the event information structure
24359
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 @see
24361 @return Result of the function call
24362*/
24363WDI_Status
24364WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024365(
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 WDI_ControlBlockType* pWDICtx,
24367 WDI_EventInfoType* pEventData
24368)
24369{
24370 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
24371 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024372 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024373 wpt_uint16 usDataOffset = 0;
24374 wpt_uint16 usSendSize = 0;
24375 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024376 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024378 wpt_uint8 ucCurrentBSSSesIdx = 0;
24379 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024380 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
24381 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024382
24383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024384 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024385
24386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024388 -------------------------------------------------------------------------*/
24389 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024390 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070024391 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024392 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024393 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
24394 {
24395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024398 return WDI_STATUS_E_FAILURE;
24399 }
24400
24401 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24402 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
24403 &pBSSSes);
24404 if ( NULL == pBSSSes )
24405 {
24406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024407 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024409 }
24410
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024411 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
24412 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024413
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024414 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
24415 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24416 * sizeof(tHalSessionizedRcvPktFilterCfgType));
24417
24418 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
24419 usSessRcvPktFilterCfgSize);
24420
24421 if(NULL == pSessRcvPktFilterCfg)
24422 {
24423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24424 "%s: Failed to allocate memory for "
24425 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024426 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024427 WDI_ASSERT(0);
24428 return WDI_STATUS_E_FAILURE;
24429 }
24430
24431 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
24432
24433 /*-----------------------------------------------------------------------
24434 Get message buffer
24435 -----------------------------------------------------------------------*/
24436
24437 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
24438 usSessRcvPktFilterCfgSize,
24439 &pSendBuffer, &usDataOffset, &usSendSize))||
24440 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
24441 {
24442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24443 "Unable to get send buffer in "
24444 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24445 pEventData, pwdiSetRcvPktFilterReqInfo,
24446 wdiReceiveFilterSetFilterCb);
24447 WDI_ASSERT(0);
24448 wpalMemoryFree(pSessRcvPktFilterCfg);
24449 return WDI_STATUS_E_FAILURE;
24450 }
24451
24452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24453 "UsData Off %d UsSend %d cfg %d",usDataOffset,
24454 usSendSize,pSessRcvPktFilterCfg);
24455
24456 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24457 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24458 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24459 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
24460
24461 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
24462
24463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24464 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
24465 pSessRcvPktFilterCfg->filterType);
24466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24467 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
24468 pSessRcvPktFilterCfg->coleasceTime);
24469
24470 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
24471 {
24472 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
24473 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24474 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
24475 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24476 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
24477 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24478 pSessRcvPktFilterCfg->paramsData[i].dataLength =
24479 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
24480
24481 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
24482 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24483 8);
24484 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
24485 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24486 8);
24487
24488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24489 "Out:Proto %d Comp Flag %d \n",
24490 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
24491 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
24492
24493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24494 "Data Offset %d Data Len %d\n",
24495 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
24496 pSessRcvPktFilterCfg->paramsData[i].dataLength);
24497
24498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24499 "CData: %d:%d:%d:%d:%d:%d\n",
24500 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
24501 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
24502 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
24503 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
24504 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
24505 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
24506
24507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24508 "MData: %d:%d:%d:%d:%d:%d\n",
24509 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
24510 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
24511 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
24512 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
24513 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
24514 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
24515 }
24516
24517 wpalMemoryCopy( pSendBuffer+usDataOffset,
24518 pSessRcvPktFilterCfg,
24519 usSessRcvPktFilterCfgSize);
24520
24521
24522 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24523 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
24524
24525 wpalMemoryFree(pSessRcvPktFilterCfg);
24526
24527 }
24528 /*If SLM_SESSIONIZATION is not supported then do this */
24529 else
24530 {
24531 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
24532 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24533 * sizeof(tHalRcvPktFilterParams));
24534
24535 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070024536 usRcvPktFilterCfgSize);
24537
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024538 if(NULL == pRcvPktFilterCfg)
24539 {
24540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24541 "%s: Failed to allocate memory for "
24542 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024543 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024544 WDI_ASSERT(0);
24545 return WDI_STATUS_E_FAILURE;
24546 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024547
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024548 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024549
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024550 /*-----------------------------------------------------------------------
24551 Get message buffer
24552 -----------------------------------------------------------------------*/
24553 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024554 usRcvPktFilterCfgSize,
24555 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024556 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
24557 {
24558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070024559 "Unable to get send buffer in "
24560 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24561 pEventData, pwdiSetRcvPktFilterReqInfo,
24562 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024563 WDI_ASSERT(0);
24564 wpalMemoryFree(pRcvPktFilterCfg);
24565 return WDI_STATUS_E_FAILURE;
24566 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024567
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024569 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 usSendSize,usRcvPktFilterCfgSize);
24571
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024572 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24573 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24574 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24575 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070024576
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024578 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024579 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024581 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070024582 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070024583
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024584 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
24585 {
24586 pRcvPktFilterCfg->paramsData[i].protocolLayer =
24587 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24588 pRcvPktFilterCfg->paramsData[i].cmpFlag =
24589 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24590 pRcvPktFilterCfg->paramsData[i].dataOffset =
24591 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24592 pRcvPktFilterCfg->paramsData[i].dataLength =
24593 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070024594
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024595 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024596 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24597 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024598 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070024599 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24600 8);
24601
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024603 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070024604 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070024605 pRcvPktFilterCfg->paramsData[i].cmpFlag);
24606
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24608 "Data Offset %d Data Len %d\n",
24609 pRcvPktFilterCfg->paramsData[i].dataOffset,
24610 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024611
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24613 "CData: %d:%d:%d:%d:%d:%d\n",
24614 pRcvPktFilterCfg->paramsData[i].compareData[0],
24615 pRcvPktFilterCfg->paramsData[i].compareData[1],
24616 pRcvPktFilterCfg->paramsData[i].compareData[2],
24617 pRcvPktFilterCfg->paramsData[i].compareData[3],
24618 pRcvPktFilterCfg->paramsData[i].compareData[4],
24619 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070024620
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24622 "MData: %d:%d:%d:%d:%d:%d\n",
24623 pRcvPktFilterCfg->paramsData[i].dataMask[0],
24624 pRcvPktFilterCfg->paramsData[i].dataMask[1],
24625 pRcvPktFilterCfg->paramsData[i].dataMask[2],
24626 pRcvPktFilterCfg->paramsData[i].dataMask[3],
24627 pRcvPktFilterCfg->paramsData[i].dataMask[4],
24628 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
24629 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024630
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024631 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070024632 pRcvPktFilterCfg,
24633 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024634
24635
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024636 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24637 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024638
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024640 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024641 wpalMemoryFree(pRcvPktFilterCfg);
24642 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024644 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024645 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024646 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024647 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024648 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024649}
24650
24651/**
24652 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024653
24654 @param pWDICtx: pointer to the WLAN DAL context
24655 pEventData: pointer to the event information structure
24656
Jeff Johnson295189b2012-06-20 16:38:30 -070024657 @see
24658 @return Result of the function call
24659*/
24660WDI_Status
24661WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024662(
Jeff Johnson295189b2012-06-20 16:38:30 -070024663 WDI_ControlBlockType* pWDICtx,
24664 WDI_EventInfoType* pEventData
24665)
24666{
24667 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
24668 NULL;
24669 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
24670 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024671 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024672 wpt_uint16 usDataOffset = 0;
24673 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024674 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
24675 wpt_uint8 ucCurrentBSSSesIdx = 0;
24676 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024677
24678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024679 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024680
24681 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024682 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024683 -------------------------------------------------------------------------*/
24684 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024685 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024686 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024687 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024688 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
24689 {
24690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 }
24695
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024696 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24697 pwdiRcvFltPktMatchCntReqParamsType->bssId,
24698 &pBSSSes);
24699 if ( NULL == pBSSSes )
24700 {
24701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024702 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024703 return WDI_STATUS_E_FAILURE;
24704 }
24705
Jeff Johnson295189b2012-06-20 16:38:30 -070024706 /*-----------------------------------------------------------------------
24707 Get message buffer
24708 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024709 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24710 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024711 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024712 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024713 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070024714 {
24715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24716 "Unable to get send buffer in "
24717 "WDI_ProcessFilterMatchCountReq() %x %x %x",
24718 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
24719 wdiFilterMatchCountCb);
24720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024722 }
24723
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024724 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
24725 wpalMemoryCopy( pSendBuffer+usDataOffset,
24726 &rcvFltPktMatchCntReqParam,
24727 sizeof(rcvFltPktMatchCntReqParam));
24728
Jeff Johnson295189b2012-06-20 16:38:30 -070024729 //
24730 // Don't need to fill send buffer other than header
24731 //
24732 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024733 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024734
24735
24736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024737 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024738 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024739 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24740 wdiFilterMatchCountCb,
24741 pEventData->pUserData,
24742 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024743}
24744
24745/**
24746 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024747
24748 @param pWDICtx: pointer to the WLAN DAL context
24749 pEventData: pointer to the event information structure
24750
Jeff Johnson295189b2012-06-20 16:38:30 -070024751 @see
24752 @return Result of the function call
24753*/
24754WDI_Status
24755WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024756(
Jeff Johnson295189b2012-06-20 16:38:30 -070024757 WDI_ControlBlockType* pWDICtx,
24758 WDI_EventInfoType* pEventData
24759)
Jeff Johnsone7245742012-09-05 17:12:55 -070024760{
Jeff Johnson295189b2012-06-20 16:38:30 -070024761 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24762 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024763 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024764 wpt_uint16 usDataOffset = 0;
24765 wpt_uint16 usSendSize = 0;
24766 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024767 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024768 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024769
24770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024771 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024772
24773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024774 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024775 -------------------------------------------------------------------------*/
24776 if (( NULL == pEventData ) ||
24777 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24778 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024779 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024780 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24781 {
24782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024785 return WDI_STATUS_E_FAILURE;
24786 }
24787
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024788 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024789 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24790 &pBSSSes);
24791 if ( NULL == pBSSSes )
24792 {
24793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024794 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024796 }
24797
24798 /*-----------------------------------------------------------------------
24799 Get message buffer
24800 -----------------------------------------------------------------------*/
24801 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024802 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024803 sizeof(tHalRcvFltPktClearParam),
24804 &pSendBuffer, &usDataOffset, &usSendSize))||
24805 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24806 {
24807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24808 "Unable to get send buffer in "
24809 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24810 pEventData, pwdiRcvFltPktClearReqParamsType,
24811 wdiRcvFltPktClearFilterCb);
24812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024814 }
24815
24816
24817 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024818 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024819 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024820 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024821
Jeff Johnsone7245742012-09-05 17:12:55 -070024822 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24823 wpalMemoryCopy( pSendBuffer+usDataOffset,
24824 &rcvFltPktClearParam,
24825 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024826
24827 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024828 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024829
24830
24831 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024832 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024833 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024834 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024835 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024836 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024837}
24838
24839/**
24840 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024841
24842 @param pWDICtx: pointer to the WLAN DAL context
24843 pEventData: pointer to the event information structure
24844
Jeff Johnson295189b2012-06-20 16:38:30 -070024845 @see
24846 @return Result of the function call
24847*/
24848WDI_Status
24849WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024850(
Jeff Johnson295189b2012-06-20 16:38:30 -070024851 WDI_ControlBlockType* pWDICtx,
24852 WDI_EventInfoType* pEventData
24853)
24854{
Jeff Johnson295189b2012-06-20 16:38:30 -070024855 eHalStatus halStatus;
24856 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024857 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24858 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24860
24861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024862 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024863
24864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024866 -------------------------------------------------------------------------*/
24867 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24868 ( NULL == pEventData->pEventData ))
24869 {
24870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024874 }
24875
Jeff Johnsone7245742012-09-05 17:12:55 -070024876 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024877
24878 /*-------------------------------------------------------------------------
24879 Extract response and send it to UMAC
24880 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024881 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24882 {
24883 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24884 pEventData->pEventData,
24885 sizeof(halRcvFltPktSetMcListRsp));
24886
24887 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24888 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24889 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24890 halRcvFltPktSetMcListRsp.bssIdx;
24891 }
24892 else
24893 {
24894 halStatus = *((eHalStatus*)pEventData->pEventData);
24895 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24896 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024897
24898 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024899 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024900
Jeff Johnsone7245742012-09-05 17:12:55 -070024901 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024902}
24903
24904/**
24905 @brief Process Set Rsp function (called when a
24906 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024907
24908 @param pWDICtx: pointer to the WLAN DAL context
24909 pEventData: pointer to the event information structure
24910
Jeff Johnson295189b2012-06-20 16:38:30 -070024911 @see
24912 @return Result of the function call
24913*/
24914WDI_Status
24915WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024916(
Jeff Johnson295189b2012-06-20 16:38:30 -070024917 WDI_ControlBlockType* pWDICtx,
24918 WDI_EventInfoType* pEventData
24919)
24920{
Jeff Johnson295189b2012-06-20 16:38:30 -070024921 eHalStatus halStatus;
24922 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024923 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24924 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24926
24927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024928 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024929
24930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024932 -------------------------------------------------------------------------*/
24933 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24934 ( NULL == pEventData->pEventData ))
24935 {
24936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024940 }
24941
24942 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024943 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024944
24945 /*-------------------------------------------------------------------------
24946 Extract response and send it to UMAC
24947 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024948 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24949 {
24950 wpalMemoryCopy( &halSetPktFilterRspParams,
24951 pEventData->pEventData,
24952 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024953
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024954 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24955 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24956 }
24957 else
24958 {
24959 halStatus = *((eHalStatus*)pEventData->pEventData);
24960 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24961 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024962 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024963 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024964
Jeff Johnsone7245742012-09-05 17:12:55 -070024965 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024966}
24967
24968/**
24969 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024970
24971 @param pWDICtx: pointer to the WLAN DAL context
24972 pEventData: pointer to the event information structure
24973
Jeff Johnson295189b2012-06-20 16:38:30 -070024974 @see
24975 @return Result of the function call
24976*/
24977WDI_Status
24978WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024979(
Jeff Johnson295189b2012-06-20 16:38:30 -070024980 WDI_ControlBlockType* pWDICtx,
24981 WDI_EventInfoType* pEventData
24982)
24983{
Jeff Johnson295189b2012-06-20 16:38:30 -070024984 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024985 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024986 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24987 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024988
24989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24990
24991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024992 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024993
24994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024996 -------------------------------------------------------------------------*/
24997 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24998 ( NULL == pEventData->pEventData ))
24999 {
25000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025004 }
25005
Jeff Johnsone7245742012-09-05 17:12:55 -070025006 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025007
25008 /*-------------------------------------------------------------------------
25009 Extract response and send it to UMAC
25010 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025011 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25012 {
25013 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25014 pEventData->pEventData,
25015 sizeof(halRcvFltrPktMatachRsp));
25016
25017 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25018 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25019 }
25020 else
25021 {
25022 halStatus = *((eHalStatus*)pEventData->pEventData);
25023 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25024 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025025
25026 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025027 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025028
Jeff Johnsone7245742012-09-05 17:12:55 -070025029 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025030}
25031
25032/**
25033 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025034
25035 @param pWDICtx: pointer to the WLAN DAL context
25036 pEventData: pointer to the event information structure
25037
Jeff Johnson295189b2012-06-20 16:38:30 -070025038 @see
25039 @return Result of the function call
25040*/
25041WDI_Status
25042WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025043(
Jeff Johnson295189b2012-06-20 16:38:30 -070025044 WDI_ControlBlockType* pWDICtx,
25045 WDI_EventInfoType* pEventData
25046)
25047{
Jeff Johnson295189b2012-06-20 16:38:30 -070025048 eHalStatus halStatus;
25049 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025050 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25051 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25053
25054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025055 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025056
25057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025058 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025059 -------------------------------------------------------------------------*/
25060 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25061 ( NULL == pEventData->pEventData ))
25062 {
25063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025064 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025067 }
25068
25069 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025070 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025071
25072 /*-------------------------------------------------------------------------
25073 Extract response and send it to UMAC
25074 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025075 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25076 {
25077 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
25078 pEventData->pEventData,
25079 sizeof(halRcvFltPktClearRspMsg));
25080
25081 wdiRcvFltPktClearRspParamsType.wdiStatus =
25082 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
25083 wdiRcvFltPktClearRspParamsType.bssIdx =
25084 halRcvFltPktClearRspMsg.bssIdx;
25085 }
25086 else
25087 {
25088 halStatus = *((eHalStatus*)pEventData->pEventData);
25089 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25090 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025091
25092 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025093 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025094
Jeff Johnsone7245742012-09-05 17:12:55 -070025095 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025096}
25097#endif // WLAN_FEATURE_PACKET_FILTERING
25098
25099/**
25100 @brief Process Shutdown Rsp function
25101 There is no shutdown response comming from HAL
25102 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070025103
Jeff Johnson295189b2012-06-20 16:38:30 -070025104 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070025105 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025106
25107 @see
25108 @return Result of the function call
25109*/
25110WDI_Status
25111WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025112(
Jeff Johnson295189b2012-06-20 16:38:30 -070025113 WDI_ControlBlockType* pWDICtx,
25114 WDI_EventInfoType* pEventData
25115)
25116{
25117 /*There is no shutdown response comming from HAL - function just kept for
25118 simmetry */
25119 WDI_ASSERT(0);
25120 return WDI_STATUS_SUCCESS;
25121}/*WDI_ProcessShutdownRsp*/
25122
25123/**
25124 @brief WDI_SetPowerParamsReq
25125
Jeff Johnsone7245742012-09-05 17:12:55 -070025126 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025128
Jeff Johnson295189b2012-06-20 16:38:30 -070025129 wdiPowerParamsCb: callback for passing back the response
25130 of the Set Power Params operation received from the
25131 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025132
Jeff Johnson295189b2012-06-20 16:38:30 -070025133 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025134 callback
25135
Jeff Johnson295189b2012-06-20 16:38:30 -070025136 @return Result of the function call
25137*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025138WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025139WDI_SetPowerParamsReq
25140(
25141 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
25142 WDI_SetPowerParamsCb wdiPowerParamsCb,
25143 void* pUserData
25144)
25145{
25146 WDI_EventInfoType wdiEventData;
25147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25148
25149 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025150 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025151 ------------------------------------------------------------------------*/
25152 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25153 {
25154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25155 "WDI API call before module is initialized - Fail request");
25156
Jeff Johnsone7245742012-09-05 17:12:55 -070025157 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025158 }
25159
25160 /*------------------------------------------------------------------------
25161 Fill in Event data and post to the Main FSM
25162 ------------------------------------------------------------------------*/
25163 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025164 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025165 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025166 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025167 wdiEventData.pUserData = pUserData;
25168
25169 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25170}/*WDI_SetPowerParamsReq*/
25171
25172/**
25173 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025174
25175 @param pWDICtx: pointer to the WLAN DAL context
25176 pEventData: pointer to the event information structure
25177
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 @see
25179 @return Result of the function call
25180*/
25181WDI_Status
25182WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025183(
Jeff Johnson295189b2012-06-20 16:38:30 -070025184 WDI_ControlBlockType* pWDICtx,
25185 WDI_EventInfoType* pEventData
25186)
25187{
25188 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25189 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025190 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025191 wpt_uint16 usDataOffset = 0;
25192 wpt_uint16 usSendSize = 0;
25193 tSetPowerParamsType powerParams;
25194
25195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025196 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025197 -------------------------------------------------------------------------*/
25198 if (( NULL == pEventData ) ||
25199 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25200 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25201 {
25202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025206 }
25207
25208 /*-----------------------------------------------------------------------
25209 Get message buffer
25210 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025211 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025212 sizeof(powerParams),
25213 &pSendBuffer, &usDataOffset, &usSendSize))||
25214 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25215 {
25216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25217 "Unable to get send buffer in Set PNO req %x %x %x",
25218 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025221 }
25222
25223 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070025224 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070025225 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
25226
25227 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025228 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070025229 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
25230
25231 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025232 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070025233 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
25234
25235 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070025236 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070025237 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
25238
25239 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070025240 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070025241 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
25242
25243 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025244 powerParams.uBETInterval =
25245 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070025246
Jeff Johnsone7245742012-09-05 17:12:55 -070025247
25248 wpalMemoryCopy( pSendBuffer+usDataOffset,
25249 &powerParams,
25250 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025251
25252 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025253 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025254
25255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025256 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025257 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025258 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25259 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025260}
25261
25262/**
25263 @brief Process Power Params Rsp function (called when a
25264 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025265
25266 @param pWDICtx: pointer to the WLAN DAL context
25267 pEventData: pointer to the event information structure
25268
Jeff Johnson295189b2012-06-20 16:38:30 -070025269 @see
25270 @return Result of the function call
25271*/
25272WDI_Status
25273WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025274(
Jeff Johnson295189b2012-06-20 16:38:30 -070025275 WDI_ControlBlockType* pWDICtx,
25276 WDI_EventInfoType* pEventData
25277)
25278{
25279 WDI_Status wdiStatus;
25280 eHalStatus halStatus;
25281 WDI_SetPowerParamsCb wdiPowerParamsCb;
25282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25283
25284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025286 -------------------------------------------------------------------------*/
25287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25288 ( NULL == pEventData->pEventData ))
25289 {
25290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025294 }
25295
Jeff Johnsone7245742012-09-05 17:12:55 -070025296 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025297
25298 /*-------------------------------------------------------------------------
25299 Extract response and send it to UMAC
25300 -------------------------------------------------------------------------*/
25301 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025302 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025303
25304 /*Notify UMAC*/
25305 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25306
Jeff Johnsone7245742012-09-05 17:12:55 -070025307 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025308}/*WDI_ProcessSetPowerParamsRsp*/
25309
25310#ifdef WLAN_FEATURE_GTK_OFFLOAD
25311/**
25312 @brief WDI_GTKOffloadReq will be called when the upper MAC
25313 wants to set GTK Rekey Counter while in power save. Upon
25314 the call of this API the WLAN DAL will pack and send a
25315 HAL GTK offload request message to the lower RIVA
25316 sub-system if DAL is in state STARTED.
25317
25318 In state BUSY this request will be queued. Request won't
25319 be allowed in any other state.
25320
25321 WDI_PostAssocReq must have been called.
25322
25323 @param pwdiGtkOffloadParams: the GTK offload as specified
25324 by the Device Interface
25325
25326 wdiGtkOffloadCb: callback for passing back the response
25327 of the GTK offload operation received from the device
25328
25329 pUserData: user data will be passed back with the
25330 callback
25331
25332 @see WDI_PostAssocReq
25333 @return Result of the function call
25334*/
25335WDI_Status
25336WDI_GTKOffloadReq
25337(
25338 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
25339 WDI_GtkOffloadCb wdiGtkOffloadCb,
25340 void* pUserData
25341)
25342{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025343 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25345
25346 /*------------------------------------------------------------------------
25347 Sanity Check
25348 ------------------------------------------------------------------------*/
25349 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25350 {
25351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25352 "WDI API call before module is initialized - Fail request");
25353
25354 return WDI_STATUS_E_NOT_ALLOWED;
25355 }
25356
25357 /*------------------------------------------------------------------------
25358 Fill in Event data and post to the Main FSM
25359 ------------------------------------------------------------------------*/
25360 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
25361 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070025362 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070025363 wdiEventData.pCBfnc = wdiGtkOffloadCb;
25364 wdiEventData.pUserData = pUserData;
25365
25366 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25367}
25368
25369
25370/**
25371 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
25372 MAC wants to get GTK Rekey Counter while in power save.
25373 Upon the call of this API the WLAN DAL will pack and
25374 send a HAL GTK offload request message to the lower RIVA
25375 sub-system if DAL is in state STARTED.
25376
25377 In state BUSY this request will be queued. Request won't
25378 be allowed in any other state.
25379
25380 WDI_PostAssocReq must have been called.
25381
25382 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
25383 Information Message as specified by the
25384 Device Interface
25385
25386 wdiGtkOffloadGetInfoCb: callback for passing back the
25387 response of the GTK offload operation received from the
25388 device
25389
25390 pUserData: user data will be passed back with the
25391 callback
25392
25393 @see WDI_PostAssocReq
25394 @return Result of the function call
25395*/
25396WDI_Status
25397WDI_GTKOffloadGetInfoReq
25398(
25399 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
25400 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
25401 void* pUserData
25402)
25403{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025404 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25406
25407 /*------------------------------------------------------------------------
25408 Sanity Check
25409 ------------------------------------------------------------------------*/
25410 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25411 {
25412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25413 "WDI API call before module is initialized - Fail request");
25414
25415 return WDI_STATUS_E_NOT_ALLOWED;
25416 }
25417
25418 /*------------------------------------------------------------------------
25419 Fill in Event data and post to the Main FSM
25420 ------------------------------------------------------------------------*/
25421 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
25422 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
25423 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
25424 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
25425 wdiEventData.pUserData = pUserData;
25426
25427 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25428}
25429
25430
25431/**
25432 @brief Process set GTK Offload Request function
25433
25434 @param pWDICtx: pointer to the WLAN DAL context
25435 pEventData: pointer to the event information structure
25436
25437 @see
25438 @return Result of the function call
25439*/
25440WDI_Status
25441WDI_ProcessGTKOffloadReq
25442(
25443 WDI_ControlBlockType* pWDICtx,
25444 WDI_EventInfoType* pEventData
25445)
25446{
25447 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
25448 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
25449 wpt_uint8* pSendBuffer = NULL;
25450 wpt_uint16 usDataOffset = 0;
25451 wpt_uint16 usSendSize = 0;
25452 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025453 wpt_uint8 ucCurrentSessionId = 0;
25454 WDI_BSSSessionType* pBSSSes = NULL;
25455
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25457
25458 /*-------------------------------------------------------------------------
25459 Sanity check
25460 -------------------------------------------------------------------------*/
25461 if (( NULL == pEventData ) ||
25462 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
25463 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
25464 {
25465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025467 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025468 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025469 }
25470
25471 /*-----------------------------------------------------------------------
25472 Get message buffer
25473 -----------------------------------------------------------------------*/
25474 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
25475 sizeof(gtkOffloadReqParams),
25476 &pSendBuffer, &usDataOffset, &usSendSize))||
25477 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
25478 {
25479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25480 "Unable to get send buffer in GTK offload req %x %x %x",
25481 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
25482 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025483 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025484 }
25485
25486 //
25487 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
25488 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025489 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25490 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
25491 &pBSSSes);
25492 if ( NULL == pBSSSes )
25493 {
25494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025495 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025496 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025497 }
25498
25499 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
25500
Jeff Johnson295189b2012-06-20 16:38:30 -070025501 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
25502 // Copy KCK
25503 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
25504 // Copy KEK
25505 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
25506 // Copy KeyReplayCounter
25507 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
25508
25509 wpalMemoryCopy( pSendBuffer+usDataOffset,
25510 &gtkOffloadReqParams,
25511 sizeof(gtkOffloadReqParams));
25512
25513 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
25514 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
25515
25516 /*-------------------------------------------------------------------------
25517 Send Get STA Request to HAL
25518 -------------------------------------------------------------------------*/
25519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25520 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025521
25522fail:
25523 // Release the message buffer so we don't leak
25524 wpalMemoryFree(pSendBuffer);
25525
25526failRequest:
25527 //WDA should have failure check to avoid the memory leak
25528 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025529}
25530
25531
25532/**
25533 @brief Process GTK Offload Get Information Request function
25534
25535 @param pWDICtx: pointer to the WLAN DAL context
25536 pEventData: pointer to the event information structure
25537
25538 @see
25539 @return Result of the function call
25540*/
25541WDI_Status
25542WDI_ProcessGTKOffloadGetInfoReq
25543(
25544 WDI_ControlBlockType* pWDICtx,
25545 WDI_EventInfoType* pEventData
25546)
25547{
25548 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
25549 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
25550 wpt_uint8* pSendBuffer = NULL;
25551 wpt_uint16 usDataOffset = 0;
25552 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025553 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
25554 wpt_uint8 ucCurrentSessionId = 0;
25555 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025556
25557 /*-------------------------------------------------------------------------
25558 Sanity check
25559 -------------------------------------------------------------------------*/
25560 if (( NULL == pEventData ) ||
25561 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
25562 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
25563 {
25564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025567 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025568 }
25569
25570 /*-----------------------------------------------------------------------
25571 Get message buffer
25572 -----------------------------------------------------------------------*/
25573 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025574 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025575 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025576 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025577 {
25578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25579 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
25580 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
25581 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025582 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025583 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025584 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25585 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
25586 &pBSSSes);
25587 if ( NULL == pBSSSes )
25588 {
25589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025590 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025591 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025592 }
25593 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025594
25595 //
25596 // Don't need to fill send buffer other than header
25597 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025598 wpalMemoryCopy( pSendBuffer+usDataOffset,
25599 &halGtkOffloadGetInfoReqParams,
25600 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025601
25602 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
25603 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
25604
25605 /*-------------------------------------------------------------------------
25606 Send Get STA Request to HAL
25607 -------------------------------------------------------------------------*/
25608 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25609 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025610fail:
25611 // Release the message buffer so we don't leak
25612 wpalMemoryFree(pSendBuffer);
25613
25614failRequest:
25615 //WDA should have failure check to avoid the memory leak
25616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025617}
25618
25619/**
25620 @brief Process host offload Rsp function (called when a
25621 response is being received over the bus from HAL)
25622
25623 @param pWDICtx: pointer to the WLAN DAL context
25624 pEventData: pointer to the event information structure
25625
25626 @see
25627 @return Result of the function call
25628*/
25629WDI_Status
25630WDI_ProcessGtkOffloadRsp
25631(
25632 WDI_ControlBlockType* pWDICtx,
25633 WDI_EventInfoType* pEventData
25634)
25635{
Jeff Johnson295189b2012-06-20 16:38:30 -070025636 eHalStatus halStatus;
25637 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025638 tHalGtkOffloadRspParams halGtkOffloadRspParams;
25639 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25641
25642 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
25643
25644 /*-------------------------------------------------------------------------
25645 Sanity check
25646 -------------------------------------------------------------------------*/
25647 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25648 ( NULL == pEventData->pEventData))
25649 {
25650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025652 WDI_ASSERT(0);
25653 return WDI_STATUS_E_FAILURE;
25654 }
25655
25656 /*-------------------------------------------------------------------------
25657 Extract response and send it to UMAC
25658 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025659 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25660 {
25661 wpalMemoryCopy( &halGtkOffloadRspParams,
25662 pEventData->pEventData,
25663 sizeof(halGtkOffloadRspParams));
25664
25665 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025666 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025667 wdiGtkOffloadRsparams.bssIdx =
25668 halGtkOffloadRspParams.bssIdx;
25669 }
25670 else
25671 {
25672 halStatus = *((eHalStatus*)pEventData->pEventData);
25673 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25674 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025675
25676 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025677 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025678
25679 return WDI_STATUS_SUCCESS;
25680}
25681
25682/**
25683 @brief Process GTK Offload Get Information Response function
25684
25685 @param pWDICtx: pointer to the WLAN DAL context
25686 pEventData: pointer to the event information structure
25687
25688 @see
25689 @return Result of the function call
25690*/
25691WDI_Status
25692WDI_ProcessGTKOffloadGetInfoRsp
25693(
25694 WDI_ControlBlockType* pWDICtx,
25695 WDI_EventInfoType* pEventData
25696)
25697{
Jeff Johnson295189b2012-06-20 16:38:30 -070025698 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025699 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025700 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
25701 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025702 WDI_BSSSessionType* pBSSSes = NULL;
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 =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025730 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025731 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
25732 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
25733 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
25734 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
25735 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
25736 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
25737 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
25738 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025739
25740 wpalMutexAcquire(&pWDICtx->wptMutex);
25741 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
25742 &pBSSSes);
25743
25744 if ( NULL == pBSSSes )
25745 {
25746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25747 "Association sequence for this BSS does not exist or "
25748 "association no longer in progress - mysterious HAL response");
25749 wpalMutexRelease(&pWDICtx->wptMutex);
25750 return WDI_STATUS_E_NOT_ALLOWED;
25751 }
25752
25753 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
25754 sizeof (wpt_macAddr));
25755 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025756 }
25757 else
25758 {
25759 halStatus = *((eHalStatus*)pEventData->pEventData);
25760 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25761 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025762 /*Notify UMAC*/
25763 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25764 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025765 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025766
25767 return WDI_STATUS_SUCCESS;
25768}
25769#endif // WLAN_FEATURE_GTK_OFFLOAD
25770
25771#ifdef WLAN_WAKEUP_EVENTS
25772WDI_Status
25773WDI_ProcessWakeReasonInd
25774(
25775 WDI_ControlBlockType* pWDICtx,
25776 WDI_EventInfoType* pEventData
25777)
25778{
25779 WDI_LowLevelIndType *pWdiInd;
25780 tpWakeReasonParams pWakeReasonParams;
25781 wpt_uint32 allocSize = 0;
25782
25783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025784 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025785
25786 /*-------------------------------------------------------------------------
25787 Sanity check
25788 -------------------------------------------------------------------------*/
25789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25790 ( NULL == pEventData->pEventData ))
25791 {
25792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025794 WDI_ASSERT( 0 );
25795 return WDI_STATUS_E_FAILURE;
25796 }
25797
25798 /*-------------------------------------------------------------------------
25799 Extract indication and send it to UMAC
25800 -------------------------------------------------------------------------*/
25801 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25802
25803 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25804
25805 //Allocate memory for WDI_WakeReasonIndType structure
25806 pWdiInd = wpalMemoryAllocate(allocSize) ;
25807
25808 if(NULL == pWdiInd)
25809 {
25810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25811 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025812 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025813 WDI_ASSERT(0);
25814 return WDI_STATUS_E_FAILURE;
25815 }
25816
25817 wpalMemoryZero(pWdiInd, allocSize);
25818
25819 /* Fill in the indication parameters*/
25820 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25821 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25822 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25823 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25824 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25825 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25826 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25827 &(pWakeReasonParams->aDataStart[0]),
25828 pWakeReasonParams->ulStoredDataLen);
25829
ltimariu034f7d62013-01-24 18:54:33 -080025830
25831 if ( pWDICtx->wdiLowLevelIndCB )
25832 {
25833 /*Notify UMAC*/
25834 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25835 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025836
25837 //Free memory allocated for WDI_WakeReasonIndType structure
25838 wpalMemoryFree(pWdiInd);
25839
25840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025841 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025842
25843 return WDI_STATUS_SUCCESS;
25844}
25845#endif // WLAN_WAKEUP_EVENTS
25846
25847void WDI_GetWcnssCompiledApiVersion
25848(
25849 WDI_WlanVersionType *pWcnssApiVersion
25850)
25851{
25852 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25853 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25854 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25855 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25856}
25857
25858/**
25859 @brief Process Set TM Level Rsp function (called when a
25860 response is being received over the bus from HAL)
25861
25862 @param pWDICtx: pointer to the WLAN DAL context
25863 pEventData: pointer to the event information structure
25864
25865 @see
25866 @return Result of the function call
25867*/
25868WDI_Status
25869WDI_ProcessSetTmLevelRsp
25870(
25871 WDI_ControlBlockType* pWDICtx,
25872 WDI_EventInfoType* pEventData
25873)
25874{
25875 WDI_Status wdiStatus;
25876 eHalStatus halStatus;
25877 WDI_SetTmLevelCb wdiSetTmLevelCb;
25878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25879
25880 /*-------------------------------------------------------------------------
25881 Sanity check
25882 -------------------------------------------------------------------------*/
25883 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25884 ( NULL == pEventData->pEventData ))
25885 {
25886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 WDI_ASSERT(0);
25889 return WDI_STATUS_E_FAILURE;
25890 }
25891
25892 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25893
25894 /*-------------------------------------------------------------------------
25895 Extract response and send it to UMAC
25896 -------------------------------------------------------------------------*/
25897 halStatus = *((eHalStatus*)pEventData->pEventData);
25898 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25899
25900 /*Notify UMAC*/
25901 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25902
25903 return WDI_STATUS_SUCCESS;
25904}/*WDI_ProcessSetTmLevelRsp*/
25905
25906/**
25907 @brief Process Set Thermal Mitigation level Changed request
25908
25909 @param pWDICtx: pointer to the WLAN DAL context
25910 pEventData: pointer to the event information structure
25911
25912 @see
25913 @return Result of the function call
25914*/
25915WDI_Status
25916WDI_ProcessSetTmLevelReq
25917(
25918 WDI_ControlBlockType* pWDICtx,
25919 WDI_EventInfoType* pEventData
25920)
25921{
25922 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25923 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25924 wpt_uint8* pSendBuffer = NULL;
25925 wpt_uint16 usDataOffset = 0;
25926 wpt_uint16 usSendSize = 0;
25927 tSetThermalMitgationType halTmMsg;
25928
25929 /*-------------------------------------------------------------------------
25930 Sanity check
25931 -------------------------------------------------------------------------*/
25932 if (( NULL == pEventData ) ||
25933 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25934 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25935 {
25936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025938 WDI_ASSERT(0);
25939 return WDI_STATUS_E_FAILURE;
25940 }
25941
25942 /*-----------------------------------------------------------------------
25943 Get message buffer
25944 -----------------------------------------------------------------------*/
25945 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25946 sizeof(halTmMsg),
25947 &pSendBuffer, &usDataOffset, &usSendSize))||
25948 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25949 {
25950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25951 "Unable to get send buffer in Set PNO req %x %x %x",
25952 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25953 WDI_ASSERT(0);
25954 return WDI_STATUS_E_FAILURE;
25955 }
25956
25957 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25958 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25959
25960 wpalMemoryCopy( pSendBuffer+usDataOffset,
25961 &halTmMsg,
25962 sizeof(halTmMsg));
25963
25964 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25965 pWDICtx->pfncRspCB = NULL;
25966 /*-------------------------------------------------------------------------
25967 Send Get STA Request to HAL
25968 -------------------------------------------------------------------------*/
25969 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25970 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25971}
25972
25973/* Fill the value from the global features enabled array to the global capabilities
25974 * bitmap struct
25975 */
25976static void
25977FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25978{
25979 wpt_int8 i;
25980 for (i=0; i<len; i++)
25981 {
25982 setFeatCaps(fCaps, enabledFeat[i]);
25983 }
25984}
25985
25986/**
25987 @brief WDI_featureCapsExchangeReq
25988 Post feature capability bitmap exchange event.
25989 Host will send its own capability to FW in this req and
25990 expect FW to send its capability back as a bitmap in Response
25991
25992 @param
25993
25994 wdiFeatureCapsExchangeCb: callback called on getting the response.
25995 It is kept to mantain similarity between WDI reqs and if needed, can
25996 be used in future. Currently, It is set to NULL
25997
25998 pUserData: user data will be passed back with the
25999 callback
26000
26001 @see
26002 @return Result of the function call
26003*/
26004WDI_Status
26005WDI_featureCapsExchangeReq
26006(
26007 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
26008 void* pUserData
26009)
26010{
26011 WDI_EventInfoType wdiEventData;
26012 wpt_int32 fCapsStructSize;
26013
26014 /*------------------------------------------------------------------------
26015 Sanity Check
26016 ------------------------------------------------------------------------*/
26017 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26018 {
26019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26020 "WDI API call before module is initialized - Fail request");
26021
26022 return WDI_STATUS_E_NOT_ALLOWED;
26023 }
26024
26025 /* Allocate memory separately for global variable carrying FW caps */
26026 fCapsStructSize = sizeof(tWlanFeatCaps);
26027 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26028 if ( NULL == gpHostWlanFeatCaps )
26029 {
26030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26031 "Cannot allocate memory for host capability info\n");
26032 WDI_ASSERT(0);
26033 return WDI_STATUS_MEM_FAILURE;
26034 }
26035
26036 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
26037
26038 /*------------------------------------------------------------------------
26039 Fill in Event data and post to the Main FSM
26040 ------------------------------------------------------------------------*/
26041 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
26042 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070026043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26044 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026045 gpHostWlanFeatCaps->featCaps[0],
26046 gpHostWlanFeatCaps->featCaps[1],
26047 gpHostWlanFeatCaps->featCaps[2],
26048 gpHostWlanFeatCaps->featCaps[3]
26049 );
26050
26051 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
26052 wdiEventData.pEventData = gpHostWlanFeatCaps;
26053 wdiEventData.uEventDataSize = fCapsStructSize;
26054 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
26055 wdiEventData.pUserData = pUserData;
26056
26057 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26058}
26059
26060/**
Yathishd8713192012-12-10 14:21:35 -080026061 @brief Disable Active mode offload in Host
26062
26063 @param void
26064 @see
26065 @return void
26066*/
26067void
26068WDI_disableCapablityFeature(wpt_uint8 feature_index)
26069{
26070 supportEnabledFeatures[feature_index] = 0;
26071 return;
26072}
26073
26074/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026075 @brief Process Host-FW Capability Exchange Request function
26076
26077 @param pWDICtx: pointer to the WLAN DAL context
26078 pEventData: pointer to the event information structure
26079
26080 @see
26081 @return Result of the function call
26082*/
26083WDI_Status
26084WDI_ProcessFeatureCapsExchangeReq
26085(
26086 WDI_ControlBlockType* pWDICtx,
26087 WDI_EventInfoType* pEventData
26088)
26089{
26090 wpt_uint8* pSendBuffer = NULL;
26091 wpt_uint16 usDataOffset = 0;
26092 wpt_uint16 usSendSize = 0;
26093 wpt_uint16 usLen = 0;
26094
26095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26096
26097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026098 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026099
26100 /*-------------------------------------------------------------------------
26101 Sanity check
26102 -------------------------------------------------------------------------*/
26103 /* Call back function is NULL since not required for cap exchange req */
26104 if (( NULL == pEventData ) ||
26105 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
26106 {
26107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026109 WDI_ASSERT(0);
26110 return WDI_STATUS_E_FAILURE;
26111 }
26112
26113 /*-----------------------------------------------------------------------
26114 Get message buffer
26115 -----------------------------------------------------------------------*/
26116 usLen = sizeof(tWlanFeatCaps);
26117
26118 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26119 WDI_FEATURE_CAPS_EXCHANGE_REQ,
26120 usLen,
26121 &pSendBuffer, &usDataOffset, &usSendSize))||
26122 ( usSendSize < (usDataOffset + usLen )))
26123 {
26124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26125 "Unable to get send buffer in feat caps exchange req %x %x",
26126 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
26127 WDI_ASSERT(0);
26128 return WDI_STATUS_E_FAILURE;
26129 }
26130
26131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026132 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026133 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
26134 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
26135 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
26136 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
26137 );
26138
26139 /* Copy host caps after the offset in the send buffer */
26140 wpalMemoryCopy( pSendBuffer+usDataOffset,
26141 (tWlanFeatCaps *)pEventData->pEventData,
26142 usLen);
26143
26144 /*-------------------------------------------------------------------------
26145 Send Start Request to HAL
26146 -------------------------------------------------------------------------*/
26147 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26148 (WDI_StartRspCb)pEventData->pCBfnc,
26149 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
26150
26151}/*WDI_ProcessFeatureCapsExchangeReq*/
26152
26153/**
26154 @brief Process Host-FW Capability Exchange Response function
26155
26156 @param pWDICtx: pointer to the WLAN DAL context
26157 pEventData: pointer to the event information structure
26158
26159 @see
26160 @return Result of the function call
26161*/
26162WDI_Status
26163WDI_ProcessFeatureCapsExchangeRsp
26164(
26165 WDI_ControlBlockType* pWDICtx,
26166 WDI_EventInfoType* pEventData
26167)
26168{
26169 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
26170 wpt_int32 fCapsStructSize;
26171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26172
26173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026174 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026175
26176 /*-------------------------------------------------------------------------
26177 Sanity check
26178 -------------------------------------------------------------------------*/
26179 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26180 ( NULL == pEventData->pEventData ))
26181 {
26182 /* It will go here when riva is old (doesn't understand this msg) and host is new */
26183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026184 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026185 WDI_ASSERT(0);
26186 return WDI_STATUS_E_FAILURE;
26187 }
26188
26189 /* Allocate memory separately for global variable carrying FW caps */
26190 fCapsStructSize = sizeof(tWlanFeatCaps);
26191 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26192 if ( NULL == gpFwWlanFeatCaps )
26193 {
26194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26195 "Cannot allocate memory for host capability info\n");
26196 WDI_ASSERT(0);
26197 return WDI_STATUS_MEM_FAILURE;
26198 }
26199
26200 /*-------------------------------------------------------------------------
26201 Unpack HAL Response Message - the header was already extracted by the
26202 main Response Handling procedure
26203 -------------------------------------------------------------------------*/
26204 /*-------------------------------------------------------------------------
26205 Extract response and send it to UMAC
26206 -------------------------------------------------------------------------*/
26207
26208 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
26209 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070026210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26211 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026212 gpFwWlanFeatCaps->featCaps[0],
26213 gpFwWlanFeatCaps->featCaps[1],
26214 gpFwWlanFeatCaps->featCaps[2],
26215 gpFwWlanFeatCaps->featCaps[3]
26216 );
Jeff Johnson295189b2012-06-20 16:38:30 -070026217 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
26218
26219 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
26220 if (wdiFeatureCapsExchangeCb != NULL)
26221 wdiFeatureCapsExchangeCb(NULL, NULL);
26222
26223 return WDI_STATUS_SUCCESS;
26224}
26225
Mohit Khanna4a70d262012-09-11 16:30:12 -070026226#ifdef WLAN_FEATURE_11AC
26227WDI_Status
26228WDI_ProcessUpdateVHTOpModeRsp
26229(
26230 WDI_ControlBlockType* pWDICtx,
26231 WDI_EventInfoType* pEventData
26232)
26233{
26234 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26235 WDI_Status wdiStatus;
26236 eHalStatus halStatus;
26237
26238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26239
26240 /*-------------------------------------------------------------------------
26241 Sanity check
26242 -------------------------------------------------------------------------*/
26243 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26244 ( NULL == pEventData->pEventData))
26245 {
26246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026247 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026248 WDI_ASSERT(0);
26249 return WDI_STATUS_E_FAILURE;
26250 }
26251 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
26252
26253 /*-------------------------------------------------------------------------
26254 Extract response and send it to UMAC
26255 -------------------------------------------------------------------------*/
26256 halStatus = *((eHalStatus*)pEventData->pEventData);
26257 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26258
26259 /*Notify UMAC*/
26260 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
26261
26262 return WDI_STATUS_SUCCESS;
26263}
26264#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026265/**
26266 @brief WDI_getHostWlanFeatCaps
26267 WDI API that returns whether the feature passed to it as enum value in
26268 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
26269 variable storing host capability bitmap to find this. This can be used by
26270 other moduels to decide certain things like call different APIs based on
26271 whether a particular feature is supported.
26272
26273 @param
26274
26275 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
26276
26277 @see
26278 @return
26279 0 - if the feature is NOT supported in host
26280 any non-zero value - if the feature is SUPPORTED in host.
26281*/
26282wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
26283{
26284 wpt_uint8 featSupported = 0;
26285 if (gpHostWlanFeatCaps != NULL)
26286 {
26287 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
26288 }
26289 else
26290 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026292 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026293 }
26294 return featSupported;
26295}
26296
26297/**
26298 @brief WDI_getFwWlanFeatCaps
26299 WDI API that returns whether the feature passed to it as enum value in
26300 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
26301 variable storing host capability bitmap to find this. This can be used by
26302 other moduels to decide certain things like call different APIs based on
26303 whether a particular feature is supported.
26304
26305 @param
26306
26307 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
26308 in wlan_hal_msg.h.
26309
26310 @see
26311 @return
26312 0 - if the feature is NOT supported in FW
26313 any non-zero value - if the feature is SUPPORTED in FW.
26314*/
26315wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
26316{
26317 wpt_uint8 featSupported = 0;
26318 if (gpFwWlanFeatCaps != NULL)
26319 {
26320 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
26321 }
26322 else
26323 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026325 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026326 }
26327 return featSupported;
26328}
Mohit Khanna4a70d262012-09-11 16:30:12 -070026329
26330#ifdef WLAN_FEATURE_11AC
26331WDI_Status
26332WDI_ProcessUpdateVHTOpModeReq
26333(
26334 WDI_ControlBlockType* pWDICtx,
26335 WDI_EventInfoType* pEventData
26336)
26337{
26338 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
26339 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26340 wpt_uint8* pSendBuffer = NULL;
26341 wpt_uint16 usDataOffset = 0;
26342 wpt_uint16 usSendSize = 0;
26343
26344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26345
26346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026347 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026348
26349 /*-------------------------------------------------------------------------
26350 Sanity check
26351 -------------------------------------------------------------------------*/
26352 if (( NULL == pEventData ) ||
26353 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
26354 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
26355 {
26356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026357 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026358 WDI_ASSERT(0);
26359 return WDI_STATUS_E_FAILURE;
26360 }
26361
26362 /*-----------------------------------------------------------------------
26363 Get message buffer
26364 -----------------------------------------------------------------------*/
26365 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
26366 sizeof(WDI_UpdateVHTOpMode),
26367 &pSendBuffer, &usDataOffset, &usSendSize))||
26368 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
26369 {
26370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26371 "Unable to get send buffer in update vht opMode req");
26372 WDI_ASSERT(0);
26373 return WDI_STATUS_E_FAILURE;
26374 }
26375
26376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26377 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
26378
26379 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
26380 sizeof(WDI_UpdateVHTOpMode));
26381
26382 /*-------------------------------------------------------------------------
26383 Send Start Request to HAL
26384 -------------------------------------------------------------------------*/
26385 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26386 wdiVHTOpModeCb,
26387 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
26388
26389}
26390
26391WDI_Status
26392WDI_UpdateVHTOpModeReq
26393(
26394 WDI_UpdateVHTOpMode *pData,
26395 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
26396 void* pUserData
26397)
26398{
26399 WDI_EventInfoType wdiEventData;
26400
26401 /*------------------------------------------------------------------------
26402 Sanity Check
26403 ------------------------------------------------------------------------*/
26404 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26405 {
26406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26407 "WDI API call before module is initialized - Fail request");
26408
26409 return WDI_STATUS_E_NOT_ALLOWED;
26410 }
26411
26412 /*------------------------------------------------------------------------
26413 Fill in Event data and post to the Main FSM
26414 ------------------------------------------------------------------------*/
26415 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
26416 wdiEventData.pEventData = pData;
26417 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
26418 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
26419 wdiEventData.pUserData = pUserData;
26420
26421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26422 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
26423
26424 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26425
26426}
26427#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026428
26429/**
26430 @brief WDI_TransportChannelDebug -
26431 Display DXE Channel debugging information
26432 User may request to display DXE channel snapshot
26433 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026434
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080026435 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026436 @param enableStallDetect : Enable stall detect feature
26437 This feature will take effect to data performance
26438 Not integrate till fully verification
26439 @see
26440 @return none
26441*/
26442void WDI_TransportChannelDebug
26443(
26444 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026445 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026446)
26447{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026448 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026449 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070026450}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026451/**
26452 @brief WDI_SsrTimerCB
26453 Callback function for SSR timer, if this is called then the graceful
26454 shutdown for Riva did not happen.
26455
26456 @param pUserData : user data to timer
26457
26458 @see
26459 @return none
26460*/
26461void
26462WDI_SsrTimerCB
26463(
26464 void *pUserData
26465)
26466{
26467 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
26468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26469
26470 if (NULL == pWDICtx )
26471 {
26472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026473 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026474 WDI_ASSERT(0);
26475 return;
26476 }
26477 wpalRivaSubystemRestart();
26478
26479 return;
26480
26481}/*WDI_SsrTimerCB*/