blob: d663d18c317c029b1bcab5fa6eeb7d6f5e9e805b [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700108 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700109 ===========================================================================*/
110#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
111
Jeff Johnsone7245742012-09-05 17:12:55 -0700112#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
113#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
114
Yathishd8713192012-12-10 14:21:35 -0800115#define FEATURE_NOT_SUPPORTED 128
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117#ifdef FEATURE_WLAN_SCAN_PNO
118#define WDI_PNO_VERSION_MASK 0x8000
119#endif
120
121/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* array of features supported. Need to add a new feature
126 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
127 */
128static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800129 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800130#ifdef WLAN_SOFTAP_VSTA_FEATURE
131 ,SAP32STA
132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800135#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800136 ,TDLS
137#else
138 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800139#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800140 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800141#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
142 ,WLANACTIVE_OFFLOAD
143#else
144 ,FEATURE_NOT_SUPPORTED
145#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800146 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700147
148/*--------------------------------------------------------------------------
149 WLAN DAL State Machine
150 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700151WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700152{
153 /*WDI_INIT_ST*/
154 {{
155 WDI_MainStart, /*WDI_START_EVENT*/
156 NULL, /*WDI_STOP_EVENT*/
157 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
158 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
159 WDI_MainClose, /*WDI_CLOSE_EVENT*/
160 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
161 }},
162
163 /*WDI_STARTED_ST*/
164 {{
165 WDI_MainStartStarted, /*WDI_START_EVENT*/
166 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
167 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
168 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
169 NULL, /*WDI_CLOSE_EVENT*/
170 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
171 }},
172
173 /*WDI_STOPPED_ST*/
174 {{
175 WDI_MainStart, /*WDI_START_EVENT*/
176 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
177 NULL, /*WDI_REQUEST_EVENT*/
178 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
179 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700180 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700181 }},
182
183 /*WDI_BUSY_ST*/
184 {{
185 WDI_MainStartBusy, /*WDI_START_EVENT*/
186 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
187 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
188 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
189 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
190 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
191 }}
192};
193
Jeff Johnsone7245742012-09-05 17:12:55 -0700194/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700195 DAL Request Processing Array - the functions in this table will only be
196 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700197 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700198 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700199WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700200{
201 /*INIT*/
202 WDI_ProcessStartReq, /* WDI_START_REQ */
203 WDI_ProcessStopReq, /* WDI_STOP_REQ */
204 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
205
206 /*SCAN*/
207 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
208 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
209 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
210 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
211
212 /*ASSOCIATION*/
213 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
214 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
215 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
216 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
217 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
218
219 /* Security */
220 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
221 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
222 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
223 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
224
225 /* QoS and BA APIs */
226 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
227 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
228 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
229 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
230 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
231
232 /* Miscellaneous Control APIs */
233 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
234 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
235 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
236 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
237 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
238
239 /*BA APIs*/
240 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
241 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
242
243 /*Beacon processing APIs*/
244 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
245 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
246
247 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
248 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
249 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
250 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
251#ifdef WLAN_FEATURE_P2P
252 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
253#else
254 NULL,
255#endif
256 /* PowerSave APIs */
257 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
258 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
259 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
260 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
261 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
262 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
263 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
264 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
265 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
266 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
267 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
268 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
269 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
270 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
271 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
272 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
273 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
274 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
275 /*NV Download APIs*/
276 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
277 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
278 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
279#ifdef WLAN_FEATURE_VOWIFI_11R
280 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
281#else
282 NULL,
283#endif /* WLAN_FEATURE_VOWIFI_11R */
284 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
285 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700286 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700287
288#ifdef FEATURE_OEM_DATA_SUPPORT
289 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
290#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700291 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700292#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700293 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700294
295 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700296
297#ifdef FEATURE_WLAN_SCAN_PNO
298 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
299 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
300 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
301#else
302 NULL,
303 NULL,
304 NULL,
305#endif /* FEATURE_WLAN_SCAN_PNO */
306
307 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700308
Jeff Johnson295189b2012-06-20 16:38:30 -0700309#ifdef WLAN_FEATURE_PACKET_FILTERING
310 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700311 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700313 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700314 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700315 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700316 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700317 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700318#else
319 NULL,
320 NULL,
321 NULL,
322 NULL,
323#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700324 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700325 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
326 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
327
328 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
329#ifdef FEATURE_WLAN_CCX
330 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
331#else
332 NULL,
333#endif
334
335#ifdef WLAN_FEATURE_GTK_OFFLOAD
336 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
337 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
338#else
339 NULL,
340 NULL,
341#endif // WLAN_FEATURE_GTK_OFFLOAD
342
343 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
344 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700345#ifdef WLAN_FEATURE_11AC
346 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
347#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700348 /*-------------------------------------------------------------------------
349 Indications
350 -------------------------------------------------------------------------*/
351 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800352 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700353};
354
355
Jeff Johnsone7245742012-09-05 17:12:55 -0700356/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700357 DAL Request Processing Array - the functions in this table will only be
358 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700359 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700360 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700361WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700362{
363 /*INIT*/
364 WDI_ProcessStartRsp, /* WDI_START_RESP */
365 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
366 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
367
368 /*SCAN*/
369 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
370 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
371 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
372 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
373
374 /* ASSOCIATION*/
375 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
376 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
377 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
378 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
379 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
380
381 /* Security */
382 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
383 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
384 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
385 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
386
387 /* QoS and BA APIs */
388 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
389 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
390 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
391 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
392 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
393
394 /* Miscellaneous Control APIs */
395 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
396 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
397 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
398 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
399 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
400
401 /* BA APIs*/
402 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
403 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700404
Jeff Johnson295189b2012-06-20 16:38:30 -0700405 /* IBSS APIs*/
406 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
407 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
408
409 /*Soft AP APIs*/
410 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
411 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
412 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
413 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
414
415 /* PowerSave APIs */
416 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
417 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
418 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
419 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
420 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
421 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
422 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
423 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
424 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
425 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
426 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
427 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
428 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
429 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
430 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
431 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
432 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
433 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700434
Jeff Johnson295189b2012-06-20 16:38:30 -0700435
436 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
437
438 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
439 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
440#ifdef WLAN_FEATURE_VOWIFI_11R
441 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
442#else
443 NULL,
444#endif /* WLAN_FEATURE_VOWIFI_11R */
445 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
446 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700447#ifdef FEATURE_OEM_DATA_SUPPORT
448 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
449#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700450 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700451#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700452 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
453
454#ifdef WLAN_FEATURE_P2P
455 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
456#else
457 NULL,
458#endif
459
Jeff Johnson295189b2012-06-20 16:38:30 -0700460 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700461
Jeff Johnsone7245742012-09-05 17:12:55 -0700462 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
463
Jeff Johnson295189b2012-06-20 16:38:30 -0700464#ifdef FEATURE_WLAN_SCAN_PNO
465 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
466 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
467 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
468#else
469 NULL,
470 NULL,
471 NULL,
472#endif // FEATURE_WLAN_SCAN_PNO
473
474 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
475
476 /*---------------------------------------------------------------------
477 Indications
478 ---------------------------------------------------------------------*/
479#ifdef WLAN_FEATURE_PACKET_FILTERING
480 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700481 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700482 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700483 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700484 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700485 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700486 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700487 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700488#else
489 NULL,
490 NULL,
491 NULL,
492 NULL,
493#endif // WLAN_FEATURE_PACKET_FILTERING
494
495 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
496 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
497
498 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
499#ifdef FEATURE_WLAN_CCX
500 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
501#else
502 NULL,
503#endif
504
505#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700506 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
507 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700508#else
509 NULL,
510 NULL,
511#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700512 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
513 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700514#ifdef WLAN_FEATURE_11AC
515 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
516#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700517
518 /*---------------------------------------------------------------------
519 Indications
520 ---------------------------------------------------------------------*/
521 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
522 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
523 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
524 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
525 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
526 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
527
528 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
529
530 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
531
532#ifdef WLAN_FEATURE_P2P
533 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
534#else
535 NULL,
536#endif
537
538#ifdef FEATURE_WLAN_SCAN_PNO
539 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
540#else
541 NULL,
542#endif // FEATURE_WLAN_SCAN_PNO
543
544#ifdef WLAN_WAKEUP_EVENTS
545 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
546#else // WLAN_WAKEUP_EVENTS
547 NULL,
548#endif // WLAN_WAKEUP_EVENTS
549
550 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800551
552#ifdef WLAN_FEATURE_P2P
553 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
554#else
555 NULL,
556#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700557};
558
559
Jeff Johnsone7245742012-09-05 17:12:55 -0700560/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700561 WLAN DAL Global Control Block
562 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700563WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700564static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
565
Jeff Johnsone7245742012-09-05 17:12:55 -0700566const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700567
568/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700569WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700570void* WDI_GET_PAL_CTX( void )
571{
Jeff Johnsone7245742012-09-05 17:12:55 -0700572 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700573}/*WDI_GET_PAL_CTX*/
574
Jeff Johnsone7245742012-09-05 17:12:55 -0700575/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700576 Helper inline converters
577 ============================================================================*/
578/*Convert WDI driver type into HAL driver type*/
579WPT_STATIC WPT_INLINE WDI_Status
580WDI_HAL_2_WDI_STATUS
581(
582 eHalStatus halStatus
583);
584
585/*Convert WDI request type into HAL request type*/
586WPT_STATIC WPT_INLINE tHalHostMsgType
587WDI_2_HAL_REQ_TYPE
588(
589 WDI_RequestEnumType wdiReqType
590);
591
592/*Convert WDI response type into HAL response type*/
593WPT_STATIC WPT_INLINE WDI_ResponseEnumType
594HAL_2_WDI_RSP_TYPE
595(
596 tHalHostMsgType halMsg
597);
598
599/*Convert WDI driver type into HAL driver type*/
600WPT_STATIC WPT_INLINE tDriverType
601WDI_2_HAL_DRV_TYPE
602(
603 WDI_DriverType wdiDriverType
604);
605
606/*Convert WDI stop reason into HAL stop reason*/
607WPT_STATIC WPT_INLINE tHalStopType
608WDI_2_HAL_STOP_REASON
609(
610 WDI_StopType wdiStopType
611);
612
613/*Convert WDI scan mode type into HAL scan mode type*/
614WPT_STATIC WPT_INLINE eHalSysMode
615WDI_2_HAL_SCAN_MODE
616(
617 WDI_ScanMode wdiScanMode
618);
619
620/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700621WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700622WDI_2_HAL_SEC_CH_OFFSET
623(
624 WDI_HTSecondaryChannelOffset wdiSecChOffset
625);
626
627/*Convert WDI BSS type into HAL BSS type*/
628WPT_STATIC WPT_INLINE tSirBssType
629WDI_2_HAL_BSS_TYPE
630(
631 WDI_BssType wdiBSSType
632);
633
634/*Convert WDI NW type into HAL NW type*/
635WPT_STATIC WPT_INLINE tSirNwType
636WDI_2_HAL_NW_TYPE
637(
638 WDI_NwType wdiNWType
639);
640
641/*Convert WDI chanel bonding type into HAL cb type*/
642WPT_STATIC WPT_INLINE ePhyChanBondState
643WDI_2_HAL_CB_STATE
644(
645 WDI_PhyChanBondState wdiCbState
646);
647
648/*Convert WDI chanel bonding type into HAL cb type*/
649WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
650WDI_2_HAL_HT_OPER_MODE
651(
652 WDI_HTOperatingMode wdiHTOperMode
653);
654
655/*Convert WDI mimo PS type into HAL mimo PS type*/
656WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
657WDI_2_HAL_MIMO_PS
658(
659 WDI_HTMIMOPowerSaveState wdiHTOperMode
660);
661
662/*Convert WDI ENC type into HAL ENC type*/
663WPT_STATIC WPT_INLINE tAniEdType
664WDI_2_HAL_ENC_TYPE
665(
666 WDI_EncryptType wdiEncType
667);
668
669/*Convert WDI WEP type into HAL WEP type*/
670WPT_STATIC WPT_INLINE tAniWepType
671WDI_2_HAL_WEP_TYPE
672(
673 WDI_WepType wdiWEPType
674);
675
676/*Convert WDI Link State into HAL Link State*/
677WPT_STATIC WPT_INLINE tSirLinkState
678WDI_2_HAL_LINK_STATE
679(
680 WDI_LinkStateType wdiLinkState
681);
682
Jeff Johnsone7245742012-09-05 17:12:55 -0700683/*Translate a STA Context from WDI into HAL*/
684WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700685void
686WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700687(
Jeff Johnson295189b2012-06-20 16:38:30 -0700688 tConfigStaParams* phalConfigSta,
689 WDI_ConfigStaReqInfoType* pwdiConfigSta
690);
Jeff Johnsone7245742012-09-05 17:12:55 -0700691
692/*Translate a Rate set info from WDI into HAL*/
693WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700694WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700695(
Jeff Johnson295189b2012-06-20 16:38:30 -0700696 tSirMacRateSet* pHalRateSet,
697 WDI_RateSet* pwdiRateSet
698);
699
700/*Translate an EDCA Parameter Record from WDI into HAL*/
701WPT_STATIC WPT_INLINE void
702WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700703(
Jeff Johnson295189b2012-06-20 16:38:30 -0700704 tSirMacEdcaParamRecord* phalEdcaParam,
705 WDI_EdcaParamRecord* pWDIEdcaParam
706);
707
708/*Copy a management frame header from WDI fmt into HAL fmt*/
709WPT_STATIC WPT_INLINE void
710WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
711(
712 tSirMacMgmtHdr* pmacMgmtHdr,
713 WDI_MacMgmtHdr* pwdiMacMgmtHdr
714);
715
716/*Copy config bss parameters from WDI fmt into HAL fmt*/
717WPT_STATIC WPT_INLINE void
718WDI_CopyWDIConfigBSSToHALConfigBSS
719(
720 tConfigBssParams* phalConfigBSS,
721 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
722);
723
Jeff Johnsone7245742012-09-05 17:12:55 -0700724/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700725 pointed to by user data */
726WPT_STATIC WPT_INLINE void
727WDI_ExtractRequestCBFromEvent
728(
729 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700730 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700731 void** ppUserData
732);
733
734wpt_uint8
735WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700736(
Jeff Johnson295189b2012-06-20 16:38:30 -0700737 WDI_ControlBlockType* pWDICtx,
738 WDI_BSSSessionType** ppSession
739);
740
741void
742WDI_AddBcastSTAtoSTATable
743(
744 WDI_ControlBlockType* pWDICtx,
745 WDI_AddStaParams * staParams,
746 wpt_uint16 usBcastStaIdx
747);
748
749WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700750(
Jeff Johnson295189b2012-06-20 16:38:30 -0700751 WDI_ControlBlockType* pWDICtx,
752 WDI_EventInfoType* pEventData
753);
754
755void
756WDI_SetPowerStateCb
757(
758 wpt_status status,
759 unsigned int dxePhyAddr,
760 void *pContext
761);
762
763#define CASE_RETURN_STRING( str ) \
764 case ( ( str ) ): return( #str ); break \
765
766/**
767 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700768
769 @param wdiReqMsgId: WDI Message request Id
770
771 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700772 @return Result of the function call
773*/
774static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
775{
776 switch (wdiReqMsgId)
777 {
778 CASE_RETURN_STRING( WDI_START_REQ );
779 CASE_RETURN_STRING( WDI_STOP_REQ );
780 CASE_RETURN_STRING( WDI_CLOSE_REQ );
781 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
782 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
783 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
784 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
785 CASE_RETURN_STRING( WDI_JOIN_REQ );
786 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
787 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
788 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
789 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
790 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
791 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
792 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
793 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
794 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
795 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
796 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
797 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
798 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
799 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
800 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
801 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
802 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
803 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
804 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
805 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
806 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
807 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
808 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
809 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
810 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
811 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
812 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
813 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
814 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
815 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
816 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
817 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
818 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
819 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
820 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
821 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
822 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
823 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
824 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
825 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
826 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
827 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
828 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
829 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
830 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
831 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
832 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
833 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
834 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
835 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
836 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
837 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700838 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700839 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
840 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
841 #ifdef FEATURE_WLAN_SCAN_PNO
842 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
843 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
844 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
845 #endif
846 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
847 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
848 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
849 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
850 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
851 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
852 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
853 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
854 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800855 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Jeff Johnson295189b2012-06-20 16:38:30 -0700856 default:
857 return "Unknown WDI MessageId";
858 }
859}
860
861
862
863/**
864 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700865
866 @param wdiRespMsgId: WDI Message response Id
867
868 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700869 @return Result of the function call
870*/
871static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
872{
873 switch (wdiRespMsgId)
874 {
875 CASE_RETURN_STRING( WDI_START_RESP );
876 CASE_RETURN_STRING( WDI_STOP_RESP );
877 CASE_RETURN_STRING( WDI_CLOSE_RESP );
878 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
879 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
880 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
881 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
882 CASE_RETURN_STRING( WDI_JOIN_RESP );
883 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
884 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
885 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
886 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
887 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
888 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
889 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
890 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
891 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
892 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
893 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
894 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
895 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
896 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
897 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
898 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
899 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
900 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
901 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
902 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
903 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
904 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
905 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
906 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
907 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
908 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
909 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
910 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
911 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
912 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
913 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
914 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
915 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
916 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
917 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
918 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
919 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
920 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
921 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
922 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
923 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
924 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
925 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
926 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
927 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
928 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
929 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
930 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
931 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
932 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
933 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
934 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700935 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700936 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
937 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
938 #ifdef FEATURE_WLAN_SCAN_PNO
939 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
940 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
941 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
942 #endif
943 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
944 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
945 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
946 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
947 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
948 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
949 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
950 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
951 default:
952 return "Unknown WDI MessageId";
953 }
954}
955
956/**
957 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700958
959 @param halStatusId: HAL status Id
960
961 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700962 @return Result of the function call
963*/
964static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
965{
966 switch (halStatusId)
967 {
968 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
969 CASE_RETURN_STRING( PAL_STATUS_INVAL );
970 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
971 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
972 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
973 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
974 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
975 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
976 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
977 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
978 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
979 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
980 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
981 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
982 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
983 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
984 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
985 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
986 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
987 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
988 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
989 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
990 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
991 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
992 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
993 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
994 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
995 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
996 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
997 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
998 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
999 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1000 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1001 default:
1002 return "Unknown HAL status";
1003 }
1004}
1005
Jeff Johnsone7245742012-09-05 17:12:55 -07001006/*========================================================================
1007
Jeff Johnson295189b2012-06-20 16:38:30 -07001008 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001009
Jeff Johnson295189b2012-06-20 16:38:30 -07001010==========================================================================*/
1011
1012/**
1013 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001014
Jeff Johnson295189b2012-06-20 16:38:30 -07001015 DAL will allocate all the resources it needs. It will open PAL, it will also
1016 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001017 DXE/SMD or any other drivers that they need.
1018
Jeff Johnson295189b2012-06-20 16:38:30 -07001019 @param pOSContext: pointer to the OS context provided by the UMAC
1020 will be passed on to PAL on Open
1021 ppWDIGlobalCtx: output pointer of Global Context
1022 pWdiDevCapability: output pointer of device capability
1023
1024 @return Result of the function call
1025*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001026WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001027WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001028(
Jeff Johnson295189b2012-06-20 16:38:30 -07001029 void* pOSContext,
1030 void** ppWDIGlobalCtx,
1031 WDI_DeviceCapabilityType* pWdiDevCapability,
1032 unsigned int driverType
1033)
1034{
1035 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001036 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001037 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001038 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1040
1041 /*---------------------------------------------------------------------
1042 Sanity check
1043 ---------------------------------------------------------------------*/
1044 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1045 {
1046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1047 "Invalid input parameters in WDI_Init");
1048
Jeff Johnsone7245742012-09-05 17:12:55 -07001049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001050 }
1051
1052 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001053 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001054 ---------------------------------------------------------------------*/
1055 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1056 {
1057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1058 "WDI module already initialized - return");
1059
Jeff Johnsone7245742012-09-05 17:12:55 -07001060 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001061 }
1062
1063 /*Module is now initialized - this flag is to ensure the fact that multiple
1064 init will not happen on WDI
1065 !! - potential race does exist because read and set are not atomic,
1066 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001067 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001068
1069 /*Setup the control block */
1070 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001071 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001072
1073 /*Setup the STA Table*/
1074 wdiStatus = WDI_STATableInit(&gWDICb);
1075 if ( WDI_STATUS_SUCCESS != wdiStatus )
1076 {
1077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1078 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001079 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001080 goto fail_STATableInit;
1081 }
1082
1083 /*------------------------------------------------------------------------
1084 Open the PAL
1085 ------------------------------------------------------------------------*/
1086 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1087 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1088 {
1089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1090 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001091 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001092 goto fail_wpalOpen;
1093 }
1094
1095 /*Initialize main synchro mutex - it will be used to ensure integrity of
1096 the main WDI Control Block*/
1097 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1098 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1099 {
1100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1101 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001102 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001103 goto fail_mutex;
1104 }
1105
1106 /*Initialize the response timer - it will be used to time all messages
1107 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001108 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1109 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001110 &gWDICb);
1111 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1112 {
1113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1114 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001115 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001116 goto fail_timer;
1117 }
1118
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001119 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1120 WDI_SsrTimerCB,
1121 &gWDICb);
1122 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1123 {
1124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1125 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001126 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001127 goto fail_timer2;
1128 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001129 /* Initialize the WDI Pending Request Queue*/
1130 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1131 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1132 {
1133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1134 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001135 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001136 goto fail_pend_queue;
1137 }
1138
1139 /*Init WDI Pending Assoc Id Queue */
1140 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
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 assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001145 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001146 goto fail_assoc_queue;
1147 }
1148
1149 /*Initialize the BSS sessions pending Queue */
1150 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1151 {
1152 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1153 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1154 {
1155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1156 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001157 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001158 goto fail_bss_queue;
1159 }
1160 }
1161
1162 /*Indicate the control block is sufficiently initialized for callbacks*/
1163 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1164
1165 /*------------------------------------------------------------------------
1166 Initialize the Data Path Utility Module
1167 ------------------------------------------------------------------------*/
1168 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1169 if ( WDI_STATUS_SUCCESS != wdiStatus )
1170 {
1171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1172 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001173 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001174 goto fail_dp_util_init;
1175 }
1176
1177 /* Init Set power state event */
1178 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001179 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001180 {
1181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1182 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001183 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001184 goto fail_power_event;
1185 }
1186
1187 /* Init WCTS action event */
1188 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
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 WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001193 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001194 goto fail_wcts_event;
1195 }
1196
1197 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001198 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001199 ------------------------------------------------------------------------*/
1200 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1201 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001202 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001203 wctsCBs.wctsRxMsgCBData = &gWDICb;
1204
Jeff Johnsone7245742012-09-05 17:12:55 -07001205 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001206 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001207 WDI_CT_CHANNEL_SIZE,
1208 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001209
1210 if ( NULL == gWDICb.wctsHandle )
1211 {
1212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001213 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001214 goto fail_wcts_open;
1215 }
1216
1217 gWDICb.driverMode = (tDriverType)driverType;
1218 /* FTM mode not need to open Transport Driver */
1219 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001220 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001221 /*------------------------------------------------------------------------
1222 Open the Data Transport
1223 ------------------------------------------------------------------------*/
1224 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1225 {
1226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001227 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001228 goto fail_wdts_open;
1229 }
1230 }
1231
1232 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001233 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001234
1235 /*Send the context as a ptr to the global WDI Control Block*/
1236 *ppWDIGlobalCtx = &gWDICb;
1237
1238 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001239 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001240 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1241 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1242 return WDI_STATUS_SUCCESS;
1243
1244 /* ERROR handlers
1245 Undo everything that completed successfully */
1246
1247 fail_wdts_open:
1248 {
1249 wpt_status eventStatus;
1250
1251 /* Closing WCTS in this scenario is tricky since it has to close
1252 the SMD channel and then we get notified asynchronously when
1253 the channel has been closed. So we take some of the logic from
1254 the "normal" close procedure in WDI_Close()
1255 */
1256
1257 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001258 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001259 {
1260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001261 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001262 }
1263
1264 WCTS_CloseTransport(gWDICb.wctsHandle);
1265
1266 /* Wait for WCTS to close the control transport. If we were able
1267 to reset the event flag, then we'll wait for the event,
1268 otherwise we'll wait for a maximum amount of time required for
1269 the channel to be closed */
1270 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1271 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001272 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001273 WDI_WCTS_ACTION_TIMEOUT);
1274 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1275 {
1276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001277 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001278 }
1279 }
1280 else
1281 {
1282 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1283 }
1284 }
1285 fail_wcts_open:
1286 wpalEventDelete(&gWDICb.wctsActionEvent);
1287 fail_wcts_event:
1288 wpalEventDelete(&gWDICb.setPowerStateEvent);
1289 fail_power_event:
1290 WDI_DP_UtilsExit(&gWDICb);
1291 fail_dp_util_init:
1292 gWDICb.magic = 0;
1293 fail_bss_queue:
1294 /* entries 0 thru i-1 were successfully initialized */
1295 while (0 < i)
1296 {
1297 i--;
1298 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1299 }
1300 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1301 fail_assoc_queue:
1302 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1303 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001304 wpalTimerDelete(&gWDICb.ssrTimer);
1305 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001306 wpalTimerDelete(&gWDICb.wptResponseTimer);
1307 fail_timer:
1308 wpalMutexDelete(&gWDICb.wptMutex);
1309 fail_mutex:
1310 wpalClose(gWDICb.pPALContext);
1311 fail_wpalOpen:
1312 WDI_STATableClose(&gWDICb);
1313 fail_STATableInit:
1314 gWDIInitialized = eWLAN_PAL_FALSE;
1315
1316 return WDI_STATUS_E_FAILURE;
1317
1318}/*WDI_Init*/;
1319
1320/**
1321 @brief WDI_Start will be called when the upper MAC is ready to
1322 commence operation with the WLAN Device. Upon the call
1323 of this API the WLAN DAL will pack and send a HAL Start
1324 message to the lower RIVA sub-system if the SMD channel
1325 has been fully opened and the RIVA subsystem is up.
1326
1327 If the RIVA sub-system is not yet up and running DAL
1328 will queue the request for Open and will wait for the
1329 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001330 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001331
1332 WDI_Init must have been called.
1333
Jeff Johnsone7245742012-09-05 17:12:55 -07001334 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001335 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001336
Jeff Johnson295189b2012-06-20 16:38:30 -07001337 wdiStartRspCb: callback for passing back the response of
1338 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001339
Jeff Johnson295189b2012-06-20 16:38:30 -07001340 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001341 callback
1342
Jeff Johnson295189b2012-06-20 16:38:30 -07001343 @see WDI_Start
1344 @return Result of the function call
1345*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001346WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001347WDI_Start
1348(
1349 WDI_StartReqParamsType* pwdiStartParams,
1350 WDI_StartRspCb wdiStartRspCb,
1351 void* pUserData
1352)
1353{
1354 WDI_EventInfoType wdiEventData;
1355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1356
1357 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001358 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001359 ------------------------------------------------------------------------*/
1360 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1361 {
1362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1363 "WDI API call before module is initialized - Fail request");
1364
Jeff Johnsone7245742012-09-05 17:12:55 -07001365 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001366 }
1367
1368 /*------------------------------------------------------------------------
1369 Fill in Event data and post to the Main FSM
1370 ------------------------------------------------------------------------*/
1371 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001372 wdiEventData.pEventData = pwdiStartParams;
1373 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1374 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001375 wdiEventData.pUserData = pUserData;
1376
1377 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1378
1379}/*WDI_Start*/
1380
1381/**
1382 @brief WDI_Stop will be called when the upper MAC is ready to
1383 stop any operation with the WLAN Device. Upon the call
1384 of this API the WLAN DAL will pack and send a HAL Stop
1385 message to the lower RIVA sub-system if the DAL Core is
1386 in started state.
1387
1388 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001389
1390 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001391
1392 WDI_Start must have been called.
1393
Jeff Johnsone7245742012-09-05 17:12:55 -07001394 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001395 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001396
Jeff Johnson295189b2012-06-20 16:38:30 -07001397 wdiStopRspCb: callback for passing back the response of
1398 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001399
Jeff Johnson295189b2012-06-20 16:38:30 -07001400 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001401 callback
1402
Jeff Johnson295189b2012-06-20 16:38:30 -07001403 @see WDI_Start
1404 @return Result of the function call
1405*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001406WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001407WDI_Stop
1408(
1409 WDI_StopReqParamsType* pwdiStopParams,
1410 WDI_StopRspCb wdiStopRspCb,
1411 void* pUserData
1412)
1413{
1414 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001415 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1417
1418 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001419 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001420 ------------------------------------------------------------------------*/
1421 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1422 {
1423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1424 "WDI API call before module is initialized - Fail request");
1425
Jeff Johnsone7245742012-09-05 17:12:55 -07001426 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001427 }
1428
Jeff Johnson43971f52012-07-17 12:26:56 -07001429 /*Access to the global state must be locked before cleaning */
1430 wpalMutexAcquire(&pWDICtx->wptMutex);
1431
1432 /*Clear all pending request*/
1433 WDI_ClearPendingRequests(pWDICtx);
1434
1435 /*We have completed cleaning unlock now*/
1436 wpalMutexRelease(&pWDICtx->wptMutex);
1437
Jeff Johnson295189b2012-06-20 16:38:30 -07001438 /* Free the global variables */
1439 wpalMemoryFree(gpHostWlanFeatCaps);
1440 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001441 gpHostWlanFeatCaps = NULL;
1442 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001443
1444 /*------------------------------------------------------------------------
1445 Fill in Event data and post to the Main FSM
1446 ------------------------------------------------------------------------*/
1447 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001448 wdiEventData.pEventData = pwdiStopParams;
1449 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1450 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001451 wdiEventData.pUserData = pUserData;
1452
1453 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1454
1455}/*WDI_Stop*/
1456
1457
1458
1459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001460 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 needs to interact with DAL. DAL will free its control
1462 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001463
1464 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001465
1466 WDI_Stop must have been called.
1467
1468 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001469
Jeff Johnson295189b2012-06-20 16:38:30 -07001470 @see WDI_Stop
1471 @return Result of the function call
1472*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001473WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001474WDI_Close
1475(
1476 void
1477)
1478{
1479 wpt_uint8 i;
1480 WDI_EventInfoType wdiEventData;
1481 wpt_status wptStatus;
1482 wpt_status eventStatus;
1483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1484
1485 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001486 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001487 ------------------------------------------------------------------------*/
1488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1489 {
1490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1491 "WDI API call before module is initialized - Fail request");
1492
Jeff Johnsone7245742012-09-05 17:12:55 -07001493 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001494 }
1495
1496 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1497 (the control transport will be closed by the FSM and we'll want
1498 to wait until that completes)*/
1499 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001500 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001501 {
1502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001503 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 /* fall through and try to finish closing via the FSM */
1505 }
1506
1507 /*------------------------------------------------------------------------
1508 Fill in Event data and post to the Main FSM
1509 ------------------------------------------------------------------------*/
1510 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001511 wdiEventData.pEventData = NULL;
1512 wdiEventData.uEventDataSize = 0;
1513 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001514 wdiEventData.pUserData = NULL;
1515
1516 gWDIInitialized = eWLAN_PAL_FALSE;
1517
1518 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1519
1520 /*Wait for WCTS to close the control transport
1521 (but only if we were able to reset the event flag*/
1522 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1523 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001524 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001525 WDI_WCTS_ACTION_TIMEOUT);
1526 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1527 {
1528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001529 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001530 }
1531 }
1532
1533 /* Destroy the WCTS action event */
1534 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1535 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1536 {
1537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1538 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001539 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001540 }
1541
1542 /* Destroy the Set Power State event */
1543 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1544 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1545 {
1546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1547 "WDI Close failed to destroy an event");
1548
Jeff Johnsone7245742012-09-05 17:12:55 -07001549 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 }
1551
1552 /*------------------------------------------------------------------------
1553 Closes the Data Path Utility Module
1554 ------------------------------------------------------------------------*/
1555 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1556 {
1557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1558 "WDI Init failed to close the DP Util Module");
1559
Jeff Johnsone7245742012-09-05 17:12:55 -07001560 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001561 }
1562
1563 /*destroy the BSS sessions pending Queue */
1564 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1565 {
1566 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1567 }
1568
1569 /* destroy the WDI Pending Assoc Id Request Queue*/
1570 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1571
1572 /* destroy the WDI Pending Request Queue*/
1573 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001574
Jeff Johnson295189b2012-06-20 16:38:30 -07001575 /*destroy the response timer */
1576 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1577
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001578 /*destroy the SSR timer */
1579 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1580
Jeff Johnson295189b2012-06-20 16:38:30 -07001581 /*invalidate the main synchro mutex */
1582 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1583 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1584 {
1585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1586 "Failed to delete mutex %d", wptStatus);
1587 WDI_ASSERT(0);
1588 }
1589
1590 /*Clear control block. note that this will clear the "magic"
1591 which will inhibit all asynchronous callbacks*/
1592 WDI_CleanCB(&gWDICb);
1593
1594 return wptStatus;
1595
1596}/*WDI_Close*/
1597
1598/**
1599 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1600 This will do most of the WDI stop & close
1601 operations without doing any handshake with Riva
1602
1603 This will also make sure that the control transport
1604 will NOT be closed.
1605
1606 This request will not be queued.
1607
1608
1609 WDI_Start must have been called.
1610
1611 @param closeTransport: Close control channel if this is set
1612
1613 @return Result of the function call
1614*/
1615WDI_Status
1616WDI_Shutdown
1617(
1618 wpt_boolean closeTransport
1619)
1620{
1621 WDI_EventInfoType wdiEventData;
1622 wpt_status wptStatus;
1623 int i = 0;
1624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1625
1626 /*------------------------------------------------------------------------
1627 Sanity Check
1628 ------------------------------------------------------------------------*/
1629 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1630 {
1631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1632 "WDI API call before module is initialized - Fail request");
1633
1634 return WDI_STATUS_E_NOT_ALLOWED;
1635 }
1636
1637 /*------------------------------------------------------------------------
1638 Fill in Event data and post to the Main FSM
1639 ------------------------------------------------------------------------*/
1640 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1641 wdiEventData.pEventData = NULL;
1642 wdiEventData.uEventDataSize = 0;
1643
1644 /* Shutdown will not be queued, if the state is busy timer will be
1645 * stopped & this message will be processed.*/
1646 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1647 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1648 {
1649 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001650 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001651 }
1652 /* Destroy the Set Power State event */
1653 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1654 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1655 {
1656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1657 "WDI Close failed to destroy an event");
1658
1659 WDI_ASSERT(0);
1660 }
1661 /*------------------------------------------------------------------------
1662 Closes the Data Path Utility Module
1663 ------------------------------------------------------------------------*/
1664 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1665 {
1666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1667 "WDI Init failed to close the DP Util Module");
1668
1669 WDI_ASSERT(0);
1670 }
1671 if ( closeTransport )
1672 {
1673 /* Close control transport, called from module unload */
1674 WCTS_CloseTransport(gWDICb.wctsHandle);
1675 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001676 else
1677 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001678 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001679 the pending messages in the transport queue */
1680 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1681 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001682 /*destroy the BSS sessions pending Queue */
1683 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1684 {
1685 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1686 }
1687
1688 /* destroy the WDI Pending Assoc Id Request Queue*/
1689 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1690 /* destroy the WDI Pending Request Queue*/
1691 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1692 /*destroy the response timer */
1693 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001694 /*destroy the SSR timer */
1695 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001696
1697 /*invalidate the main synchro mutex */
1698 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1699 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1700 {
1701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001702 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 WDI_ASSERT(0);
1704 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001705 /* Free the global variables */
1706 wpalMemoryFree(gpHostWlanFeatCaps);
1707 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001708 gpHostWlanFeatCaps = NULL;
1709 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001710 /*Clear control block. note that this will clear the "magic"
1711 which will inhibit all asynchronous callbacks*/
1712 WDI_CleanCB(&gWDICb);
1713 return wptStatus;
1714
1715}/*WDI_Shutdown*/
1716
1717
Jeff Johnsone7245742012-09-05 17:12:55 -07001718/*========================================================================
1719
Jeff Johnson295189b2012-06-20 16:38:30 -07001720 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001721
Jeff Johnson295189b2012-06-20 16:38:30 -07001722==========================================================================*/
1723
1724/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001725 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001726 the WLAN Device to get ready for a scan procedure. Upon
1727 the call of this API the WLAN DAL will pack and send a
1728 HAL Init Scan request message to the lower RIVA
1729 sub-system if DAL is in state STARTED.
1730
1731 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001732 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001733
1734 WDI_Start must have been called.
1735
1736 @param wdiInitScanParams: the init scan parameters as specified
1737 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001738
Jeff Johnson295189b2012-06-20 16:38:30 -07001739 wdiInitScanRspCb: callback for passing back the response
1740 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001741
Jeff Johnson295189b2012-06-20 16:38:30 -07001742 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001743 callback
1744
Jeff Johnson295189b2012-06-20 16:38:30 -07001745 @see WDI_Start
1746 @return Result of the function call
1747*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001748WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001749WDI_InitScanReq
1750(
1751 WDI_InitScanReqParamsType* pwdiInitScanParams,
1752 WDI_InitScanRspCb wdiInitScanRspCb,
1753 void* pUserData
1754)
1755{
1756 WDI_EventInfoType wdiEventData;
1757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1758
1759 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001760 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001761 ------------------------------------------------------------------------*/
1762 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1763 {
1764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1765 "WDI API call before module is initialized - Fail request");
1766
Jeff Johnsone7245742012-09-05 17:12:55 -07001767 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001768 }
1769
1770 /*------------------------------------------------------------------------
1771 Fill in Event data and post to the Main FSM
1772 ------------------------------------------------------------------------*/
1773 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001774 wdiEventData.pEventData = pwdiInitScanParams;
1775 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1776 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001777 wdiEventData.pUserData = pUserData;
1778
1779 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1780
1781}/*WDI_InitScanReq*/
1782
1783/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001785 wishes to change the Scan channel on the WLAN Device.
1786 Upon the call of this API the WLAN DAL will pack and
1787 send a HAL Start Scan request message to the lower RIVA
1788 sub-system if DAL is in state STARTED.
1789
1790 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001791 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001792
1793 WDI_InitScanReq must have been called.
1794
Jeff Johnsone7245742012-09-05 17:12:55 -07001795 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001796 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001797
Jeff Johnson295189b2012-06-20 16:38:30 -07001798 wdiStartScanRspCb: callback for passing back the
1799 response of the start scan operation received from the
1800 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001801
Jeff Johnson295189b2012-06-20 16:38:30 -07001802 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001803 callback
1804
Jeff Johnson295189b2012-06-20 16:38:30 -07001805 @see WDI_InitScanReq
1806 @return Result of the function call
1807*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001808WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001809WDI_StartScanReq
1810(
1811 WDI_StartScanReqParamsType* pwdiStartScanParams,
1812 WDI_StartScanRspCb wdiStartScanRspCb,
1813 void* pUserData
1814)
1815{
1816 WDI_EventInfoType wdiEventData;
1817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1818
1819 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001820 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001821 ------------------------------------------------------------------------*/
1822 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1823 {
1824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1825 "WDI API call before module is initialized - Fail request");
1826
Jeff Johnsone7245742012-09-05 17:12:55 -07001827 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001828 }
1829
1830 /*------------------------------------------------------------------------
1831 Fill in Event data and post to the Main FSM
1832 ------------------------------------------------------------------------*/
1833 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001834 wdiEventData.pEventData = pwdiStartScanParams;
1835 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1836 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001837 wdiEventData.pUserData = pUserData;
1838
1839 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1840
1841}/*WDI_StartScanReq*/
1842
1843
1844/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001845 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001846 wants to end scanning for a particular channel that it
1847 had set before by calling Scan Start on the WLAN Device.
1848 Upon the call of this API the WLAN DAL will pack and
1849 send a HAL End Scan request message to the lower RIVA
1850 sub-system if DAL is in state STARTED.
1851
1852 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001853 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001854
1855 WDI_StartScanReq must have been called.
1856
Jeff Johnsone7245742012-09-05 17:12:55 -07001857 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001858 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001859
Jeff Johnson295189b2012-06-20 16:38:30 -07001860 wdiEndScanRspCb: callback for passing back the response
1861 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001862
Jeff Johnson295189b2012-06-20 16:38:30 -07001863 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001864 callback
1865
Jeff Johnson295189b2012-06-20 16:38:30 -07001866 @see WDI_StartScanReq
1867 @return Result of the function call
1868*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001869WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001870WDI_EndScanReq
1871(
1872 WDI_EndScanReqParamsType* pwdiEndScanParams,
1873 WDI_EndScanRspCb wdiEndScanRspCb,
1874 void* pUserData
1875)
1876{
1877 WDI_EventInfoType wdiEventData;
1878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1879
1880 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001881 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001882 ------------------------------------------------------------------------*/
1883 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1884 {
1885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1886 "WDI API call before module is initialized - Fail request");
1887
Jeff Johnsone7245742012-09-05 17:12:55 -07001888 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001889 }
1890
1891 /*------------------------------------------------------------------------
1892 Fill in Event data and post to the Main FSM
1893 ------------------------------------------------------------------------*/
1894 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001895 wdiEventData.pEventData = pwdiEndScanParams;
1896 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1897 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001898 wdiEventData.pUserData = pUserData;
1899
1900 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1901
1902}/*WDI_EndScanReq*/
1903
1904
1905/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001906 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001907 completed the scan process on the WLAN Device. Upon the
1908 call of this API the WLAN DAL will pack and send a HAL
1909 Finish Scan Request request message to the lower RIVA
1910 sub-system if DAL is in state STARTED.
1911
1912 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001914
1915 WDI_InitScanReq must have been called.
1916
Jeff Johnsone7245742012-09-05 17:12:55 -07001917 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001918 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001919
Jeff Johnson295189b2012-06-20 16:38:30 -07001920 wdiFinishScanRspCb: callback for passing back the
1921 response of the finish scan operation received from the
1922 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001923
Jeff Johnson295189b2012-06-20 16:38:30 -07001924 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001925 callback
1926
Jeff Johnson295189b2012-06-20 16:38:30 -07001927 @see WDI_InitScanReq
1928 @return Result of the function call
1929*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001930WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001931WDI_FinishScanReq
1932(
1933 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1934 WDI_FinishScanRspCb wdiFinishScanRspCb,
1935 void* pUserData
1936)
1937{
1938 WDI_EventInfoType wdiEventData;
1939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1940
1941 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001942 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001943 ------------------------------------------------------------------------*/
1944 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1945 {
1946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1947 "WDI API call before module is initialized - Fail request");
1948
Jeff Johnsone7245742012-09-05 17:12:55 -07001949 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001950 }
1951
1952 /*------------------------------------------------------------------------
1953 Fill in Event data and post to the Main FSM
1954 ------------------------------------------------------------------------*/
1955 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001956 wdiEventData.pEventData = pwdiFinishScanParams;
1957 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1958 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 wdiEventData.pUserData = pUserData;
1960
1961 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1962
1963}/*WDI_FinishScanReq*/
1964
Jeff Johnsone7245742012-09-05 17:12:55 -07001965/*========================================================================
1966
Jeff Johnson295189b2012-06-20 16:38:30 -07001967 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001968
Jeff Johnson295189b2012-06-20 16:38:30 -07001969==========================================================================*/
1970
1971/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001972 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001973 to start an association procedure to a BSS. Upon the
1974 call of this API the WLAN DAL will pack and send a HAL
1975 Join request message to the lower RIVA sub-system if
1976 DAL is in state STARTED.
1977
1978 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001979 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001980
1981 WDI_Start must have been called.
1982
Jeff Johnsone7245742012-09-05 17:12:55 -07001983 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001985
Jeff Johnson295189b2012-06-20 16:38:30 -07001986 wdiJoinRspCb: callback for passing back the response of
1987 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001988
Jeff Johnson295189b2012-06-20 16:38:30 -07001989 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001990 callback
1991
Jeff Johnson295189b2012-06-20 16:38:30 -07001992 @see WDI_Start
1993 @return Result of the function call
1994*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001995WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001996WDI_JoinReq
1997(
1998 WDI_JoinReqParamsType* pwdiJoinParams,
1999 WDI_JoinRspCb wdiJoinRspCb,
2000 void* pUserData
2001)
2002{
2003 WDI_EventInfoType wdiEventData;
2004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2005
2006 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002007 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002008 ------------------------------------------------------------------------*/
2009 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2010 {
2011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2012 "WDI API call before module is initialized - Fail request");
2013
Jeff Johnsone7245742012-09-05 17:12:55 -07002014 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002015 }
2016
2017 /*------------------------------------------------------------------------
2018 Fill in Event data and post to the Main FSM
2019 ------------------------------------------------------------------------*/
2020 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002021 wdiEventData.pEventData = pwdiJoinParams;
2022 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2023 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002024 wdiEventData.pUserData = pUserData;
2025
2026 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2027
2028}/*WDI_JoinReq*/
2029
2030/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002031 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002032 wishes to configure the newly acquired or in process of
2033 being acquired BSS to the HW . Upon the call of this API
2034 the WLAN DAL will pack and send a HAL Config BSS request
2035 message to the lower RIVA sub-system if DAL is in state
2036 STARTED.
2037
2038 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002039 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002040
2041 WDI_JoinReq must have been called.
2042
Jeff Johnsone7245742012-09-05 17:12:55 -07002043 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002045
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 wdiConfigBSSRspCb: callback for passing back the
2047 response of the config BSS operation received from the
2048 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002049
Jeff Johnson295189b2012-06-20 16:38:30 -07002050 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002051 callback
2052
Jeff Johnson295189b2012-06-20 16:38:30 -07002053 @see WDI_JoinReq
2054 @return Result of the function call
2055*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002056WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002057WDI_ConfigBSSReq
2058(
2059 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2060 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2061 void* pUserData
2062)
2063{
2064 WDI_EventInfoType wdiEventData;
2065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2066
2067 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002068 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002069 ------------------------------------------------------------------------*/
2070 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2071 {
2072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2073 "WDI API call before module is initialized - Fail request");
2074
Jeff Johnsone7245742012-09-05 17:12:55 -07002075 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002076 }
2077
2078 /*------------------------------------------------------------------------
2079 Fill in Event data and post to the Main FSM
2080 ------------------------------------------------------------------------*/
2081 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002082 wdiEventData.pEventData = pwdiConfigBSSParams;
2083 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2084 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002085 wdiEventData.pUserData = pUserData;
2086
2087 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2088
2089}/*WDI_ConfigBSSReq*/
2090
2091/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002092 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002093 disassociating from the BSS and wishes to notify HW.
2094 Upon the call of this API the WLAN DAL will pack and
2095 send a HAL Del BSS request message to the lower RIVA
2096 sub-system if DAL is in state STARTED.
2097
2098 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002099 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002100
2101 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2102
Jeff Johnsone7245742012-09-05 17:12:55 -07002103 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002105
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 wdiDelBSSRspCb: callback for passing back the response
2107 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002108
Jeff Johnson295189b2012-06-20 16:38:30 -07002109 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002110 callback
2111
2112 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002113 @return Result of the function call
2114*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002115WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002116WDI_DelBSSReq
2117(
2118 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2119 WDI_DelBSSRspCb wdiDelBSSRspCb,
2120 void* pUserData
2121)
2122{
2123 WDI_EventInfoType wdiEventData;
2124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2125
2126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002128 ------------------------------------------------------------------------*/
2129 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2130 {
2131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2132 "WDI API call before module is initialized - Fail request");
2133
Jeff Johnsone7245742012-09-05 17:12:55 -07002134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002135 }
2136
2137 /*------------------------------------------------------------------------
2138 Fill in Event data and post to the Main FSM
2139 ------------------------------------------------------------------------*/
2140 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002141 wdiEventData.pEventData = pwdiDelBSSParams;
2142 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2143 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002144 wdiEventData.pUserData = pUserData;
2145
2146 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2147
2148}/*WDI_DelBSSReq*/
2149
2150/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002151 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002152 associated to a BSS and wishes to configure HW for
2153 associated state. Upon the call of this API the WLAN DAL
2154 will pack and send a HAL Post Assoc request message to
2155 the lower RIVA sub-system if DAL is in state STARTED.
2156
2157 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002158 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002159
2160 WDI_JoinReq must have been called.
2161
2162 @param wdiPostAssocReqParams: the assoc parameters as specified
2163 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002164
Jeff Johnson295189b2012-06-20 16:38:30 -07002165 wdiPostAssocRspCb: callback for passing back the
2166 response of the post assoc operation received from the
2167 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002168
Jeff Johnson295189b2012-06-20 16:38:30 -07002169 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002170 callback
2171
Jeff Johnson295189b2012-06-20 16:38:30 -07002172 @see WDI_JoinReq
2173 @return Result of the function call
2174*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002175WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002176WDI_PostAssocReq
2177(
2178 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2179 WDI_PostAssocRspCb wdiPostAssocRspCb,
2180 void* pUserData
2181)
2182{
2183 WDI_EventInfoType wdiEventData;
2184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2185
2186 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002187 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002188 ------------------------------------------------------------------------*/
2189 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2190 {
2191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2192 "WDI API call before module is initialized - Fail request");
2193
Jeff Johnsone7245742012-09-05 17:12:55 -07002194 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002195 }
2196
2197 /*------------------------------------------------------------------------
2198 Fill in Event data and post to the Main FSM
2199 ------------------------------------------------------------------------*/
2200 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002201 wdiEventData.pEventData = pwdiPostAssocReqParams;
2202 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2203 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002204 wdiEventData.pUserData = pUserData;
2205
2206 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2207
2208}/*WDI_PostAssocReq*/
2209
2210/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002211 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002212 association with another STA has ended and the station
2213 must be deleted from HW. Upon the call of this API the
2214 WLAN DAL will pack and send a HAL Del STA request
2215 message to the lower RIVA sub-system if DAL is in state
2216 STARTED.
2217
2218 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002219 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002220
2221 WDI_PostAssocReq must have been called.
2222
Jeff Johnsone7245742012-09-05 17:12:55 -07002223 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002224 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002225
Jeff Johnson295189b2012-06-20 16:38:30 -07002226 wdiDelSTARspCb: callback for passing back the response
2227 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002228
Jeff Johnson295189b2012-06-20 16:38:30 -07002229 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002230 callback
2231
Jeff Johnson295189b2012-06-20 16:38:30 -07002232 @see WDI_PostAssocReq
2233 @return Result of the function call
2234*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002235WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002236WDI_DelSTAReq
2237(
2238 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2239 WDI_DelSTARspCb wdiDelSTARspCb,
2240 void* pUserData
2241)
2242{
2243 WDI_EventInfoType wdiEventData;
2244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2245
2246 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002247 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002248 ------------------------------------------------------------------------*/
2249 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2250 {
2251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2252 "WDI API call before module is initialized - Fail request");
2253
Jeff Johnsone7245742012-09-05 17:12:55 -07002254 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002255 }
2256
2257 /*------------------------------------------------------------------------
2258 Fill in Event data and post to the Main FSM
2259 ------------------------------------------------------------------------*/
2260 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002261 wdiEventData.pEventData = pwdiDelSTAParams;
2262 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2263 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002264 wdiEventData.pUserData = pUserData;
2265
2266 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2267
2268}/*WDI_DelSTAReq*/
2269
Jeff Johnsone7245742012-09-05 17:12:55 -07002270/*========================================================================
2271
Jeff Johnson295189b2012-06-20 16:38:30 -07002272 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002273
Jeff Johnson295189b2012-06-20 16:38:30 -07002274==========================================================================*/
2275
2276/**
2277 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2278 install a BSS encryption key on the HW. Upon the call of this
2279 API the WLAN DAL will pack and send a Set BSS Key request
2280 message to the lower RIVA sub-system if DAL is in state
2281 STARTED.
2282
2283 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002284 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002285
2286 WDI_PostAssocReq must have been called.
2287
Jeff Johnsone7245742012-09-05 17:12:55 -07002288 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002289 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002290
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 wdiSetBSSKeyRspCb: callback for passing back the
2292 response of the set BSS Key operation received from the
2293 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002294
Jeff Johnson295189b2012-06-20 16:38:30 -07002295 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002296 callback
2297
Jeff Johnson295189b2012-06-20 16:38:30 -07002298 @see WDI_PostAssocReq
2299 @return Result of the function call
2300*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002301WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002302WDI_SetBSSKeyReq
2303(
2304 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2305 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2306 void* pUserData
2307)
2308{
2309 WDI_EventInfoType wdiEventData;
2310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2311
2312 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002313 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002314 ------------------------------------------------------------------------*/
2315 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2316 {
2317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2318 "WDI API call before module is initialized - Fail request");
2319
Jeff Johnsone7245742012-09-05 17:12:55 -07002320 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002321 }
2322
2323 /*------------------------------------------------------------------------
2324 Fill in Event data and post to the Main FSM
2325 ------------------------------------------------------------------------*/
2326 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002327 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2328 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2329 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002330 wdiEventData.pUserData = pUserData;
2331
2332 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2333
2334}/*WDI_SetBSSKeyReq*/
2335
2336/**
2337 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2338 uninstall a BSS key from HW. Upon the call of this API the
2339 WLAN DAL will pack and send a HAL Remove BSS Key request
2340 message to the lower RIVA sub-system if DAL is in state
2341 STARTED.
2342
2343 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002344 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002345
2346 WDI_SetBSSKeyReq must have been called.
2347
Jeff Johnsone7245742012-09-05 17:12:55 -07002348 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002349 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002350
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 wdiRemoveBSSKeyRspCb: callback for passing back the
2352 response of the remove BSS key operation received from
2353 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002354
Jeff Johnson295189b2012-06-20 16:38:30 -07002355 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002356 callback
2357
Jeff Johnson295189b2012-06-20 16:38:30 -07002358 @see WDI_SetBSSKeyReq
2359 @return Result of the function call
2360*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002361WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002362WDI_RemoveBSSKeyReq
2363(
2364 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2365 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2366 void* pUserData
2367)
2368{
2369 WDI_EventInfoType wdiEventData;
2370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2371
2372 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002373 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002374 ------------------------------------------------------------------------*/
2375 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2376 {
2377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2378 "WDI API call before module is initialized - Fail request");
2379
Jeff Johnsone7245742012-09-05 17:12:55 -07002380 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002381 }
2382
2383 /*------------------------------------------------------------------------
2384 Fill in Event data and post to the Main FSM
2385 ------------------------------------------------------------------------*/
2386 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002387 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2388 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2389 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002390 wdiEventData.pUserData = pUserData;
2391
2392 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2393
2394}/*WDI_RemoveBSSKeyReq*/
2395
2396
2397/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002398 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002399 ready to install a STA(ast) encryption key in HW. Upon
2400 the call of this API the WLAN DAL will pack and send a
2401 HAL Set STA Key request message to the lower RIVA
2402 sub-system if DAL is in state STARTED.
2403
2404 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002406
2407 WDI_PostAssocReq must have been called.
2408
Jeff Johnsone7245742012-09-05 17:12:55 -07002409 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002410 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002411
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 wdiSetSTAKeyRspCb: callback for passing back the
2413 response of the set STA key operation received from the
2414 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002415
Jeff Johnson295189b2012-06-20 16:38:30 -07002416 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002417 callback
2418
Jeff Johnson295189b2012-06-20 16:38:30 -07002419 @see WDI_PostAssocReq
2420 @return Result of the function call
2421*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002422WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002423WDI_SetSTAKeyReq
2424(
2425 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2426 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2427 void* pUserData
2428)
2429{
2430 WDI_EventInfoType wdiEventData;
2431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2432
2433 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002434 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002435 ------------------------------------------------------------------------*/
2436 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2437 {
2438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2439 "WDI API call before module is initialized - Fail request");
2440
Jeff Johnsone7245742012-09-05 17:12:55 -07002441 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002442 }
2443
2444 /*------------------------------------------------------------------------
2445 Fill in Event data and post to the Main FSM
2446 ------------------------------------------------------------------------*/
2447 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002448 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2449 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2450 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002451 wdiEventData.pUserData = pUserData;
2452
2453 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2454
2455}/*WDI_SetSTAKeyReq*/
2456
2457
2458/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002459 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002460 wants to uninstall a previously set STA key in HW. Upon
2461 the call of this API the WLAN DAL will pack and send a
2462 HAL Remove STA Key request message to the lower RIVA
2463 sub-system if DAL is in state STARTED.
2464
2465 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002466 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002467
2468 WDI_SetSTAKeyReq must have been called.
2469
Jeff Johnsone7245742012-09-05 17:12:55 -07002470 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002471 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002472
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 wdiRemoveSTAKeyRspCb: callback for passing back the
2474 response of the remove STA key operation received from
2475 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002476
Jeff Johnson295189b2012-06-20 16:38:30 -07002477 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002478 callback
2479
Jeff Johnson295189b2012-06-20 16:38:30 -07002480 @see WDI_SetSTAKeyReq
2481 @return Result of the function call
2482*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002483WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002484WDI_RemoveSTAKeyReq
2485(
2486 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2487 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2488 void* pUserData
2489)
2490{
2491 WDI_EventInfoType wdiEventData;
2492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2493
2494 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002495 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 ------------------------------------------------------------------------*/
2497 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2498 {
2499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2500 "WDI API call before module is initialized - Fail request");
2501
Jeff Johnsone7245742012-09-05 17:12:55 -07002502 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 }
2504
2505 /*------------------------------------------------------------------------
2506 Fill in Event data and post to the Main FSM
2507 ------------------------------------------------------------------------*/
2508 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002509 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2510 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2511 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 wdiEventData.pUserData = pUserData;
2513
2514 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2515
2516}/*WDI_RemoveSTAKeyReq*/
2517
2518
2519/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002520 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002521 wants to install a STA Bcast encryption key on the HW.
2522 Upon the call of this API the WLAN DAL will pack and
2523 send a HAL Start request message to the lower RIVA
2524 sub-system if DAL is in state STARTED.
2525
2526 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002527 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002528
2529 WDI_PostAssocReq must have been called.
2530
Jeff Johnsone7245742012-09-05 17:12:55 -07002531 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002533
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 wdiSetSTABcastKeyRspCb: callback for passing back the
2535 response of the set BSS Key operation received from the
2536 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002537
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 callback
2540
Jeff Johnson295189b2012-06-20 16:38:30 -07002541 @see WDI_PostAssocReq
2542 @return Result of the function call
2543*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002544WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002545WDI_SetSTABcastKeyReq
2546(
2547 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2548 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2549 void* pUserData
2550)
2551
2552{
2553 WDI_EventInfoType wdiEventData;
2554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2555
2556 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002557 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002558 ------------------------------------------------------------------------*/
2559 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2560 {
2561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2562 "WDI API call before module is initialized - Fail request");
2563
Jeff Johnsone7245742012-09-05 17:12:55 -07002564 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002565 }
2566
2567 /*------------------------------------------------------------------------
2568 Fill in Event data and post to the Main FSM
2569 ------------------------------------------------------------------------*/
2570 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002571 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2572 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2573 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002574 wdiEventData.pUserData = pUserData;
2575
2576 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2577
2578}/*WDI_SetSTABcastKeyReq*/
2579
2580/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002582 MAC wants to uninstall a STA Bcast key from HW. Upon the
2583 call of this API the WLAN DAL will pack and send a HAL
2584 Remove STA Bcast Key request message to the lower RIVA
2585 sub-system if DAL is in state STARTED.
2586
2587 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002588 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002589
2590 WDI_SetSTABcastKeyReq must have been called.
2591
Jeff Johnsone7245742012-09-05 17:12:55 -07002592 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002593 parameters as specified by the Device
2594 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002595
Jeff Johnson295189b2012-06-20 16:38:30 -07002596 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2597 response of the remove STA Bcast key operation received
2598 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002599
Jeff Johnson295189b2012-06-20 16:38:30 -07002600 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002601 callback
2602
Jeff Johnson295189b2012-06-20 16:38:30 -07002603 @see WDI_SetSTABcastKeyReq
2604 @return Result of the function call
2605*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002606WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002607WDI_RemoveSTABcastKeyReq
2608(
2609 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2610 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2611 void* pUserData
2612)
2613{
2614 WDI_EventInfoType wdiEventData;
2615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2616
2617 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002618 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002619 ------------------------------------------------------------------------*/
2620 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2621 {
2622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2623 "WDI API call before module is initialized - Fail request");
2624
Jeff Johnsone7245742012-09-05 17:12:55 -07002625 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 }
2627
2628 /*------------------------------------------------------------------------
2629 Fill in Event data and post to the Main FSM
2630 ------------------------------------------------------------------------*/
2631 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002632 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2633 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2634 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002635 wdiEventData.pUserData = pUserData;
2636
2637 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2638
2639}/*WDI_RemoveSTABcastKeyReq*/
2640
2641/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002642 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002643 MAC wants to set Max Tx Power to HW. Upon the
2644 call of this API the WLAN DAL will pack and send a HAL
2645 Remove STA Bcast Key request message to the lower RIVA
2646 sub-system if DAL is in state STARTED.
2647
2648 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002649 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002650
2651 WDI_SetSTABcastKeyReq must have been called.
2652
Jeff Johnsone7245742012-09-05 17:12:55 -07002653 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 parameters as specified by the Device
2655 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002656
Jeff Johnson295189b2012-06-20 16:38:30 -07002657 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2658 response of the remove STA Bcast key operation received
2659 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002660
Jeff Johnson295189b2012-06-20 16:38:30 -07002661 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002662 callback
2663
Jeff Johnson295189b2012-06-20 16:38:30 -07002664 @see WDI_SetMaxTxPowerReq
2665 @return Result of the function call
2666*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002667WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002668WDI_SetMaxTxPowerReq
2669(
2670 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2671 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2672 void* pUserData
2673)
2674{
2675 WDI_EventInfoType wdiEventData;
2676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2677
2678 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002679 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002680 ------------------------------------------------------------------------*/
2681 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2682 {
2683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2684 "WDI API call before module is initialized - Fail request");
2685
Jeff Johnsone7245742012-09-05 17:12:55 -07002686 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002687 }
2688
2689 /*------------------------------------------------------------------------
2690 Fill in Event data and post to the Main FSM
2691 ------------------------------------------------------------------------*/
2692 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002693 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2694 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2695 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002696 wdiEventData.pUserData = pUserData;
2697
2698 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2699}
2700
2701#ifdef FEATURE_WLAN_CCX
2702WDI_Status
2703WDI_TSMStatsReq
2704(
2705 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2706 WDI_TsmRspCb wdiReqStatusCb,
2707 void* pUserData
2708)
2709{
2710 WDI_EventInfoType wdiEventData;
2711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002712 /*------------------------------------------------------------------------
2713 Sanity Check
2714 ------------------------------------------------------------------------*/
2715 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2716 {
2717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2718 "WDI API call before module is initialized - Fail request");
2719
2720 return WDI_STATUS_E_NOT_ALLOWED;
2721 }
2722
2723 /*------------------------------------------------------------------------
2724 Fill in Event data and post to the Main FSM
2725 ------------------------------------------------------------------------*/
2726 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2727 wdiEventData.pEventData = pwdiTsmReqParams;
2728 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2729 wdiEventData.pCBfnc = wdiReqStatusCb;
2730 wdiEventData.pUserData = pUserData;
2731
2732 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2733
2734}
2735#endif
2736
2737/*========================================================================
2738
2739 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002740
Jeff Johnson295189b2012-06-20 16:38:30 -07002741==========================================================================*/
2742
2743/**
2744 @brief WDI_AddTSReq will be called when the upper MAC to inform
2745 the device of a successful add TSpec negotiation. HW
2746 needs to receive the TSpec Info from the UMAC in order
2747 to configure properly the QoS data traffic. Upon the
2748 call of this API the WLAN DAL will pack and send a HAL
2749 Add TS request message to the lower RIVA sub-system if
2750 DAL is in state STARTED.
2751
2752 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002753 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002754
2755 WDI_PostAssocReq must have been called.
2756
2757 @param wdiAddTsReqParams: the add TS parameters as specified by
2758 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002759
Jeff Johnson295189b2012-06-20 16:38:30 -07002760 wdiAddTsRspCb: callback for passing back the response of
2761 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002762
Jeff Johnson295189b2012-06-20 16:38:30 -07002763 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002764 callback
2765
Jeff Johnson295189b2012-06-20 16:38:30 -07002766 @see WDI_PostAssocReq
2767 @return Result of the function call
2768*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002769WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002770WDI_AddTSReq
2771(
2772 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2773 WDI_AddTsRspCb wdiAddTsRspCb,
2774 void* pUserData
2775)
2776{
2777 WDI_EventInfoType wdiEventData;
2778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2779
2780 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002781 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002782 ------------------------------------------------------------------------*/
2783 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2784 {
2785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2786 "WDI API call before module is initialized - Fail request");
2787
Jeff Johnsone7245742012-09-05 17:12:55 -07002788 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002789 }
2790
2791 /*------------------------------------------------------------------------
2792 Fill in Event data and post to the Main FSM
2793 ------------------------------------------------------------------------*/
2794 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002795 wdiEventData.pEventData = pwdiAddTsReqParams;
2796 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2797 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002798 wdiEventData.pUserData = pUserData;
2799
2800 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2801
2802}/*WDI_AddTSReq*/
2803
2804
2805
2806/**
2807 @brief WDI_DelTSReq will be called when the upper MAC has ended
2808 admission on a specific AC. This is to inform HW that
2809 QoS traffic parameters must be rest. Upon the call of
2810 this API the WLAN DAL will pack and send a HAL Del TS
2811 request message to the lower RIVA sub-system if DAL is
2812 in state STARTED.
2813
2814 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002815 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002816
2817 WDI_AddTSReq must have been called.
2818
2819 @param wdiDelTsReqParams: the del TS parameters as specified by
2820 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002821
Jeff Johnson295189b2012-06-20 16:38:30 -07002822 wdiDelTsRspCb: callback for passing back the response of
2823 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002824
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002826 callback
2827
Jeff Johnson295189b2012-06-20 16:38:30 -07002828 @see WDI_AddTSReq
2829 @return Result of the function call
2830*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002831WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002832WDI_DelTSReq
2833(
2834 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2835 WDI_DelTsRspCb wdiDelTsRspCb,
2836 void* pUserData
2837)
2838{
2839 WDI_EventInfoType wdiEventData;
2840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2841
2842 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002843 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002844 ------------------------------------------------------------------------*/
2845 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2846 {
2847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2848 "WDI API call before module is initialized - Fail request");
2849
Jeff Johnsone7245742012-09-05 17:12:55 -07002850 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002851 }
2852
2853 /*------------------------------------------------------------------------
2854 Fill in Event data and post to the Main FSM
2855 ------------------------------------------------------------------------*/
2856 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002857 wdiEventData.pEventData = pwdiDelTsReqParams;
2858 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2859 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002860 wdiEventData.pUserData = pUserData;
2861
2862 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2863
2864}/*WDI_DelTSReq*/
2865
2866
2867
2868/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002869 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 wishes to update the EDCA parameters used by HW for QoS
2871 data traffic. Upon the call of this API the WLAN DAL
2872 will pack and send a HAL Update EDCA Params request
2873 message to the lower RIVA sub-system if DAL is in state
2874 STARTED.
2875
2876 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002877 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002878
2879 WDI_PostAssocReq must have been called.
2880
Jeff Johnsone7245742012-09-05 17:12:55 -07002881 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002882 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002883
Jeff Johnson295189b2012-06-20 16:38:30 -07002884 wdiUpdateEDCAParamsRspCb: callback for passing back the
2885 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002886
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002888 callback
2889
Jeff Johnson295189b2012-06-20 16:38:30 -07002890 @see WDI_PostAssocReq
2891 @return Result of the function call
2892*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002893WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002894WDI_UpdateEDCAParams
2895(
2896 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2897 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2898 void* pUserData
2899)
2900{
2901 WDI_EventInfoType wdiEventData;
2902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2903
2904 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002905 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002906 ------------------------------------------------------------------------*/
2907 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2908 {
2909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2910 "WDI API call before module is initialized - Fail request");
2911
Jeff Johnsone7245742012-09-05 17:12:55 -07002912 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002913 }
2914
2915 /*------------------------------------------------------------------------
2916 Fill in Event data and post to the Main FSM
2917 ------------------------------------------------------------------------*/
2918 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002919 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2920 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2921 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 wdiEventData.pUserData = pUserData;
2923
2924 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2925
2926}/*WDI_UpdateEDCAParams*/
2927
2928
2929/**
2930 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2931 successfully a BA session and needs to notify the HW for
2932 the appropriate settings to take place. Upon the call of
2933 this API the WLAN DAL will pack and send a HAL Add BA
2934 request message to the lower RIVA sub-system if DAL is
2935 in state 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
2942 @param wdiAddBAReqParams: the add BA parameters as specified by
2943 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002944
Jeff Johnson295189b2012-06-20 16:38:30 -07002945 wdiAddBARspCb: callback for passing back the response of
2946 the add BA 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_AddBASessionReq
2956(
2957 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
2958 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
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_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002980 wdiEventData.pEventData = pwdiAddBASessionReqParams;
2981 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
2982 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 wdiEventData.pUserData = pUserData;
2984
2985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2986
2987}/*WDI_AddBASessionReq*/
2988
2989/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002990 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07002991 inform HW that it has deleted a previously created BA
2992 session. Upon the call of this API the WLAN DAL will
2993 pack and send a HAL Del BA request message to the lower
2994 RIVA sub-system if DAL is in state STARTED.
2995
2996 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002997 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002998
2999 WDI_AddBAReq must have been called.
3000
3001 @param wdiDelBAReqParams: the del BA parameters as specified by
3002 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003003
Jeff Johnson295189b2012-06-20 16:38:30 -07003004 wdiDelBARspCb: callback for passing back the response of
3005 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003006
Jeff Johnson295189b2012-06-20 16:38:30 -07003007 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003008 callback
3009
Jeff Johnson295189b2012-06-20 16:38:30 -07003010 @see WDI_AddBAReq
3011 @return Result of the function call
3012*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003013WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003014WDI_DelBAReq
3015(
3016 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3017 WDI_DelBARspCb wdiDelBARspCb,
3018 void* pUserData
3019)
3020{
3021 WDI_EventInfoType wdiEventData;
3022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3023
3024 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003025 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003026 ------------------------------------------------------------------------*/
3027 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3028 {
3029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3030 "WDI API call before module is initialized - Fail request");
3031
Jeff Johnsone7245742012-09-05 17:12:55 -07003032 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003033 }
3034
3035 /*------------------------------------------------------------------------
3036 Fill in Event data and post to the Main FSM
3037 ------------------------------------------------------------------------*/
3038 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003039 wdiEventData.pEventData = pwdiDelBAReqParams;
3040 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3041 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003042 wdiEventData.pUserData = pUserData;
3043
3044 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3045
3046}/*WDI_DelBAReq*/
3047
Jeff Johnsone7245742012-09-05 17:12:55 -07003048/*========================================================================
3049
Jeff Johnson295189b2012-06-20 16:38:30 -07003050 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003051
Jeff Johnson295189b2012-06-20 16:38:30 -07003052==========================================================================*/
3053
3054/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003055 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003056 wants to set the power save related configurations of
3057 the WLAN Device. Upon the call of this API the WLAN DAL
3058 will pack and send a HAL Update CFG request message to
3059 the lower RIVA sub-system if DAL is in state STARTED.
3060
3061 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003062 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003063
3064 WDI_Start must have been called.
3065
Jeff Johnsone7245742012-09-05 17:12:55 -07003066 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003067 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003068
Jeff Johnson295189b2012-06-20 16:38:30 -07003069 wdiSetPwrSaveCfgCb: callback for passing back the
3070 response of the set power save cfg operation received
3071 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003072
Jeff Johnson295189b2012-06-20 16:38:30 -07003073 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003074 callback
3075
Jeff Johnson295189b2012-06-20 16:38:30 -07003076 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003077 @return Result of the function call
3078*/
3079WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003080WDI_SetPwrSaveCfgReq
3081(
3082 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3083 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3084 void* pUserData
3085)
3086{
3087 WDI_EventInfoType wdiEventData;
3088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3089
3090 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003091 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003092 ------------------------------------------------------------------------*/
3093 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3094 {
3095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3096 "WDI API call before module is initialized - Fail request");
3097
Jeff Johnsone7245742012-09-05 17:12:55 -07003098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003099 }
3100
3101 /*------------------------------------------------------------------------
3102 Fill in Event data and post to the Main FSM
3103 ------------------------------------------------------------------------*/
3104 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003105 wdiEventData.pEventData = pwdiPowerSaveCfg;
3106 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3107 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003108 wdiEventData.pUserData = pUserData;
3109
3110 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3111
3112}/*WDI_SetPwrSaveCfgReq*/
3113
3114/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003115 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003116 request the device to get into IMPS power state. Upon
3117 the call of this API the WLAN DAL will send a HAL Enter
3118 IMPS request message to the lower RIVA sub-system if DAL
3119 is in state STARTED.
3120
3121 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003122 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003123
Jeff Johnsone7245742012-09-05 17:12:55 -07003124
3125 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 response of the Enter IMPS operation received from the
3127 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003128
Jeff Johnson295189b2012-06-20 16:38:30 -07003129 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003130 callback
3131
Jeff Johnson295189b2012-06-20 16:38:30 -07003132 @see WDI_Start
3133 @return Result of the function call
3134*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003135WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003136WDI_EnterImpsReq
3137(
3138 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3139 void* pUserData
3140)
3141{
3142 WDI_EventInfoType wdiEventData;
3143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3144
3145 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003146 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003147 ------------------------------------------------------------------------*/
3148 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3149 {
3150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3151 "WDI API call before module is initialized - Fail request");
3152
Jeff Johnsone7245742012-09-05 17:12:55 -07003153 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003154 }
3155
3156 /*------------------------------------------------------------------------
3157 Fill in Event data and post to the Main FSM
3158 ------------------------------------------------------------------------*/
3159 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003160 wdiEventData.pEventData = NULL;
3161 wdiEventData.uEventDataSize = 0;
3162 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003163 wdiEventData.pUserData = pUserData;
3164
3165 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3166
3167}/*WDI_EnterImpsReq*/
3168
3169/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003170 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003171 request the device to get out of IMPS power state. Upon
3172 the call of this API the WLAN DAL will send a HAL Exit
3173 IMPS request message to the lower RIVA sub-system if DAL
3174 is in state STARTED.
3175
3176 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003177 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003178
Jeff Johnson295189b2012-06-20 16:38:30 -07003179
Jeff Johnsone7245742012-09-05 17:12:55 -07003180
3181 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003182 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003183
Jeff Johnson295189b2012-06-20 16:38:30 -07003184 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003185 callback
3186
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 @see WDI_Start
3188 @return Result of the function call
3189*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003190WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003191WDI_ExitImpsReq
3192(
3193 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3194 void* pUserData
3195)
3196{
3197 WDI_EventInfoType wdiEventData;
3198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3199
3200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 ------------------------------------------------------------------------*/
3203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3204 {
3205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3206 "WDI API call before module is initialized - Fail request");
3207
Jeff Johnsone7245742012-09-05 17:12:55 -07003208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003209 }
3210
3211 /*------------------------------------------------------------------------
3212 Fill in Event data and post to the Main FSM
3213 ------------------------------------------------------------------------*/
3214 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003215 wdiEventData.pEventData = NULL;
3216 wdiEventData.uEventDataSize = 0;
3217 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003218 wdiEventData.pUserData = pUserData;
3219
3220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3221
3222}/*WDI_ExitImpsReq*/
3223
3224/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003225 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003226 request the device to get into BMPS power state. Upon
3227 the call of this API the WLAN DAL will pack and send a
3228 HAL Enter BMPS request message to the lower RIVA
3229 sub-system if DAL is in state STARTED.
3230
3231 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003232 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003233
3234 WDI_PostAssocReq must have been called.
3235
Jeff Johnsone7245742012-09-05 17:12:55 -07003236 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003238
Jeff Johnson295189b2012-06-20 16:38:30 -07003239 wdiEnterBmpsRspCb: callback for passing back the
3240 response of the Enter BMPS operation received from the
3241 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003242
Jeff Johnson295189b2012-06-20 16:38:30 -07003243 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003244 callback
3245
Jeff Johnson295189b2012-06-20 16:38:30 -07003246 @see WDI_PostAssocReq
3247 @return Result of the function call
3248*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003249WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003250WDI_EnterBmpsReq
3251(
3252 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3253 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3254 void* pUserData
3255)
3256{
3257 WDI_EventInfoType wdiEventData;
3258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3259
3260 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003261 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003262 ------------------------------------------------------------------------*/
3263 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3264 {
3265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3266 "WDI API call before module is initialized - Fail request");
3267
Jeff Johnsone7245742012-09-05 17:12:55 -07003268 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003269 }
3270
3271 /*------------------------------------------------------------------------
3272 Fill in Event data and post to the Main FSM
3273 ------------------------------------------------------------------------*/
3274 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003275 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3276 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3277 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003278 wdiEventData.pUserData = pUserData;
3279
3280 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3281
3282}/*WDI_EnterBmpsReq*/
3283
3284/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003285 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003286 request the device to get out of BMPS power state. Upon
3287 the call of this API the WLAN DAL will pack and send a
3288 HAL Exit BMPS request message to the lower RIVA
3289 sub-system if DAL is in state STARTED.
3290
3291 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003292 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003293
3294 WDI_PostAssocReq must have been called.
3295
Jeff Johnsone7245742012-09-05 17:12:55 -07003296 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003297 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003298
Jeff Johnson295189b2012-06-20 16:38:30 -07003299 wdiExitBmpsRspCb: callback for passing back the response
3300 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003301
Jeff Johnson295189b2012-06-20 16:38:30 -07003302 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003303 callback
3304
Jeff Johnson295189b2012-06-20 16:38:30 -07003305 @see WDI_PostAssocReq
3306 @return Result of the function call
3307*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003308WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003309WDI_ExitBmpsReq
3310(
3311 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3312 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3313 void* pUserData
3314)
3315{
3316 WDI_EventInfoType wdiEventData;
3317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3318
3319 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003320 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003321 ------------------------------------------------------------------------*/
3322 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3323 {
3324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3325 "WDI API call before module is initialized - Fail request");
3326
Jeff Johnsone7245742012-09-05 17:12:55 -07003327 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003328 }
3329
3330 /*------------------------------------------------------------------------
3331 Fill in Event data and post to the Main FSM
3332 ------------------------------------------------------------------------*/
3333 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003334 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3335 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3336 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003337 wdiEventData.pUserData = pUserData;
3338
3339 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3340
3341}/*WDI_ExitBmpsReq*/
3342
3343/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003344 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003345 request the device to get into UAPSD power state. Upon
3346 the call of this API the WLAN DAL will pack and send a
3347 HAL Enter UAPSD request message to the lower RIVA
3348 sub-system if DAL is in state STARTED.
3349
3350 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003351 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003352
3353 WDI_PostAssocReq must have been called.
3354 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003355
3356 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003357 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003358
Jeff Johnson295189b2012-06-20 16:38:30 -07003359 wdiEnterUapsdRspCb: callback for passing back the
3360 response of the Enter UAPSD operation received from the
3361 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, WDI_SetUapsdAcParamsReq
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_EnterUapsdReq
3371(
3372 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3373 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
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_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003395 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3396 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3397 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003398 wdiEventData.pUserData = pUserData;
3399
3400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3401
3402}/*WDI_EnterUapsdReq*/
3403
3404/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003405 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003406 request the device to get out of UAPSD power state. Upon
3407 the call of this API the WLAN DAL will send a HAL Exit
3408 UAPSD request message to the lower RIVA sub-system if
3409 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
Jeff Johnsone7245742012-09-05 17:12:55 -07003416 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003417 response of the Exit UAPSD operation received from the
3418 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003419
Jeff Johnson295189b2012-06-20 16:38:30 -07003420 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003421 callback
3422
Jeff Johnson295189b2012-06-20 16:38:30 -07003423 @see WDI_PostAssocReq
3424 @return Result of the function call
3425*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003426WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003427WDI_ExitUapsdReq
3428(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003429 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3431 void* pUserData
3432)
3433{
3434 WDI_EventInfoType wdiEventData;
3435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3436
3437 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003438 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003439 ------------------------------------------------------------------------*/
3440 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3441 {
3442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3443 "WDI API call before module is initialized - Fail request");
3444
Jeff Johnsone7245742012-09-05 17:12:55 -07003445 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003446 }
3447
3448 /*------------------------------------------------------------------------
3449 Fill in Event data and post to the Main FSM
3450 ------------------------------------------------------------------------*/
3451 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003452 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3453 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003454 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003455 wdiEventData.pUserData = pUserData;
3456
3457 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3458
3459}/*WDI_ExitUapsdReq*/
3460
3461/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003462 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003463 MAC wants to set the UAPSD related configurations
3464 of an associated STA (while acting as an AP) to the WLAN
3465 Device. Upon the call of this API the WLAN DAL will pack
3466 and send a HAL Update UAPSD params request message to
3467 the lower RIVA sub-system if DAL is in state STARTED.
3468
3469 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003470 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003471
3472 WDI_ConfigBSSReq must have been called.
3473
Jeff Johnsone7245742012-09-05 17:12:55 -07003474 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003476
Jeff Johnson295189b2012-06-20 16:38:30 -07003477 wdiUpdateUapsdParamsCb: callback for passing back the
3478 response of the update UAPSD params operation received
3479 from the 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_ConfigBSSReq
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_UpdateUapsdParamsReq
3489(
3490 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3491 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
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_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003513 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003514 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 wdiEventData.pUserData = pUserData;
3517
3518 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3519
3520}/*WDI_UpdateUapsdParamsReq*/
3521
3522/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003523 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003524 MAC wants to set the UAPSD related configurations before
3525 requesting for enter UAPSD power state to the WLAN
3526 Device. Upon the call of this API the WLAN DAL will pack
3527 and send a HAL Set 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_PostAssocReq must have been called.
3534
3535 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3536 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003537
Jeff Johnson295189b2012-06-20 16:38:30 -07003538 wdiSetUapsdAcParamsCb: callback for passing back the
3539 response of the set UAPSD params operation received from
3540 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_PostAssocReq
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_SetUapsdAcParamsReq
3550(
3551 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3552 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
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_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003574 wdiEventData.pEventData = pwdiUapsdInfo;
3575 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3576 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003577 wdiEventData.pUserData = pUserData;
3578
3579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3580
3581}/*WDI_SetUapsdAcParamsReq*/
3582
3583/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003585 MAC wants to set/reset the RXP filters for received pkts
3586 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3587 and send a HAL configure RXP filter request message to
3588 the lower RIVA sub-system.
3589
3590 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003591 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003592
Jeff Johnsone7245742012-09-05 17:12:55 -07003593
3594 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 filter as specified by the Device
3596 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003597
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 wdiConfigureRxpFilterCb: callback for passing back the
3599 response of the configure RXP filter operation received
3600 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003601
Jeff Johnson295189b2012-06-20 16:38:30 -07003602 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003603 callback
3604
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 @return Result of the function call
3606*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003607WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003608WDI_ConfigureRxpFilterReq
3609(
3610 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3611 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3612 void* pUserData
3613)
3614{
3615 WDI_EventInfoType wdiEventData;
3616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3617
3618 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003619 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003620 ------------------------------------------------------------------------*/
3621 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3622 {
3623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3624 "WDI API call before module is initialized - Fail request");
3625
Jeff Johnsone7245742012-09-05 17:12:55 -07003626 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003627 }
3628
3629 /*------------------------------------------------------------------------
3630 Fill in Event data and post to the Main FSM
3631 ------------------------------------------------------------------------*/
3632 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003633 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3634 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3635 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003636 wdiEventData.pUserData = pUserData;
3637
3638 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3639}/*WDI_ConfigureRxpFilterReq*/
3640
3641/**
3642 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3643 wants to set the beacon filters while in power save.
3644 Upon the call of this API the WLAN DAL will pack and
3645 send a Beacon filter request message to the
3646 lower RIVA sub-system.
3647
3648 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003649 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003650
Jeff Johnsone7245742012-09-05 17:12:55 -07003651
3652 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003653 filter as specified by the Device
3654 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003655
Jeff Johnson295189b2012-06-20 16:38:30 -07003656 wdiBeaconFilterCb: callback for passing back the
3657 response of the set beacon filter operation received
3658 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003659
Jeff Johnson295189b2012-06-20 16:38:30 -07003660 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003661 callback
3662
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 @return Result of the function call
3664*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003666WDI_SetBeaconFilterReq
3667(
3668 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3669 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3670 void* pUserData
3671)
3672{
3673 WDI_EventInfoType wdiEventData;
3674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3675
3676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003678 ------------------------------------------------------------------------*/
3679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3680 {
3681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3682 "WDI API call before module is initialized - Fail request");
3683
Jeff Johnsone7245742012-09-05 17:12:55 -07003684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003685 }
3686
3687 /*------------------------------------------------------------------------
3688 Fill in Event data and post to the Main FSM
3689 ------------------------------------------------------------------------*/
3690 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003691 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003692 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003693 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003694 wdiEventData.pUserData = pUserData;
3695
3696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3697}/*WDI_SetBeaconFilterReq*/
3698
3699/**
3700 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3701 wants to remove the beacon filter for particular IE
3702 while in power save. Upon the call of this API the WLAN
3703 DAL will pack and send a remove Beacon filter request
3704 message to the lower RIVA sub-system.
3705
3706 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003708
Jeff Johnsone7245742012-09-05 17:12:55 -07003709
3710 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003711 filter as specified by the Device
3712 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003713
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 wdiBeaconFilterCb: callback for passing back the
3715 response of the remove beacon filter operation received
3716 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003717
Jeff Johnson295189b2012-06-20 16:38:30 -07003718 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003719 callback
3720
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 @return Result of the function call
3722*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003723WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003724WDI_RemBeaconFilterReq
3725(
3726 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3727 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3728 void* pUserData
3729)
3730{
3731 WDI_EventInfoType wdiEventData;
3732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3733
3734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003735 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003736 ------------------------------------------------------------------------*/
3737 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3738 {
3739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3740 "WDI API call before module is initialized - Fail request");
3741
Jeff Johnsone7245742012-09-05 17:12:55 -07003742 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003743 }
3744
3745 /*------------------------------------------------------------------------
3746 Fill in Event data and post to the Main FSM
3747 ------------------------------------------------------------------------*/
3748 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003749 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003750 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003751 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003752 wdiEventData.pUserData = pUserData;
3753
3754 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3755}/*WDI_RemBeaconFilterReq*/
3756
3757/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003758 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 MAC wants to set the RSSI thresholds related
3760 configurations while in power save. Upon the call of
3761 this API the WLAN DAL will pack and send a HAL Set RSSI
3762 thresholds request message to the lower RIVA
3763 sub-system if DAL is in state STARTED.
3764
3765 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003767
3768 WDI_PostAssocReq must have been called.
3769
3770 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3771 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003772
Jeff Johnson295189b2012-06-20 16:38:30 -07003773 wdiSetUapsdAcParamsCb: callback for passing back the
3774 response of the set UAPSD params operation received from
3775 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003776
Jeff Johnson295189b2012-06-20 16:38:30 -07003777 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003778 callback
3779
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 @see WDI_PostAssocReq
3781 @return Result of the function call
3782*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003783WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003784WDI_SetRSSIThresholdsReq
3785(
3786 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3787 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3788 void* pUserData
3789)
3790{
3791 WDI_EventInfoType wdiEventData;
3792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3793
3794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 ------------------------------------------------------------------------*/
3797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3798 {
3799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3800 "WDI API call before module is initialized - Fail request");
3801
Jeff Johnsone7245742012-09-05 17:12:55 -07003802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003803 }
3804
3805 /*------------------------------------------------------------------------
3806 Fill in Event data and post to the Main FSM
3807 ------------------------------------------------------------------------*/
3808 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003809 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003810 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003811 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 wdiEventData.pUserData = pUserData;
3813
3814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3815}/* WDI_SetRSSIThresholdsReq*/
3816
3817/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003818 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003819 wants to set the filter to minimize unnecessary host
3820 wakeup due to broadcast traffic while in power save.
3821 Upon the call of this API the WLAN DAL will pack and
3822 send a HAL host offload request message to the
3823 lower RIVA sub-system if DAL is in state STARTED.
3824
3825 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003827
3828 WDI_PostAssocReq must have been called.
3829
Jeff Johnsone7245742012-09-05 17:12:55 -07003830 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003832
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 wdiHostOffloadCb: callback for passing back the response
3834 of the host offload operation received from the
3835 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003836
Jeff Johnson295189b2012-06-20 16:38:30 -07003837 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003838 callback
3839
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 @see WDI_PostAssocReq
3841 @return Result of the function call
3842*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003843WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003844WDI_HostOffloadReq
3845(
3846 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3847 WDI_HostOffloadCb wdiHostOffloadCb,
3848 void* pUserData
3849)
3850{
3851 WDI_EventInfoType wdiEventData;
3852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3853
3854 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003855 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003856 ------------------------------------------------------------------------*/
3857 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3858 {
3859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3860 "WDI API call before module is initialized - Fail request");
3861
Jeff Johnsone7245742012-09-05 17:12:55 -07003862 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003863 }
3864
3865 /*------------------------------------------------------------------------
3866 Fill in Event data and post to the Main FSM
3867 ------------------------------------------------------------------------*/
3868 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003869 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003870 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003871 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003872 wdiEventData.pUserData = pUserData;
3873
3874 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3875}/*WDI_HostOffloadReq*/
3876
3877/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003878 @brief WDI_KeepAliveReq will be called when the upper MAC
3879 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 and minimize unnecessary host wakeups due to while in power save.
3881 Upon the call of this API the WLAN DAL will pack and
3882 send a HAL Keep Alive request message to the
3883 lower RIVA sub-system if DAL is in state STARTED.
3884
3885 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003886 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003887
3888 WDI_PostAssocReq must have been called.
3889
Jeff Johnsone7245742012-09-05 17:12:55 -07003890 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003891 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003892
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 wdiKeepAliveCb: callback for passing back the response
3894 of the Keep Alive operation received from the
3895 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003896
Jeff Johnson295189b2012-06-20 16:38:30 -07003897 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003898 callback
3899
Jeff Johnson295189b2012-06-20 16:38:30 -07003900 @see WDI_PostAssocReq
3901 @return Result of the function call
3902*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003903WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003904WDI_KeepAliveReq
3905(
3906 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3907 WDI_KeepAliveCb wdiKeepAliveCb,
3908 void* pUserData
3909)
3910{
3911 WDI_EventInfoType wdiEventData;
3912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3913
3914 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003915 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003916 ------------------------------------------------------------------------*/
3917 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3918 {
3919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3920 "WDI_KeepAliveReq: WDI API call before module "
3921 "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_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003930 wdiEventData.pEventData = pwdiKeepAliveParams;
3931 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3932 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 wdiEventData.pUserData = pUserData;
3934
3935 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3936}/*WDI_KeepAliveReq*/
3937
3938/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 wants to set the Wowl Bcast ptrn to minimize unnecessary
3941 host wakeup due to broadcast traffic while in power
3942 save. Upon the call of this API the WLAN DAL will pack
3943 and send a HAL Wowl Bcast ptrn 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 pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003952 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003953
Jeff Johnson295189b2012-06-20 16:38:30 -07003954 wdiWowlAddBcPtrnCb: callback for passing back the
3955 response of the add Wowl bcast ptrn operation received
3956 from the 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_WowlAddBcPtrnReq
3966(
3967 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
3968 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
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 API call before module is initialized - Fail request");
3982
Jeff Johnsone7245742012-09-05 17:12:55 -07003983 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003984 }
3985
3986 /*------------------------------------------------------------------------
3987 Fill in Event data and post to the Main FSM
3988 ------------------------------------------------------------------------*/
3989 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003990 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003991 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003993 wdiEventData.pUserData = pUserData;
3994
3995 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3996}/*WDI_WowlAddBcPtrnReq*/
3997
3998/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003999 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004000 wants to clear the Wowl Bcast ptrn. Upon the call of
4001 this API the WLAN DAL will pack and send a HAL delete
4002 Wowl Bcast ptrn request message to the lower RIVA
4003 sub-system if DAL is in state STARTED.
4004
4005 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004006 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004007
4008 WDI_WowlAddBcPtrnReq must have been called.
4009
Jeff Johnsone7245742012-09-05 17:12:55 -07004010 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004011 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004012
Jeff Johnson295189b2012-06-20 16:38:30 -07004013 wdiWowlDelBcPtrnCb: callback for passing back the
4014 response of the del Wowl bcast ptrn operation received
4015 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004016
Jeff Johnson295189b2012-06-20 16:38:30 -07004017 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004018 callback
4019
Jeff Johnson295189b2012-06-20 16:38:30 -07004020 @see WDI_WowlAddBcPtrnReq
4021 @return Result of the function call
4022*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004023WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004024WDI_WowlDelBcPtrnReq
4025(
4026 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4027 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4028 void* pUserData
4029)
4030{
4031 WDI_EventInfoType wdiEventData;
4032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4033
4034 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 ------------------------------------------------------------------------*/
4037 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4038 {
4039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4040 "WDI API call before module is initialized - Fail request");
4041
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 }
4044
4045 /*------------------------------------------------------------------------
4046 Fill in Event data and post to the Main FSM
4047 ------------------------------------------------------------------------*/
4048 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004049 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004050 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 wdiEventData.pUserData = pUserData;
4053
4054 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4055}/*WDI_WowlDelBcPtrnReq*/
4056
4057/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004058 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004059 wants to enter the Wowl state to minimize unnecessary
4060 host wakeup while in power save. Upon the call of this
4061 API the WLAN DAL will pack and send a HAL Wowl enter
4062 request message to the lower RIVA sub-system if DAL is
4063 in state STARTED.
4064
4065 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004066 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004067
4068 WDI_PostAssocReq must have been called.
4069
Jeff Johnsone7245742012-09-05 17:12:55 -07004070 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004072
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 wdiWowlEnterReqCb: callback for passing back the
4074 response of the enter Wowl operation received from the
4075 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004076
Jeff Johnson295189b2012-06-20 16:38:30 -07004077 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004078 callback
4079
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 @see WDI_PostAssocReq
4081 @return Result of the function call
4082*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004083WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004084WDI_WowlEnterReq
4085(
4086 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4087 WDI_WowlEnterReqCb wdiWowlEnterCb,
4088 void* pUserData
4089)
4090{
4091 WDI_EventInfoType wdiEventData;
4092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4093
4094 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 ------------------------------------------------------------------------*/
4097 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4098 {
4099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4100 "WDI API call before module is initialized - Fail request");
4101
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 }
4104
4105 /*------------------------------------------------------------------------
4106 Fill in Event data and post to the Main FSM
4107 ------------------------------------------------------------------------*/
4108 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004110 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004111 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004112 wdiEventData.pUserData = pUserData;
4113
4114 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4115}/*WDI_WowlEnterReq*/
4116
4117/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004118 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004119 wants to exit the Wowl state. Upon the call of this API
4120 the WLAN DAL will pack and send a HAL Wowl exit request
4121 message to the lower RIVA sub-system if DAL is in state
4122 STARTED.
4123
4124 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004125 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004126
4127 WDI_WowlEnterReq must have been called.
4128
Jeff Johnsone7245742012-09-05 17:12:55 -07004129 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004130 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004131
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 wdiWowlExitReqCb: callback for passing back the response
4133 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004134
Jeff Johnson295189b2012-06-20 16:38:30 -07004135 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004136 callback
4137
Jeff Johnson295189b2012-06-20 16:38:30 -07004138 @see WDI_WowlEnterReq
4139 @return Result of the function call
4140*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004141WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004142WDI_WowlExitReq
4143(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004144 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004145 WDI_WowlExitReqCb wdiWowlExitCb,
4146 void* pUserData
4147)
4148{
4149 WDI_EventInfoType wdiEventData;
4150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4151
4152 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 ------------------------------------------------------------------------*/
4155 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4156 {
4157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4158 "WDI API call before module is initialized - Fail request");
4159
Jeff Johnsone7245742012-09-05 17:12:55 -07004160 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004161 }
4162
4163 /*------------------------------------------------------------------------
4164 Fill in Event data and post to the Main FSM
4165 ------------------------------------------------------------------------*/
4166 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004167 wdiEventData.pEventData = pwdiWowlExitParams;
4168 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004170 wdiEventData.pUserData = pUserData;
4171
4172 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4173}/*WDI_WowlExitReq*/
4174
4175/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 the upper MAC wants to dynamically adjusts the listen
4178 interval based on the WLAN/MSM activity. Upon the call
4179 of this API the WLAN DAL will pack and send a HAL
4180 configure Apps Cpu Wakeup State request message to the
4181 lower RIVA sub-system.
4182
4183 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004184 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004185
Jeff Johnsone7245742012-09-05 17:12:55 -07004186
4187 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 Apps Cpu Wakeup State as specified by the
4189 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004190
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4192 back the response of the configure Apps Cpu Wakeup State
4193 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004194
Jeff Johnson295189b2012-06-20 16:38:30 -07004195 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004196 callback
4197
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 @return Result of the function call
4199*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004200WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004201WDI_ConfigureAppsCpuWakeupStateReq
4202(
4203 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4204 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4205 void* pUserData
4206)
4207{
4208 WDI_EventInfoType wdiEventData;
4209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4210
4211 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004212 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004213 ------------------------------------------------------------------------*/
4214 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4215 {
4216 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4217 "WDI API call before module is initialized - Fail request");
4218
Jeff Johnsone7245742012-09-05 17:12:55 -07004219 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004220 }
4221
4222 /*------------------------------------------------------------------------
4223 Fill in Event data and post to the Main FSM
4224 ------------------------------------------------------------------------*/
4225 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004226 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4227 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4228 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004229 wdiEventData.pUserData = pUserData;
4230
4231 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4232}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4233/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004234 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004235 to to perform a flush operation on a given AC. Upon the
4236 call of this API the WLAN DAL will pack and send a HAL
4237 Flush AC request message to the lower RIVA sub-system if
4238 DAL is in state STARTED.
4239
4240 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004241 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004242
4243 WDI_AddBAReq must have been called.
4244
Jeff Johnsone7245742012-09-05 17:12:55 -07004245 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004246 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004247
Jeff Johnson295189b2012-06-20 16:38:30 -07004248 wdiFlushAcRspCb: callback for passing back the response
4249 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004250
Jeff Johnson295189b2012-06-20 16:38:30 -07004251 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004252 callback
4253
Jeff Johnson295189b2012-06-20 16:38:30 -07004254 @see WDI_AddBAReq
4255 @return Result of the function call
4256*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004257WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004258WDI_FlushAcReq
4259(
4260 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4261 WDI_FlushAcRspCb wdiFlushAcRspCb,
4262 void* pUserData
4263)
4264{
4265 WDI_EventInfoType wdiEventData;
4266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4267
4268 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004269 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004270 ------------------------------------------------------------------------*/
4271 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4272 {
4273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4274 "WDI API call before module is initialized - Fail request");
4275
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004277 }
4278
4279 /*------------------------------------------------------------------------
4280 Fill in Event data and post to the Main FSM
4281 ------------------------------------------------------------------------*/
4282 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004283 wdiEventData.pEventData = pwdiFlushAcReqParams;
4284 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4285 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004286 wdiEventData.pUserData = pUserData;
4287
4288 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4289
4290}/*WDI_FlushAcReq*/
4291
4292/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 wants to notify the lower mac on a BT AMP event. This is
4295 to inform BTC-SLM that some BT AMP event occurred. Upon
4296 the call of this API the WLAN DAL will pack and send a
4297 HAL BT AMP event request message to the lower RIVA
4298 sub-system if DAL is in state STARTED.
4299
4300 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004301 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004302
Jeff Johnsone7245742012-09-05 17:12:55 -07004303
4304 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004305 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004306
Jeff Johnson295189b2012-06-20 16:38:30 -07004307 wdiBtAmpEventRspCb: callback for passing back the
4308 response of the BT AMP event operation received from the
4309 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004310
Jeff Johnson295189b2012-06-20 16:38:30 -07004311 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004312 callback
4313
Jeff Johnson295189b2012-06-20 16:38:30 -07004314 @return Result of the function call
4315*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004316WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004317WDI_BtAmpEventReq
4318(
4319 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4320 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4321 void* pUserData
4322)
4323{
4324 WDI_EventInfoType wdiEventData;
4325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4326
4327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004328 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004329 ------------------------------------------------------------------------*/
4330 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4331 {
4332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4333 "WDI API call before module is initialized - Fail request");
4334
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004336 }
4337
4338 /*------------------------------------------------------------------------
4339 Fill in Event data and post to the Main FSM
4340 ------------------------------------------------------------------------*/
4341 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004342 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4343 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4344 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 wdiEventData.pUserData = pUserData;
4346
4347 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4348
4349}/*WDI_BtAmpEventReq*/
4350
Jeff Johnsone7245742012-09-05 17:12:55 -07004351#ifdef FEATURE_OEM_DATA_SUPPORT
4352/**
4353 @brief WDI_Start Oem Data Req will be called when the upper MAC
4354 wants to notify the lower mac on a oem data Req event.Upon
4355 the call of this API the WLAN DAL will pack and send a
4356 HAL OEM Data Req event request message to the lower RIVA
4357 sub-system if DAL is in state STARTED.
4358
4359 In state BUSY this request will be queued. Request won't
4360 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004361
4362
Jeff Johnsone7245742012-09-05 17:12:55 -07004363
4364 @param pwdiOemDataReqParams: the Oem Data Req as
4365 specified by the Device Interface
4366
4367 wdiStartOemDataRspCb: callback for passing back the
4368 response of the Oem Data Req received from the
4369 device
4370
4371 pUserData: user data will be passed back with the
4372 callback
4373
4374 @return Result of the function call
4375*/
4376WDI_Status
4377WDI_StartOemDataReq
4378(
4379 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4380 WDI_oemDataRspCb wdiOemDataRspCb,
4381 void* pUserData
4382)
4383{
4384 WDI_EventInfoType wdiEventData;
4385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4386
4387 /*------------------------------------------------------------------------
4388 Sanity Check
4389 ------------------------------------------------------------------------*/
4390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4391 {
4392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4393 "WDI API call before module is initialized - Fail request");
4394
4395 return WDI_STATUS_E_NOT_ALLOWED;
4396 }
4397
4398 /*------------------------------------------------------------------------
4399 Fill in Event data and post to the Main FSM
4400 ------------------------------------------------------------------------*/
4401 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4402 wdiEventData.pEventData = pwdiOemDataReqParams;
4403 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4404 wdiEventData.pCBfnc = wdiOemDataRspCb;
4405 wdiEventData.pUserData = pUserData;
4406
4407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4408
4409
4410}
4411
4412#endif
4413
4414
4415/*========================================================================
4416
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004418
Jeff Johnson295189b2012-06-20 16:38:30 -07004419==========================================================================*/
4420/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004421 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004422 the WLAN HW to change the current channel of operation.
4423 Upon the call of this API the WLAN DAL will pack and
4424 send a HAL Start request message to the lower RIVA
4425 sub-system if DAL is in state STARTED.
4426
4427 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004428 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004429
4430 WDI_Start must have been called.
4431
Jeff Johnsone7245742012-09-05 17:12:55 -07004432 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004433 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004434
Jeff Johnson295189b2012-06-20 16:38:30 -07004435 wdiSwitchChRspCb: callback for passing back the response
4436 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004437
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004439 callback
4440
Jeff Johnson295189b2012-06-20 16:38:30 -07004441 @see WDI_Start
4442 @return Result of the function call
4443*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004444WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004445WDI_SwitchChReq
4446(
4447 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4448 WDI_SwitchChRspCb wdiSwitchChRspCb,
4449 void* pUserData
4450)
4451{
4452 WDI_EventInfoType wdiEventData;
4453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4454
4455 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004456 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004457 ------------------------------------------------------------------------*/
4458 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4459 {
4460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4461 "WDI API call before module is initialized - Fail request");
4462
Jeff Johnsone7245742012-09-05 17:12:55 -07004463 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 }
4465
4466 /*------------------------------------------------------------------------
4467 Fill in Event data and post to the Main FSM
4468 ------------------------------------------------------------------------*/
4469 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004470 wdiEventData.pEventData = pwdiSwitchChReqParams;
4471 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4472 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 wdiEventData.pUserData = pUserData;
4474
4475 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4476
4477}/*WDI_SwitchChReq*/
4478
4479
4480/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004481 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004482 wishes to add or update a STA in HW. Upon the call of
4483 this API the WLAN DAL will pack and send a HAL Start
4484 message request message to the lower RIVA sub-system if
4485 DAL is in state STARTED.
4486
4487 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004488 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004489
4490 WDI_Start must have been called.
4491
Jeff Johnsone7245742012-09-05 17:12:55 -07004492 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004493 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004494
Jeff Johnson295189b2012-06-20 16:38:30 -07004495 wdiConfigSTARspCb: callback for passing back the
4496 response of the config STA operation received from the
4497 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_ConfigSTAReq
4507(
4508 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4509 WDI_ConfigSTARspCb wdiConfigSTARspCb,
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_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004531 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4532 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4533 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004534 wdiEventData.pUserData = pUserData;
4535
4536 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4537
4538}/*WDI_ConfigSTAReq*/
4539
4540/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004541 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004542 wants to change the state of an ongoing link. Upon the
4543 call of this API the WLAN DAL will pack and send a HAL
4544 Start message request message to the lower RIVA
4545 sub-system if DAL is in state STARTED.
4546
4547 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004548 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004549
4550 WDI_JoinStartReq must have been called.
4551
Jeff Johnsone7245742012-09-05 17:12:55 -07004552 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004554
Jeff Johnson295189b2012-06-20 16:38:30 -07004555 wdiSetLinkStateRspCb: callback for passing back the
4556 response of the set link state operation received from
4557 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004558
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004560 callback
4561
Jeff Johnson295189b2012-06-20 16:38:30 -07004562 @see WDI_JoinStartReq
4563 @return Result of the function call
4564*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004565WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004566WDI_SetLinkStateReq
4567(
4568 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4569 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4570 void* pUserData
4571)
4572{
4573 WDI_EventInfoType wdiEventData;
4574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4575
4576 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 ------------------------------------------------------------------------*/
4579 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4580 {
4581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4582 "WDI API call before module is initialized - Fail request");
4583
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004585 }
4586
4587 /*------------------------------------------------------------------------
4588 Fill in Event data and post to the Main FSM
4589 ------------------------------------------------------------------------*/
4590 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004591 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4592 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4593 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004594 wdiEventData.pUserData = pUserData;
4595
4596 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4597
4598}/*WDI_SetLinkStateReq*/
4599
4600
4601/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004602 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004603 to get statistics (MIB counters) from the device. Upon
4604 the call of this API the WLAN DAL will pack and send a
4605 HAL Start request message to the lower RIVA sub-system
4606 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_Start must have been called.
4612
Jeff Johnsone7245742012-09-05 17:12:55 -07004613 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004614 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004615
Jeff Johnson295189b2012-06-20 16:38:30 -07004616 wdiGetStatsRspCb: callback for passing back the response
4617 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004618
Jeff Johnson295189b2012-06-20 16:38:30 -07004619 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004620 callback
4621
Jeff Johnson295189b2012-06-20 16:38:30 -07004622 @see WDI_Start
4623 @return Result of the function call
4624*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004625WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004626WDI_GetStatsReq
4627(
4628 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4629 WDI_GetStatsRspCb wdiGetStatsRspCb,
4630 void* pUserData
4631)
4632{
4633 WDI_EventInfoType wdiEventData;
4634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4635
4636 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 ------------------------------------------------------------------------*/
4639 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4640 {
4641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4642 "WDI API call before module is initialized - Fail request");
4643
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 }
4646
4647 /*------------------------------------------------------------------------
4648 Fill in Event data and post to the Main FSM
4649 ------------------------------------------------------------------------*/
4650 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004651 wdiEventData.pEventData = pwdiGetStatsReqParams;
4652 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4653 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004654 wdiEventData.pUserData = pUserData;
4655
4656 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4657
4658}/*WDI_GetStatsReq*/
4659
4660
4661/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004662 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004663 it wishes to change the configuration of the WLAN
4664 Device. Upon the call of this API the WLAN DAL will pack
4665 and send a HAL Update CFG request message to the lower
4666 RIVA sub-system if DAL is in state STARTED.
4667
4668 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004669 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004670
4671 WDI_Start must have been called.
4672
Jeff Johnsone7245742012-09-05 17:12:55 -07004673 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004674 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004675
Jeff Johnson295189b2012-06-20 16:38:30 -07004676 wdiUpdateCfgsRspCb: callback for passing back the
4677 response of the update cfg operation received from the
4678 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_UpdateCfgReq
4688(
4689 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4690 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
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_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004712 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4713 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4714 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004715 wdiEventData.pUserData = pUserData;
4716
4717 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4718
4719}/*WDI_UpdateCfgReq*/
4720
4721
4722
4723/**
4724 @brief WDI_AddBAReq will be called when the upper MAC has setup
4725 successfully a BA session and needs to notify the HW for
4726 the appropriate settings to take place. Upon the call of
4727 this API the WLAN DAL will pack and send a HAL Add BA
4728 request message to the lower RIVA sub-system if DAL is
4729 in state STARTED.
4730
4731 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004732 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004733
4734 WDI_PostAssocReq must have been called.
4735
4736 @param wdiAddBAReqParams: the add BA parameters as specified by
4737 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004738
Jeff Johnson295189b2012-06-20 16:38:30 -07004739 wdiAddBARspCb: callback for passing back the response of
4740 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004741
Jeff Johnson295189b2012-06-20 16:38:30 -07004742 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004743 callback
4744
Jeff Johnson295189b2012-06-20 16:38:30 -07004745 @see WDI_PostAssocReq
4746 @return Result of the function call
4747*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004748WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004749WDI_AddBAReq
4750(
4751 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4752 WDI_AddBARspCb wdiAddBARspCb,
4753 void* pUserData
4754)
4755{
4756 WDI_EventInfoType wdiEventData;
4757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4758
4759 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004760 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004761 ------------------------------------------------------------------------*/
4762 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4763 {
4764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4765 "WDI API call before module is initialized - Fail request");
4766
Jeff Johnsone7245742012-09-05 17:12:55 -07004767 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004768 }
4769
4770 /*------------------------------------------------------------------------
4771 Fill in Event data and post to the Main FSM
4772 ------------------------------------------------------------------------*/
4773 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004774 wdiEventData.pEventData = pwdiAddBAReqParams;
4775 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4776 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004777 wdiEventData.pUserData = pUserData;
4778
4779 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4780
4781}/*WDI_AddBAReq*/
4782
4783
4784/**
4785 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4786 successfully a BA session and needs to notify the HW for
4787 the appropriate settings to take place. Upon the call of
4788 this API the WLAN DAL will pack and send a HAL Add BA
4789 request message to the lower RIVA sub-system if DAL is
4790 in state STARTED.
4791
4792 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004793 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004794
4795 WDI_PostAssocReq must have been called.
4796
4797 @param wdiAddBAReqParams: the add BA parameters as specified by
4798 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004799
Jeff Johnson295189b2012-06-20 16:38:30 -07004800 wdiAddBARspCb: callback for passing back the response of
4801 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004802
Jeff Johnson295189b2012-06-20 16:38:30 -07004803 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004804 callback
4805
Jeff Johnson295189b2012-06-20 16:38:30 -07004806 @see WDI_PostAssocReq
4807 @return Result of the function call
4808*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004809WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004810WDI_TriggerBAReq
4811(
4812 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4813 WDI_TriggerBARspCb wdiTriggerBARspCb,
4814 void* pUserData
4815)
4816{
4817 WDI_EventInfoType wdiEventData;
4818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4819
4820 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004821 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004822 ------------------------------------------------------------------------*/
4823 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4824 {
4825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4826 "WDI API call before module is initialized - Fail request");
4827
Jeff Johnsone7245742012-09-05 17:12:55 -07004828 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004829 }
4830
4831 /*------------------------------------------------------------------------
4832 Fill in Event data and post to the Main FSM
4833 ------------------------------------------------------------------------*/
4834 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004835 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4836 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4837 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004838 wdiEventData.pUserData = pUserData;
4839
4840 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4841
4842}/*WDI_AddBAReq*/
4843
4844/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004845 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004846 wishes to update any of the Beacon parameters used by HW.
4847 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4848 message to the lower RIVA sub-system if DAL is in state
4849 STARTED.
4850
4851 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004852 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004853
4854 WDI_PostAssocReq must have been called.
4855
Jeff Johnsone7245742012-09-05 17:12:55 -07004856 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004857 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004858
Jeff Johnson295189b2012-06-20 16:38:30 -07004859 wdiUpdateBeaconParamsRspCb: callback for passing back the
4860 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004861
Jeff Johnson295189b2012-06-20 16:38:30 -07004862 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004863 callback
4864
Jeff Johnson295189b2012-06-20 16:38:30 -07004865 @see WDI_PostAssocReq
4866 @return Result of the function call
4867*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004868WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004869WDI_UpdateBeaconParamsReq
4870(
4871 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4872 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4873 void* pUserData
4874)
4875{
4876 WDI_EventInfoType wdiEventData;
4877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4878
4879 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004880 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004881 ------------------------------------------------------------------------*/
4882 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4883 {
4884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4885 "WDI API call before module is initialized - Fail request");
4886
Jeff Johnsone7245742012-09-05 17:12:55 -07004887 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004888 }
4889
4890 /*------------------------------------------------------------------------
4891 Fill in Event data and post to the Main FSM
4892 ------------------------------------------------------------------------*/
4893 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004894 wdiEventData.pEventData = pwdiUpdateBeaconParams;
4895 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
4896 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004897 wdiEventData.pUserData = pUserData;
4898
4899 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4900
4901}/*WDI_UpdateBeaconParamsReq*/
4902
4903/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004904 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 wishes to update the Beacon template used by HW.
4906 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
4907 message to the lower RIVA sub-system if DAL is in state
4908 STARTED.
4909
4910 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004911 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004912
4913 WDI_PostAssocReq must have been called.
4914
Jeff Johnsone7245742012-09-05 17:12:55 -07004915 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004916 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004917
Jeff Johnson295189b2012-06-20 16:38:30 -07004918 wdiSendBeaconParamsRspCb: callback for passing back the
4919 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004920
Jeff Johnson295189b2012-06-20 16:38:30 -07004921 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004922 callback
4923
Jeff Johnson295189b2012-06-20 16:38:30 -07004924 @see WDI_PostAssocReq
4925 @return Result of the function call
4926*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004927WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004928WDI_SendBeaconParamsReq
4929(
4930 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
4931 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
4932 void* pUserData
4933)
4934{
4935 WDI_EventInfoType wdiEventData;
4936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4937
4938 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004939 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004940 ------------------------------------------------------------------------*/
4941 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4942 {
4943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4944 "WDI API call before module is initialized - Fail request");
4945
Jeff Johnsone7245742012-09-05 17:12:55 -07004946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004947 }
4948
4949 /*------------------------------------------------------------------------
4950 Fill in Event data and post to the Main FSM
4951 ------------------------------------------------------------------------*/
4952 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004953 wdiEventData.pEventData = pwdiSendBeaconParams;
4954 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
4955 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004956 wdiEventData.pUserData = pUserData;
4957
4958 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4959
4960}/*WDI_SendBeaconParamsReq*/
4961
4962/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004963 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07004964 upper MAC wants to update the probe response template to
4965 be transmitted as Soft AP
4966 Upon the call of this API the WLAN DAL will
4967 pack and send the probe rsp template message to the
4968 lower RIVA sub-system if DAL is in state STARTED.
4969
4970 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004971 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004972
4973
Jeff Johnsone7245742012-09-05 17:12:55 -07004974 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004975 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004976
Jeff Johnson295189b2012-06-20 16:38:30 -07004977 wdiSendBeaconParamsRspCb: callback for passing back the
4978 response of the Send Beacon Params operation received
4979 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004980
Jeff Johnson295189b2012-06-20 16:38:30 -07004981 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004982 callback
4983
Jeff Johnson295189b2012-06-20 16:38:30 -07004984 @see WDI_AddBAReq
4985 @return Result of the function call
4986*/
4987
Jeff Johnsone7245742012-09-05 17:12:55 -07004988WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004989WDI_UpdateProbeRspTemplateReq
4990(
4991 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
4992 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
4993 void* pUserData
4994)
4995{
4996 WDI_EventInfoType wdiEventData;
4997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4998
4999 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005000 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 ------------------------------------------------------------------------*/
5002 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5003 {
5004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5005 "WDI API call before module is initialized - Fail request");
5006
Jeff Johnsone7245742012-09-05 17:12:55 -07005007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005008 }
5009
5010 /*------------------------------------------------------------------------
5011 Fill in Event data and post to the Main FSM
5012 ------------------------------------------------------------------------*/
5013 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005014 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5015 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5016 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005017 wdiEventData.pUserData = pUserData;
5018
5019 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5020
5021}/*WDI_UpdateProbeRspTemplateReq*/
5022
5023/**
5024 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5025 to the NV memory.
5026
5027
5028 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5029 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005030
Jeff Johnson295189b2012-06-20 16:38:30 -07005031 wdiNvDownloadRspCb: callback for passing back the response of
5032 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005033
Jeff Johnson295189b2012-06-20 16:38:30 -07005034 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005035 callback
5036
Jeff Johnson295189b2012-06-20 16:38:30 -07005037 @see WDI_PostAssocReq
5038 @return Result of the function call
5039*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005040WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005041WDI_NvDownloadReq
5042(
5043 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5044 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5045 void* pUserData
5046)
5047{
5048 WDI_EventInfoType wdiEventData;
5049
5050 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005051 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005052 ------------------------------------------------------------------------*/
5053 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5054 {
5055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5056 "WDI API call before module is initialized - Fail request");
5057
Jeff Johnsone7245742012-09-05 17:12:55 -07005058 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005059 }
5060
5061 /*------------------------------------------------------------------------
5062 Fill in Event data and post to the Main FSM
5063 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005064 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5065 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5066 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5067 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005068 wdiEventData.pUserData = pUserData;
5069
5070 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5071
5072}/*WDI_NVDownloadReq*/
5073
5074#ifdef WLAN_FEATURE_P2P
5075/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005076 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005077 upper MAC wants to send Notice of Absence
5078 Upon the call of this API the WLAN DAL will
5079 pack and send the probe rsp template message to the
5080 lower RIVA sub-system if DAL is in state STARTED.
5081
5082 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005083 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005084
5085
Jeff Johnsone7245742012-09-05 17:12:55 -07005086 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005088
Jeff Johnson295189b2012-06-20 16:38:30 -07005089 wdiSendBeaconParamsRspCb: callback for passing back the
5090 response of the Send Beacon Params operation received
5091 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005092
Jeff Johnson295189b2012-06-20 16:38:30 -07005093 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 callback
5095
Jeff Johnson295189b2012-06-20 16:38:30 -07005096 @see WDI_AddBAReq
5097 @return Result of the function call
5098*/
5099WDI_Status
5100WDI_SetP2PGONOAReq
5101(
5102 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5103 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5104 void* pUserData
5105)
5106{
5107 WDI_EventInfoType wdiEventData;
5108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5109
5110 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005111 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 ------------------------------------------------------------------------*/
5113 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5114 {
5115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5116 "WDI API call before module is initialized - Fail request");
5117
Jeff Johnsone7245742012-09-05 17:12:55 -07005118 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005119 }
5120
5121 /*------------------------------------------------------------------------
5122 Fill in Event data and post to the Main FSM
5123 ------------------------------------------------------------------------*/
5124 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005125 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5126 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5127 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005128 wdiEventData.pUserData = pUserData;
5129
5130 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5131
5132}/*WDI_SetP2PGONOAReq*/
5133#endif
5134
5135/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005136 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005137 UMAC wanted to add STA self while opening any new session
5138 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005139 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005140
5141
Jeff Johnsone7245742012-09-05 17:12:55 -07005142 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005143 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005144
Jeff Johnson295189b2012-06-20 16:38:30 -07005145 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005146 callback
5147
5148 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005149 @return Result of the function call
5150*/
5151WDI_Status
5152WDI_AddSTASelfReq
5153(
5154 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5155 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5156 void* pUserData
5157)
5158{
5159 WDI_EventInfoType wdiEventData;
5160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5161
5162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005163 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005164 ------------------------------------------------------------------------*/
5165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5166 {
5167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5168 "WDI API call before module is initialized - Fail request");
5169
Jeff Johnsone7245742012-09-05 17:12:55 -07005170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005171 }
5172
5173 /*------------------------------------------------------------------------
5174 Fill in Event data and post to the Main FSM
5175 ------------------------------------------------------------------------*/
5176 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5178 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5179 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005180 wdiEventData.pUserData = pUserData;
5181
5182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5183
5184}/*WDI_AddSTASelfReq*/
5185
5186
Jeff Johnsone7245742012-09-05 17:12:55 -07005187#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005188/**
5189 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5190 the device of a successful add TSpec negotiation. HW
5191 needs to receive the TSpec Info from the UMAC in order
5192 to configure properly the QoS data traffic. Upon the
5193 call of this API the WLAN DAL will pack and send a HAL
5194 Add TS request message to the lower RIVA sub-system if
5195 DAL is in state STARTED.
5196
5197 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005198 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005199
5200 WDI_PostAssocReq must have been called.
5201
5202 @param wdiAddTsReqParams: the add TS parameters as specified by
5203 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005204
Jeff Johnson295189b2012-06-20 16:38:30 -07005205 wdiAddTsRspCb: callback for passing back the response of
5206 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005207
Jeff Johnson295189b2012-06-20 16:38:30 -07005208 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005209 callback
5210
Jeff Johnson295189b2012-06-20 16:38:30 -07005211 @see WDI_PostAssocReq
5212 @return Result of the function call
5213*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005214WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005215WDI_AggrAddTSReq
5216(
5217 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5218 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5219 void* pUserData
5220)
5221{
5222 WDI_EventInfoType wdiEventData;
5223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5224
5225 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005226 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005227 ------------------------------------------------------------------------*/
5228 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5229 {
5230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5231 "WDI API call before module is initialized - Fail request");
5232
Jeff Johnsone7245742012-09-05 17:12:55 -07005233 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005234 }
5235
5236 /*------------------------------------------------------------------------
5237 Fill in Event data and post to the Main FSM
5238 ------------------------------------------------------------------------*/
5239 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005240 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5241 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5242 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005243 wdiEventData.pUserData = pUserData;
5244
5245 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5246
5247}/*WDI_AggrAddTSReq*/
5248
5249#endif /* WLAN_FEATURE_VOWIFI_11R */
5250
Jeff Johnson295189b2012-06-20 16:38:30 -07005251/**
5252 @brief WDI_FTMCommandReq
5253 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005254
5255 @param ftmCommandReq: FTM Command Body
5256 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005257 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005258
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 @see
5260 @return Result of the function call
5261*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005262WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005263WDI_FTMCommandReq
5264(
5265 WDI_FTMCommandReqType *ftmCommandReq,
5266 WDI_FTMCommandRspCb ftmCommandRspCb,
5267 void *pUserData
5268)
5269{
5270 WDI_EventInfoType wdiEventData;
5271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5272
5273 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005274 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005275 ------------------------------------------------------------------------*/
5276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5277 {
5278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5279 "WDI API call before module is initialized - Fail request");
5280
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 }
5283
5284 /*------------------------------------------------------------------------
5285 Fill in Event data and post to the Main FSM
5286 ------------------------------------------------------------------------*/
5287 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5288 wdiEventData.pEventData = (void *)ftmCommandReq;
5289 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5290 wdiEventData.pCBfnc = ftmCommandRspCb;
5291 wdiEventData.pUserData = pUserData;
5292
5293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5294}
Jeff Johnson295189b2012-06-20 16:38:30 -07005295/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005296 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005297
5298 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005299 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005300
5301
5302 @param pwdiResumeReqParams: as specified by
5303 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005304
Jeff Johnson295189b2012-06-20 16:38:30 -07005305 wdiResumeReqRspCb: callback for passing back the response of
5306 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005307
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 callback
5310
5311 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005312 @return Result of the function call
5313*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005314WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005315WDI_HostResumeReq
5316(
5317 WDI_ResumeParamsType* pwdiResumeReqParams,
5318 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5319 void* pUserData
5320)
5321{
5322 WDI_EventInfoType wdiEventData;
5323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5324
5325 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005326 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005327 ------------------------------------------------------------------------*/
5328 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5329 {
5330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5331 "WDI API call before module is initialized - Fail request");
5332
Jeff Johnsone7245742012-09-05 17:12:55 -07005333 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005334 }
5335
5336 /*------------------------------------------------------------------------
5337 Fill in Event data and post to the Main FSM
5338 ------------------------------------------------------------------------*/
5339 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005340 wdiEventData.pEventData = pwdiResumeReqParams;
5341 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5342 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005343 wdiEventData.pUserData = pUserData;
5344
5345 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5346
5347}/*WDI_HostResumeReq*/
5348
5349/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005350 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005351
5352 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005353 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005354
5355
5356 @param pwdiDelStaSelfReqParams: as specified by
5357 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005358
Jeff Johnson295189b2012-06-20 16:38:30 -07005359 wdiDelStaSelfRspCb: callback for passing back the response of
5360 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005361
Jeff Johnson295189b2012-06-20 16:38:30 -07005362 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 callback
5364
Jeff Johnson295189b2012-06-20 16:38:30 -07005365 @see WDI_PostAssocReq
5366 @return Result of the function call
5367*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005368WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005369WDI_DelSTASelfReq
5370(
5371 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5372 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5373 void* pUserData
5374)
5375{
5376 WDI_EventInfoType wdiEventData;
5377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5378
5379 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005380 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 ------------------------------------------------------------------------*/
5382 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5383 {
5384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5385 "WDI API call before module is initialized - Fail request");
5386
Jeff Johnsone7245742012-09-05 17:12:55 -07005387 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005388 }
5389
5390 /*------------------------------------------------------------------------
5391 Fill in Event data and post to the Main FSM
5392 ------------------------------------------------------------------------*/
5393 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005394 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5395 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5396 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005397 wdiEventData.pUserData = pUserData;
5398
5399 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5400
5401}/*WDI_AggrAddTSReq*/
5402
5403/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005404 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5405 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005406 Upon the call of this API the WLAN DAL will pack
5407 and send a HAL Set Tx Per Tracking request message to the
5408 lower RIVA sub-system if DAL is in state STARTED.
5409
5410 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005411 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005412
Jeff Johnsone7245742012-09-05 17:12:55 -07005413 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005414 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005415
Jeff Johnson295189b2012-06-20 16:38:30 -07005416 pwdiSetTxPerTrackingRspCb: callback for passing back the
5417 response of the set Tx PER Tracking configurations operation received
5418 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005419
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005421 callback
5422
Jeff Johnson295189b2012-06-20 16:38:30 -07005423 @return Result of the function call
5424*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005425WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005426WDI_SetTxPerTrackingReq
5427(
5428 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5429 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5430 void* pUserData
5431)
5432{
5433 WDI_EventInfoType wdiEventData;
5434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5435
5436 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005437 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005438 ------------------------------------------------------------------------*/
5439 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5440 {
5441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5442 "WDI API call before module is initialized - Fail request");
5443
Jeff Johnsone7245742012-09-05 17:12:55 -07005444 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005445 }
5446
5447 /*------------------------------------------------------------------------
5448 Fill in Event data and post to the Main FSM
5449 ------------------------------------------------------------------------*/
5450 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005451 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005452 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005453 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005454 wdiEventData.pUserData = pUserData;
5455
5456 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5457
5458}/*WDI_SetTxPerTrackingReq*/
5459
5460/**
5461 @brief WDI_SetTmLevelReq
5462 If HW Thermal condition changed, driver should react based on new
5463 HW thermal condition.
5464
5465 @param pwdiSetTmLevelReq: New thermal condition information
5466
5467 pwdiSetTmLevelRspCb: callback
5468
5469 usrData: user data will be passed back with the
5470 callback
5471
5472 @return Result of the function call
5473*/
5474WDI_Status
5475WDI_SetTmLevelReq
5476(
5477 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5478 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5479 void *usrData
5480)
5481{
5482 WDI_EventInfoType wdiEventData;
5483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5484
5485 /*------------------------------------------------------------------------
5486 Sanity Check
5487 ------------------------------------------------------------------------*/
5488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5489 {
5490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5491 "WDI API call before module is initialized - Fail request");
5492
5493 return WDI_STATUS_E_NOT_ALLOWED;
5494 }
5495
5496 /*------------------------------------------------------------------------
5497 Fill in Event data and post to the Main FSM
5498 ------------------------------------------------------------------------*/
5499 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5500 wdiEventData.pEventData = pwdiSetTmLevelReq;
5501 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5502 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5503 wdiEventData.pUserData = usrData;
5504
5505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5506}
5507
5508/**
5509 @brief WDI_HostSuspendInd
5510
5511 Suspend Indication from the upper layer will be sent
5512 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005513
Jeff Johnson295189b2012-06-20 16:38:30 -07005514 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005515
5516 @see
5517
Jeff Johnson295189b2012-06-20 16:38:30 -07005518 @return Status of the request
5519*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005520WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005521WDI_HostSuspendInd
5522(
5523 WDI_SuspendParamsType* pwdiSuspendIndParams
5524)
5525{
5526
5527 WDI_EventInfoType wdiEventData;
5528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5529
5530 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005532 ------------------------------------------------------------------------*/
5533 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5534 {
5535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5536 "WDI API call before module is initialized - Fail request");
5537
Jeff Johnsone7245742012-09-05 17:12:55 -07005538 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 }
5540
5541 /*------------------------------------------------------------------------
5542 Fill in Event data and post to the Main FSM
5543 ------------------------------------------------------------------------*/
5544 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005545 wdiEventData.pEventData = pwdiSuspendIndParams;
5546 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5547 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005548 wdiEventData.pUserData = NULL;
5549
5550 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5551
5552}/*WDI_HostSuspendInd*/
5553
5554/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005555 @brief WDI_TrafficStatsInd
5556 Traffic Stats from the upper layer will be sent
5557 down to HAL
5558
5559 @param WDI_TrafficStatsIndType
5560
5561 @see
5562
5563 @return Status of the request
5564*/
5565WDI_Status
5566WDI_TrafficStatsInd
5567(
5568 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5569)
5570{
5571
5572 WDI_EventInfoType wdiEventData;
5573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5574
5575 /*------------------------------------------------------------------------
5576 Sanity Check
5577 ------------------------------------------------------------------------*/
5578 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5579 {
5580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5581 "WDI API call before module is initialized - Fail request");
5582
5583 return WDI_STATUS_E_NOT_ALLOWED;
5584 }
5585
5586 /*------------------------------------------------------------------------
5587 Fill in Event data and post to the Main FSM
5588 ------------------------------------------------------------------------*/
5589 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5590 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5591 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5592 wdiEventData.pCBfnc = NULL;
5593 wdiEventData.pUserData = NULL;
5594
5595 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5596
5597}/*WDI_TrafficStatsInd*/
5598
5599/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005600 @brief WDI_HALDumpCmdReq
5601 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005602
5603 @param halDumpCmdReqParams: Hal Dump Command Body
5604 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005606
Jeff Johnson295189b2012-06-20 16:38:30 -07005607 @see
5608 @return Result of the function call
5609*/
5610WDI_Status WDI_HALDumpCmdReq
5611(
5612 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5613 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5614 void *pUserData
5615)
5616{
5617 WDI_EventInfoType wdiEventData;
5618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5619
5620 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005621 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005622 ------------------------------------------------------------------------*/
5623 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5624 {
5625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5626 "WDI API call before module is initialized - Fail request");
5627
Jeff Johnsone7245742012-09-05 17:12:55 -07005628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005629 }
5630
5631 /*------------------------------------------------------------------------
5632 Fill in Event data and post to the Main FSM
5633 ------------------------------------------------------------------------*/
5634 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5635 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5636 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5637 wdiEventData.pCBfnc = halDumpCmdRspCb;
5638 wdiEventData.pUserData = pUserData;
5639
5640 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5641}
5642
Jeff Johnsone7245742012-09-05 17:12:55 -07005643/*============================================================================
5644
Jeff Johnson295189b2012-06-20 16:38:30 -07005645 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005646
Jeff Johnson295189b2012-06-20 16:38:30 -07005647 ============================================================================*/
5648
5649/**
5650 @brief Main FSM Start function for all states except BUSY
5651
Jeff Johnsone7245742012-09-05 17:12:55 -07005652
5653 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005654 wdiEV: event posted to the main DAL FSM
5655 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005656 structure
5657
Jeff Johnson295189b2012-06-20 16:38:30 -07005658 @see
5659 @return Result of the function call
5660*/
5661WDI_Status
5662WDI_PostMainEvent
5663(
Jeff Johnsone7245742012-09-05 17:12:55 -07005664 WDI_ControlBlockType* pWDICtx,
5665 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005666 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005667
Jeff Johnson295189b2012-06-20 16:38:30 -07005668)
5669{
Jeff Johnsone7245742012-09-05 17:12:55 -07005670 WDI_Status wdiStatus;
5671 WDI_MainFuncType pfnWDIMainEvHdlr;
5672 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5674
5675 /*-------------------------------------------------------------------------
5676 Sanity check
5677 -------------------------------------------------------------------------*/
5678 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5679 ( wdiEV >= WDI_MAX_EVENT ))
5680 {
5681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5682 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5683 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 }
5686
5687 /*Access to the global state must be locked */
5688 wpalMutexAcquire(&pWDICtx->wptMutex);
5689
5690 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005691 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005692
5693 wdiOldState = pWDICtx->uGlobalState;
5694
5695 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005696 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5697 response comes from CCPU for the request sent by host:
5698 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 -07005699 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 -07005700 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005701 CCPU:
5702 don't change the state */
5703 if ( WDI_RESPONSE_EVENT != wdiEV)
5704 {
5705 /*Transition to BUSY State - the request is now being processed by the FSM,
5706 if the request fails we shall transition back to the old state, if not
5707 the request will manage its own state transition*/
5708 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5709 }
5710 /* If the state function associated with the EV is NULL it means that this
5711 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005712 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005713 {
5714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005715 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005716 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005717 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 }
5719 else
5720 {
5721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005722 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005723 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005724 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005725 }
5726
5727 /* If a request handles itself well it will end up in a success or in a
5728 pending
5729 Success - means that the request was processed and the proper state
5730 transition already occurred or will occur when the resp is received
5731 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005732
Jeff Johnson295189b2012-06-20 16:38:30 -07005733 Pending - means the request could not be processed at this moment in time
5734 because the FSM was already busy so no state transition or dequeueing
5735 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005736
Jeff Johnson295189b2012-06-20 16:38:30 -07005737 Success for synchronous case means that the transition may occur and
5738 processing of pending requests may continue - so it should go through
5739 and restores the state and continue processing queued requests*/
5740 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5741 ( WDI_STATUS_PENDING != wdiStatus ))
5742 {
5743 if ( WDI_RESPONSE_EVENT != wdiEV)
5744 {
5745 /*The request has failed or could not be processed - transition back to
5746 the old state - check to see if anything was queued and try to execute
5747 The dequeue logic should post a message to a thread and return - no
5748 actual processing can occur */
5749 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5750 }
5751 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005752
Jeff Johnson295189b2012-06-20 16:38:30 -07005753 }
5754
5755 /* we have completed processing the event */
5756 wpalMutexRelease(&pWDICtx->wptMutex);
5757
Jeff Johnsone7245742012-09-05 17:12:55 -07005758 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005759
5760}/*WDI_PostMainEvent*/
5761
5762
5763/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005764 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005765--------------------------------------------------------------------------*/
5766/**
5767 @brief Main FSM Start function for all states except BUSY
5768
Jeff Johnsone7245742012-09-05 17:12:55 -07005769
5770 @param pWDICtx: pointer to the WLAN DAL context
5771 pEventData: pointer to the event information structure
5772
Jeff Johnson295189b2012-06-20 16:38:30 -07005773 @see
5774 @return Result of the function call
5775*/
5776WDI_Status
5777WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005778(
Jeff Johnson295189b2012-06-20 16:38:30 -07005779 WDI_ControlBlockType* pWDICtx,
5780 WDI_EventInfoType* pEventData
5781)
5782{
5783
5784 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005785 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005786 ----------------------------------------------------------------------*/
5787 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5788 {
5789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005790 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 pWDICtx, pEventData);
5792 return WDI_STATUS_E_FAILURE;
5793 }
5794
5795 wpalMutexAcquire(&pWDICtx->wptMutex);
5796
5797 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005798 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005799 ----------------------------------------------------------------------*/
5800 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5801 {
5802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5803 "Control Transport not yet Open - queueing the request");
5804
5805 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005806 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005807
5808 wpalMutexRelease(&pWDICtx->wptMutex);
5809 return WDI_STATUS_PENDING;
5810 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005811
Jeff Johnson295189b2012-06-20 16:38:30 -07005812 wpalMutexRelease(&pWDICtx->wptMutex);
5813
5814 /*Return Success*/
5815 return WDI_ProcessRequest( pWDICtx, pEventData );
5816
5817}/*WDI_MainStart*/
5818
5819/**
5820 @brief Main FSM Response function for state INIT
5821
Jeff Johnsone7245742012-09-05 17:12:55 -07005822
5823 @param pWDICtx: pointer to the WLAN DAL context
5824 pEventData: pointer to the event information structure
5825
Jeff Johnson295189b2012-06-20 16:38:30 -07005826 @see
5827 @return Result of the function call
5828*/
5829WDI_Status
5830WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005831(
Jeff Johnson295189b2012-06-20 16:38:30 -07005832 WDI_ControlBlockType* pWDICtx,
5833 WDI_EventInfoType* pEventData
5834)
5835{
5836 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005837 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005839 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005840
5841 /*Return Success*/
5842 return WDI_STATUS_E_NOT_ALLOWED;
5843}/* WDI_MainRspInit */
5844
5845/**
5846 @brief Main FSM Close function for all states except BUSY
5847
Jeff Johnsone7245742012-09-05 17:12:55 -07005848
5849 @param pWDICtx: pointer to the WLAN DAL context
5850 pEventData: pointer to the event information structure
5851
Jeff Johnson295189b2012-06-20 16:38:30 -07005852 @see
5853 @return Result of the function call
5854*/
5855WDI_Status
5856WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005857(
Jeff Johnson295189b2012-06-20 16:38:30 -07005858 WDI_ControlBlockType* pWDICtx,
5859 WDI_EventInfoType* pEventData
5860)
5861{
5862
5863 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005864 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005865 ----------------------------------------------------------------------*/
5866 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5867 {
5868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005869 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 pWDICtx, pEventData);
5871 return WDI_STATUS_E_FAILURE;
5872 }
5873
5874 /*Return Success*/
5875 return WDI_ProcessRequest( pWDICtx, pEventData );
5876
5877}/*WDI_MainClose*/
5878/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005879 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005880--------------------------------------------------------------------------*/
5881/**
5882 @brief Main FSM Start function for state STARTED
5883
Jeff Johnsone7245742012-09-05 17:12:55 -07005884
5885 @param pWDICtx: pointer to the WLAN DAL context
5886 pEventData: pointer to the event information structure
5887
Jeff Johnson295189b2012-06-20 16:38:30 -07005888 @see
5889 @return Result of the function call
5890*/
5891WDI_Status
5892WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005893(
Jeff Johnson295189b2012-06-20 16:38:30 -07005894 WDI_ControlBlockType* pWDICtx,
5895 WDI_EventInfoType* pEventData
5896)
5897{
5898 WDI_StartRspCb wdiStartRspCb = NULL;
5899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5900
5901 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 ----------------------------------------------------------------------*/
5904 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5905 {
5906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005907 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 pWDICtx, pEventData);
5909 return WDI_STATUS_E_FAILURE;
5910 }
5911
5912 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005913 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07005914 ----------------------------------------------------------------------*/
5915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005916 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07005917
5918 wpalMutexAcquire(&pWDICtx->wptMutex);
5919
5920 /*Transition back to started because the post function transitioned us to
5921 busy*/
5922 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
5923
5924 /*Check to see if any request is pending*/
5925 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005926
Jeff Johnson295189b2012-06-20 16:38:30 -07005927 wpalMutexRelease(&pWDICtx->wptMutex);
5928
5929 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005930 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
5931
Jeff Johnson295189b2012-06-20 16:38:30 -07005932 /*Notify UMAC*/
5933 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
5934
5935 /*Return Success*/
5936 return WDI_STATUS_SUCCESS;
5937
5938}/*WDI_MainStartStarted*/
5939
5940/**
5941 @brief Main FSM Stop function for state STARTED
5942
Jeff Johnsone7245742012-09-05 17:12:55 -07005943
5944 @param pWDICtx: pointer to the WLAN DAL context
5945 pEventData: pointer to the event information structure
5946
Jeff Johnson295189b2012-06-20 16:38:30 -07005947 @see
5948 @return Result of the function call
5949*/
5950WDI_Status
5951WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005952(
Jeff Johnson295189b2012-06-20 16:38:30 -07005953 WDI_ControlBlockType* pWDICtx,
5954 WDI_EventInfoType* pEventData
5955)
5956{
5957 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005958 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005959 ----------------------------------------------------------------------*/
5960 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5961 {
5962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005963 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005964 pWDICtx, pEventData);
5965 return WDI_STATUS_E_FAILURE;
5966 }
5967
5968 /*State at this point is BUSY - because we enter this state before posting
5969 an event to the FSM in order to prevent potential race conditions*/
5970
5971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5972 "Processing stop request in FSM");
5973
5974 /*Return Success*/
5975 return WDI_ProcessRequest( pWDICtx, pEventData );
5976
5977}/*WDI_MainStopStarted*/
5978/**
5979 @brief Main FSM Request function for state started
5980
Jeff Johnsone7245742012-09-05 17:12:55 -07005981
5982 @param pWDICtx: pointer to the WLAN DAL context
5983 pEventData: pointer to the event information structure
5984
Jeff Johnson295189b2012-06-20 16:38:30 -07005985 @see
5986 @return Result of the function call
5987*/
5988WDI_Status
5989WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005990(
Jeff Johnson295189b2012-06-20 16:38:30 -07005991 WDI_ControlBlockType* pWDICtx,
5992 WDI_EventInfoType* pEventData
5993)
5994{
5995
5996 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005997 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005998 ----------------------------------------------------------------------*/
5999 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6000 {
6001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006002 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 pWDICtx, pEventData);
6004 return WDI_STATUS_E_FAILURE;
6005 }
6006
6007 /*State at this point is BUSY - because we enter this state before posting
6008 an event to the FSM in order to prevent potential race conditions*/
6009
6010 /*Return Success*/
6011 return WDI_ProcessRequest( pWDICtx, pEventData );
6012
6013}/*WDI_MainReqStarted*/
6014
6015/**
6016 @brief Main FSM Response function for all states except INIT
6017
Jeff Johnsone7245742012-09-05 17:12:55 -07006018
6019 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006020 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006021
Jeff Johnson295189b2012-06-20 16:38:30 -07006022 @see
6023 @return Result of the function call
6024*/
6025WDI_Status
6026WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006027(
Jeff Johnson295189b2012-06-20 16:38:30 -07006028 WDI_ControlBlockType* pWDICtx,
6029 WDI_EventInfoType* pEventData
6030)
6031{
Jeff Johnsone7245742012-09-05 17:12:55 -07006032 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006033 wpt_boolean expectedResponse;
6034
6035 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006036 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006037 ----------------------------------------------------------------------*/
6038 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6039 {
6040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006041 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006042 pWDICtx, pEventData);
6043 return WDI_STATUS_E_FAILURE;
6044 }
6045
6046 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6047 {
6048 /* we received an expected response */
6049 expectedResponse = eWLAN_PAL_TRUE;
6050
6051 /*We expect that we will transition to started after this processing*/
6052 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6053
6054 /* we are no longer expecting a response */
6055 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6056 }
6057 else
6058 {
6059 /* we received an indication or unexpected response */
6060 expectedResponse = eWLAN_PAL_FALSE;
6061 /* for indications no need to update state from what it is right
6062 now, unless it explicitly does it in the indication handler (say
6063 for device failure ind) */
6064 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6065 }
6066
6067 /*Process the response and indication */
6068 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6069
6070 /*Lock the CB as we are about to do a state transition*/
6071 wpalMutexAcquire(&pWDICtx->wptMutex);
6072
6073 /*Transition to the expected state after the response processing
6074 - this should always be started state with the following exceptions:
6075 1. processing of a failed start response
6076 2. device failure detected while processing response
6077 3. stop response received*/
6078 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006079
Jeff Johnson295189b2012-06-20 16:38:30 -07006080 /*Dequeue request that may have been queued while we were waiting for the
6081 response */
6082 if ( expectedResponse )
6083 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006084 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006085 }
6086
6087 wpalMutexRelease(&pWDICtx->wptMutex);
6088
6089 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006090 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006091
6092}/*WDI_MainRsp*/
6093
6094/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006095 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006096--------------------------------------------------------------------------*/
6097/**
6098 @brief Main FSM Stop function for state STOPPED
6099
Jeff Johnsone7245742012-09-05 17:12:55 -07006100
6101 @param pWDICtx: pointer to the WLAN DAL context
6102 pEventData: pointer to the event information structure
6103
Jeff Johnson295189b2012-06-20 16:38:30 -07006104 @see
6105 @return Result of the function call
6106*/
6107WDI_Status
6108WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006109(
Jeff Johnson295189b2012-06-20 16:38:30 -07006110 WDI_ControlBlockType* pWDICtx,
6111 WDI_EventInfoType* pEventData
6112)
6113{
6114 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006115 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 ----------------------------------------------------------------------*/
6117 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6118 {
6119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006120 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006121 pWDICtx, pEventData);
6122 return WDI_STATUS_E_FAILURE;
6123 }
6124
6125 /*We should normally not get a STOP request if we are already stopped
6126 since we should normally be stopped by the UMAC. However in some
6127 error situations we put ourselves in the stopped state without the
6128 UMAC knowing, so when we get a STOP request in this state we still
6129 process it since we need to clean up the underlying state */
6130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6131 "Processing stop request while stopped in FSM");
6132
6133 /*Return Success*/
6134 return WDI_ProcessRequest( pWDICtx, pEventData );
6135
6136}/*WDI_MainStopStopped*/
6137
6138/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006139 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006140--------------------------------------------------------------------------*/
6141/**
6142 @brief Main FSM Start function for state BUSY
6143
Jeff Johnsone7245742012-09-05 17:12:55 -07006144
6145 @param pWDICtx: pointer to the WLAN DAL context
6146 pEventData: pointer to the event information structure
6147
Jeff Johnson295189b2012-06-20 16:38:30 -07006148 @see
6149 @return Result of the function call
6150*/
6151WDI_Status
6152WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006153(
Jeff Johnson295189b2012-06-20 16:38:30 -07006154 WDI_ControlBlockType* pWDICtx,
6155 WDI_EventInfoType* pEventData
6156)
6157{
6158 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006159 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006160 ----------------------------------------------------------------------*/
6161 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6162 {
6163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006164 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006165 pWDICtx, pEventData);
6166 return WDI_STATUS_E_FAILURE;
6167 }
6168
6169 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006170 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006171 ----------------------------------------------------------------------*/
6172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6173 "WDI Busy state - queue start request");
6174
6175 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006177
6178 /*Return Success*/
6179 return WDI_STATUS_PENDING;
6180}/*WDI_MainStartBusy*/
6181
6182/**
6183 @brief Main FSM Stop function for state BUSY
6184
Jeff Johnsone7245742012-09-05 17:12:55 -07006185
6186 @param pWDICtx: pointer to the WLAN DAL context
6187 pEventData: pointer to the event information structure
6188
Jeff Johnson295189b2012-06-20 16:38:30 -07006189 @see
6190 @return Result of the function call
6191*/
6192WDI_Status
6193WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006194(
Jeff Johnson295189b2012-06-20 16:38:30 -07006195 WDI_ControlBlockType* pWDICtx,
6196 WDI_EventInfoType* pEventData
6197)
6198{
6199 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006200 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 ----------------------------------------------------------------------*/
6202 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6203 {
6204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006205 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006206 pWDICtx, pEventData);
6207 return WDI_STATUS_E_FAILURE;
6208 }
6209
6210 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006211 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006212 ----------------------------------------------------------------------*/
6213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6214 "WDI Busy state - queue stop request");
6215
Jeff Johnsone7245742012-09-05 17:12:55 -07006216 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006218
Jeff Johnson295189b2012-06-20 16:38:30 -07006219}/*WDI_MainStopBusy*/
6220
6221/**
6222 @brief Main FSM Request function for state BUSY
6223
Jeff Johnsone7245742012-09-05 17:12:55 -07006224
6225 @param pWDICtx: pointer to the WLAN DAL context
6226 pEventData: pointer to the event information structure
6227
Jeff Johnson295189b2012-06-20 16:38:30 -07006228 @see
6229 @return Result of the function call
6230*/
6231WDI_Status
6232WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006233(
Jeff Johnson295189b2012-06-20 16:38:30 -07006234 WDI_ControlBlockType* pWDICtx,
6235 WDI_EventInfoType* pEventData
6236)
6237{
6238 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006239 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006240 ----------------------------------------------------------------------*/
6241 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6242 {
6243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006244 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006245 pWDICtx, pEventData);
6246 return WDI_STATUS_E_FAILURE;
6247 }
6248
6249 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006250 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006251 ----------------------------------------------------------------------*/
6252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6253 "WDI Busy state - queue request %d because waiting for response %d",
6254 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6255
Jeff Johnsone7245742012-09-05 17:12:55 -07006256 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006257 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006258
Jeff Johnson295189b2012-06-20 16:38:30 -07006259}/*WDI_MainReqBusy*/
6260/**
6261 @brief Main FSM Close function for state BUSY
6262
Jeff Johnsone7245742012-09-05 17:12:55 -07006263
6264 @param pWDICtx: pointer to the WLAN DAL context
6265 pEventData: pointer to the event information structure
6266
Jeff Johnson295189b2012-06-20 16:38:30 -07006267 @see
6268 @return Result of the function call
6269*/
6270WDI_Status
6271WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006272(
Jeff Johnson295189b2012-06-20 16:38:30 -07006273 WDI_ControlBlockType* pWDICtx,
6274 WDI_EventInfoType* pEventData
6275)
6276{
6277 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006278 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006279 ----------------------------------------------------------------------*/
6280 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6281 {
6282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006283 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006284 pWDICtx, pEventData);
6285 return WDI_STATUS_E_FAILURE;
6286 }
6287
6288 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006289 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006290 ----------------------------------------------------------------------*/
6291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6292 "WDI Busy state - queue close request");
6293
Jeff Johnsone7245742012-09-05 17:12:55 -07006294 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006295 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006296
Jeff Johnson295189b2012-06-20 16:38:30 -07006297}/*WDI_MainCloseBusy*/
6298
6299/**
6300 @brief Main FSM Shutdown function for INIT & STARTED states
6301
6302
6303 @param pWDICtx: pointer to the WLAN DAL context
6304 pEventData: pointer to the event information structure
6305
6306 @see
6307 @return Result of the function call
6308*/
6309WDI_Status
6310WDI_MainShutdown
6311(
6312 WDI_ControlBlockType* pWDICtx,
6313 WDI_EventInfoType* pEventData
6314)
6315{
6316 /*--------------------------------------------------------------------
6317 Sanity Check
6318 ----------------------------------------------------------------------*/
6319 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6320 {
6321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6322 "Invalid parameters on Main Start %x %x",
6323 pWDICtx, pEventData);
6324 return WDI_STATUS_E_FAILURE;
6325 }
6326
6327 /*State at this point is BUSY - because we enter this state before posting
6328 an event to the FSM in order to prevent potential race conditions*/
6329
6330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6331 "Processing shutdown request in FSM");
6332
6333 /*Return Success*/
6334 return WDI_ProcessRequest( pWDICtx, pEventData );
6335
6336}/*WDI_MainShutdown*/
6337
6338/**
6339 @brief Main FSM Shutdown function for BUSY state
6340
6341
6342 @param pWDICtx: pointer to the WLAN DAL context
6343 pEventData: pointer to the event information structure
6344
6345 @see
6346 @return Result of the function call
6347*/
6348WDI_Status
6349WDI_MainShutdownBusy
6350(
6351 WDI_ControlBlockType* pWDICtx,
6352 WDI_EventInfoType* pEventData
6353)
6354{
6355 /*--------------------------------------------------------------------
6356 Sanity Check
6357 ----------------------------------------------------------------------*/
6358 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6359 {
6360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6361 "Invalid parameters on Main Start %x %x",
6362 pWDICtx, pEventData);
6363 return WDI_STATUS_E_FAILURE;
6364 }
6365
6366 /* If you are waiting for a HAL response at this stage, you are not
6367 * going to get it. Riva is already shutdown/crashed.
6368 */
6369 wpalTimerStop(&gWDICb.wptResponseTimer);
6370
6371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6372 "Processing shutdown request in FSM: Busy state ");
6373
6374 return WDI_ProcessRequest( pWDICtx, pEventData );
6375
6376}/*WDI_MainShutdownBusy*/
6377
6378
Jeff Johnsone7245742012-09-05 17:12:55 -07006379/*=======================================================================
6380
Jeff Johnson295189b2012-06-20 16:38:30 -07006381 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006382
Jeff Johnson295189b2012-06-20 16:38:30 -07006383*=======================================================================*/
6384
6385/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006386 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006387========================================================================*/
6388/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006389 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006390 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006391
6392 @param pWDICtx: pointer to the WLAN DAL context
6393 pEventData: pointer to the event information structure
6394
Jeff Johnson295189b2012-06-20 16:38:30 -07006395 @see
6396 @return Result of the function call
6397*/
6398WDI_Status
6399WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006400(
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 WDI_ControlBlockType* pWDICtx,
6402 WDI_EventInfoType* pEventData
6403)
6404{
6405 WDI_StartReqParamsType* pwdiStartParams = NULL;
6406 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006407 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006408 wpt_uint16 usDataOffset = 0;
6409 wpt_uint16 usSendSize = 0;
6410
Jeff Johnsone7245742012-09-05 17:12:55 -07006411 tHalMacStartReqMsg halStartReq;
6412 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6414
6415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006417 -------------------------------------------------------------------------*/
6418 if (( NULL == pEventData ) ||
6419 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6420 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6421 {
6422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006423 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006426 }
6427
6428 /*-----------------------------------------------------------------------
6429 Get message buffer
6430 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006431 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006432 pwdiStartParams->usConfigBufferLen;
6433
Jeff Johnsone7245742012-09-05 17:12:55 -07006434 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006435 usLen,
6436 &pSendBuffer, &usDataOffset, &usSendSize))||
6437 ( usSendSize < (usDataOffset + usLen )))
6438 {
6439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6440 "Unable to get send buffer in start req %x %x %x",
6441 pEventData, pwdiStartParams, wdiStartRspCb);
6442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006444 }
6445
6446 /*-----------------------------------------------------------------------
6447 Fill in the message
6448 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006449 halStartReq.startReqParams.driverType =
6450 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006451
Jeff Johnsone7245742012-09-05 17:12:55 -07006452 halStartReq.startReqParams.uConfigBufferLen =
6453 pwdiStartParams->usConfigBufferLen;
6454 wpalMemoryCopy( pSendBuffer+usDataOffset,
6455 &halStartReq.startReqParams,
6456 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006457
Jeff Johnsone7245742012-09-05 17:12:55 -07006458 usDataOffset += sizeof(halStartReq.startReqParams);
6459 wpalMemoryCopy( pSendBuffer+usDataOffset,
6460 pwdiStartParams->pConfigBuffer,
6461 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006462
6463 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006464 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006465
6466 /*Save Low Level Ind CB and associated user data - it will be used further
6467 on when an indication is coming from the lower MAC*/
6468 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006469 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006470
Jeff Johnsone7245742012-09-05 17:12:55 -07006471 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006473 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006475 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006476 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6477
Jeff Johnsone7245742012-09-05 17:12:55 -07006478
Jeff Johnson295189b2012-06-20 16:38:30 -07006479}/*WDI_ProcessStartReq*/
6480
6481/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006482 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006483 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006484
6485 @param pWDICtx: pointer to the WLAN DAL context
6486 pEventData: pointer to the event information structure
6487
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 @see
6489 @return Result of the function call
6490*/
6491WDI_Status
6492WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006493(
Jeff Johnson295189b2012-06-20 16:38:30 -07006494 WDI_ControlBlockType* pWDICtx,
6495 WDI_EventInfoType* pEventData
6496)
6497{
6498 WDI_StopReqParamsType* pwdiStopParams = NULL;
6499 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006500 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006501 wpt_uint16 usDataOffset = 0;
6502 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006503 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006504 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6506
6507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006509 -------------------------------------------------------------------------*/
6510 if (( NULL == pEventData ) ||
6511 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6512 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6513 {
6514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006516 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006517 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006518 }
6519
6520 /*-----------------------------------------------------------------------
6521 Get message buffer
6522 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006523 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006524 sizeof(halStopReq.stopReqParams),
6525 &pSendBuffer, &usDataOffset, &usSendSize))||
6526 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6527 {
6528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6529 "Unable to get send buffer in stop req %x %x %x",
6530 pEventData, pwdiStopParams, wdiStopRspCb);
6531 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006532 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006533 }
6534
6535 /*-----------------------------------------------------------------------
6536 Fill in the message
6537 -----------------------------------------------------------------------*/
6538 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6539 pwdiStopParams->wdiStopReason);
6540
Jeff Johnsone7245742012-09-05 17:12:55 -07006541 wpalMemoryCopy( pSendBuffer+usDataOffset,
6542 &halStopReq.stopReqParams,
6543 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006544
6545 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006546 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006547
6548 /*! TO DO: stop the data services */
6549 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6550 {
6551 /*Stop the STA Table !UT- check this logic again
6552 It is safer to do it here than on the response - because a stop is imminent*/
6553 WDI_STATableStop(pWDICtx);
6554
6555 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006556 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6557 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006558 {
6559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6560 "WDI Init failed to reset power state event");
6561
Jeff Johnsone7245742012-09-05 17:12:55 -07006562 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006563 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006564 }
6565 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006566 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6567 if( eWLAN_PAL_STATUS_SUCCESS != status )
6568 {
6569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6570 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6571 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006572 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006573 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006574 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006575 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006576 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006577 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6578 WDI_SET_POWER_STATE_TIMEOUT);
6579 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006580 {
6581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6582 "WDI Init failed to wait on an event");
6583
Jeff Johnsone7245742012-09-05 17:12:55 -07006584 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006585 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 }
6587 }
6588
6589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006590 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006591 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006592 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006593 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6594
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006595fail:
6596 // Release the message buffer so we don't leak
6597 wpalMemoryFree(pSendBuffer);
6598
6599failRequest:
6600 //WDA should have failure check to avoid the memory leak
6601 return WDI_STATUS_E_FAILURE;
6602
Jeff Johnson295189b2012-06-20 16:38:30 -07006603}/*WDI_ProcessStopReq*/
6604
6605/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006606 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006607 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006608
6609 @param pWDICtx: pointer to the WLAN DAL context
6610 pEventData: pointer to the event information structure
6611
Jeff Johnson295189b2012-06-20 16:38:30 -07006612 @see
6613 @return Result of the function call
6614*/
6615WDI_Status
6616WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006617(
Jeff Johnson295189b2012-06-20 16:38:30 -07006618 WDI_ControlBlockType* pWDICtx,
6619 WDI_EventInfoType* pEventData
6620)
6621{
Jeff Johnsone7245742012-09-05 17:12:55 -07006622 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6624
6625 /*Lock control block for cleanup*/
6626 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006627
Jeff Johnson295189b2012-06-20 16:38:30 -07006628 /*Clear all pending request*/
6629 WDI_ClearPendingRequests(pWDICtx);
6630
6631 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006632 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006633
6634 /* Close Data transport*/
6635 /* FTM mode does not open Data Path */
6636 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6637 {
6638 WDTS_Close(pWDICtx);
6639 }
6640
6641 /*Close the STA Table !UT- check this logic again*/
6642 WDI_STATableClose(pWDICtx);
6643
6644 /*close the PAL */
6645 wptStatus = wpalClose(pWDICtx->pPALContext);
6646 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6647 {
6648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6649 "Failed to wpal Close %d", wptStatus);
6650 WDI_ASSERT(0);
6651 }
6652
6653 /*Transition back to init state*/
6654 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6655
6656 wpalMutexRelease(&pWDICtx->wptMutex);
6657
6658 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006659 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006660
Jeff Johnsone7245742012-09-05 17:12:55 -07006661 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006662}/*WDI_ProcessCloseReq*/
6663
6664
6665/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006666 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006667===========================================================================*/
6668
6669/**
6670 @brief Process Init Scan Request function (called when Main FSM
6671 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006672
6673 @param pWDICtx: pointer to the WLAN DAL context
6674 pEventData: pointer to the event information structure
6675
Jeff Johnson295189b2012-06-20 16:38:30 -07006676 @see
6677 @return Result of the function call
6678*/
6679WDI_Status
6680WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006681(
Jeff Johnson295189b2012-06-20 16:38:30 -07006682 WDI_ControlBlockType* pWDICtx,
6683 WDI_EventInfoType* pEventData
6684)
6685{
6686 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6687 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006688 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006689 wpt_uint16 usDataOffset = 0;
6690 wpt_uint16 usSendSize = 0;
6691 wpt_uint8 i = 0;
6692
6693 tHalInitScanReqMsg halInitScanReqMsg;
6694
Jeff Johnsone7245742012-09-05 17:12:55 -07006695 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006696 * It shold be removed once host and riva changes are in sync*/
6697 tHalInitScanConReqMsg halInitScanConReqMsg;
6698
6699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6700
6701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006703 -------------------------------------------------------------------------*/
6704 if (( NULL == pEventData ) ||
6705 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6706 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6707 {
6708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006709 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006712 }
6713
6714#if 0
6715 wpalMutexAcquire(&pWDICtx->wptMutex);
6716 /*-----------------------------------------------------------------------
6717 Check to see if SCAN is already in progress - if so reject the req
6718 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006719 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006720 -----------------------------------------------------------------------*/
6721 if ( pWDICtx->bScanInProgress )
6722 {
6723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6724 "Scan is already in progress - subsequent scan is not allowed"
6725 " until the first scan completes");
6726
6727 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006729 }
6730
Jeff Johnsone7245742012-09-05 17:12:55 -07006731 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6732 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006733
6734 wpalMutexRelease(&pWDICtx->wptMutex);
6735#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08006736 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006737 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006738 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006739 * It shold be removed once host and riva changes are in sync*/
6740 /*-----------------------------------------------------------------------
6741 Get message buffer
6742 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006743 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006744 sizeof(halInitScanConReqMsg.initScanParams),
6745 &pSendBuffer, &usDataOffset, &usSendSize))||
6746 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6747 {
6748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6749 "Unable to get send buffer in init scan req %x %x %x",
6750 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006753 }
6754
6755
6756 /*-----------------------------------------------------------------------
6757 Fill in the message
6758 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006759 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006760 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6761
6762 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6763 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6764
Jeff Johnsone7245742012-09-05 17:12:55 -07006765 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006766 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006767 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006768 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006769 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006770 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6771
6772 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6773 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6774
6775#ifdef WLAN_FEATURE_P2P
6776 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6777 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
6778#endif
6779
Jeff Johnsone7245742012-09-05 17:12:55 -07006780 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006781 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6782
6783 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6784 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006785 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6787 }
6788
Jeff Johnsone7245742012-09-05 17:12:55 -07006789 wpalMemoryCopy( pSendBuffer+usDataOffset,
6790 &halInitScanConReqMsg.initScanParams,
6791 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 }
6793 else
6794 {
6795 /*-----------------------------------------------------------------------
6796 Get message buffer
6797 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006798 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006799 sizeof(halInitScanReqMsg.initScanParams),
6800 &pSendBuffer, &usDataOffset, &usSendSize))||
6801 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6802 {
6803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6804 "Unable to get send buffer in init scan req %x %x %x",
6805 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 }
6809
6810
6811 /*-----------------------------------------------------------------------
6812 Fill in the message
6813 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006814 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006815 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6816
6817 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6818 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6819
Jeff Johnsone7245742012-09-05 17:12:55 -07006820 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006821 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006822 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006823 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006824 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6826
6827 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6828 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6829
Jeff Johnsone7245742012-09-05 17:12:55 -07006830 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006831 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6832
6833 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6834 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006835 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006836 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6837 }
6838
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 wpalMemoryCopy( pSendBuffer+usDataOffset,
6840 &halInitScanReqMsg.initScanParams,
6841 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 }
6843
6844 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006845 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006846
6847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006848 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006849 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006850 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006851 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6852
6853}/*WDI_ProcessInitScanReq*/
6854
6855/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006856 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006857 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006858
6859 @param pWDICtx: pointer to the WLAN DAL context
6860 pEventData: pointer to the event information structure
6861
Jeff Johnson295189b2012-06-20 16:38:30 -07006862 @see
6863 @return Result of the function call
6864*/
6865WDI_Status
6866WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006867(
Jeff Johnson295189b2012-06-20 16:38:30 -07006868 WDI_ControlBlockType* pWDICtx,
6869 WDI_EventInfoType* pEventData
6870)
6871{
6872 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6873 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006874 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006875 wpt_uint16 usDataOffset = 0;
6876 wpt_uint16 usSendSize = 0;
6877
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6880
6881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006882 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 -------------------------------------------------------------------------*/
6884 if (( NULL == pEventData ) ||
6885 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6886 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6887 {
6888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006892 }
6893
6894#if 0
6895 wpalMutexAcquire(&pWDICtx->wptMutex);
6896 /*-----------------------------------------------------------------------
6897 Check to see if SCAN is already in progress - start scan is only
6898 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07006899 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07006900 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006901 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
6903 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
6904 {
6905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6906 "Scan start not allowed in this state %d %d",
6907 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006908
Jeff Johnson295189b2012-06-20 16:38:30 -07006909 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006911 }
6912
Jeff Johnsone7245742012-09-05 17:12:55 -07006913 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006914
6915 wpalMutexRelease(&pWDICtx->wptMutex);
6916#endif
6917
6918 /*-----------------------------------------------------------------------
6919 Get message buffer
6920 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006921 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006922 sizeof(halStartScanReqMsg.startScanParams),
6923 &pSendBuffer, &usDataOffset, &usSendSize))||
6924 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
6925 {
6926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6927 "Unable to get send buffer in start scan req %x %x %x",
6928 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
6929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006931 }
6932
Jeff Johnsone7245742012-09-05 17:12:55 -07006933 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07006934 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07006935 wpalMemoryCopy( pSendBuffer+usDataOffset,
6936 &halStartScanReqMsg.startScanParams,
6937 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006938
6939 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006940 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006941
6942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006943 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006944 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006945 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006946 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
6947}/*WDI_ProcessStartScanReq*/
6948
6949
6950/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006951 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006952 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006953
6954 @param pWDICtx: pointer to the WLAN DAL context
6955 pEventData: pointer to the event information structure
6956
Jeff Johnson295189b2012-06-20 16:38:30 -07006957 @see
6958 @return Result of the function call
6959*/
6960WDI_Status
6961WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006962(
Jeff Johnson295189b2012-06-20 16:38:30 -07006963 WDI_ControlBlockType* pWDICtx,
6964 WDI_EventInfoType* pEventData
6965)
6966{
6967 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
6968 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006969 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006970 wpt_uint16 usDataOffset = 0;
6971 wpt_uint16 usSendSize = 0;
6972
Jeff Johnsone7245742012-09-05 17:12:55 -07006973 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006974 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6975
6976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006977 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 -------------------------------------------------------------------------*/
6979 if (( NULL == pEventData ) ||
6980 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
6981 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
6982 {
6983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006987 }
6988
Jeff Johnsone7245742012-09-05 17:12:55 -07006989 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
6990 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 * forwarded to HAL and result in hang*/
6992#if 0
6993 wpalMutexAcquire(&pWDICtx->wptMutex);
6994 /*-----------------------------------------------------------------------
6995 Check to see if SCAN is already in progress - end scan is only
6996 allowed when a scan is ongoing and the state of the scan procedure
6997 is started
6998 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006999 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007000 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7001 {
7002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7003 "End start not allowed in this state %d %d",
7004 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007005
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007008 }
7009
Jeff Johnsone7245742012-09-05 17:12:55 -07007010 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007011
7012 wpalMutexRelease(&pWDICtx->wptMutex);
7013#endif
7014
7015 /*-----------------------------------------------------------------------
7016 Get message buffer
7017 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007018 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007019 sizeof(halEndScanReqMsg.endScanParams),
7020 &pSendBuffer, &usDataOffset, &usSendSize))||
7021 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7022 {
7023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7024 "Unable to get send buffer in start scan req %x %x %x",
7025 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007028 }
7029
7030 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7031
Jeff Johnsone7245742012-09-05 17:12:55 -07007032 wpalMemoryCopy( pSendBuffer+usDataOffset,
7033 &halEndScanReqMsg.endScanParams,
7034 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007035
7036 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007038
7039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007040 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007041 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007042 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007043 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7044}/*WDI_ProcessEndScanReq*/
7045
7046
7047/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007048 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007049 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007050
7051 @param pWDICtx: pointer to the WLAN DAL context
7052 pEventData: pointer to the event information structure
7053
Jeff Johnson295189b2012-06-20 16:38:30 -07007054 @see
7055 @return Result of the function call
7056*/
7057WDI_Status
7058WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007059(
Jeff Johnson295189b2012-06-20 16:38:30 -07007060 WDI_ControlBlockType* pWDICtx,
7061 WDI_EventInfoType* pEventData
7062)
7063{
7064 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7065 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007066 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007067 wpt_uint16 usDataOffset = 0;
7068 wpt_uint16 usSendSize = 0;
7069 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007070 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007071 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7073
7074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007075 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007076 -------------------------------------------------------------------------*/
7077 if (( NULL == pEventData ) ||
7078 ( NULL == pEventData->pEventData) ||
7079 ( NULL == pEventData->pCBfnc))
7080 {
7081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 }
7086
7087 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7088 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007089 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7090 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 * forwarded to HAL and result in hang*/
7092#if 0
7093 wpalMutexAcquire(&pWDICtx->wptMutex);
7094 /*-----------------------------------------------------------------------
7095 Check to see if SCAN is already in progress
7096 Finish scan gets invoked any scan states. ie. abort scan
7097 It should be allowed in any states.
7098 -----------------------------------------------------------------------*/
7099 if ( !pWDICtx->bScanInProgress )
7100 {
7101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7102 "Finish start not allowed in this state %d",
7103 pWDICtx->bScanInProgress );
7104
7105 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007106 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007107 }
7108
7109 /*-----------------------------------------------------------------------
7110 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007111 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007112 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007113 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7114 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 wpalMutexRelease(&pWDICtx->wptMutex);
7116#endif
7117
7118 if ( pWDICtx->bInBmps )
7119 {
7120 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007121 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7122 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7123 {
7124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7125 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7126 WDI_ASSERT(0);
7127 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007128 }
7129
7130 /*-----------------------------------------------------------------------
7131 Get message buffer
7132 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007133 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007134 sizeof(halFinishScanReqMsg.finishScanParams),
7135 &pSendBuffer, &usDataOffset, &usSendSize))||
7136 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7137 {
7138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7139 "Unable to get send buffer in start scan req %x %x %x",
7140 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007143 }
7144
Jeff Johnsone7245742012-09-05 17:12:55 -07007145 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007146 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7147
Jeff Johnsone7245742012-09-05 17:12:55 -07007148 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007149 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7150
Jeff Johnsone7245742012-09-05 17:12:55 -07007151 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7153
7154 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7155 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7156
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007159 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007160 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007161 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007162 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7163
Jeff Johnsone7245742012-09-05 17:12:55 -07007164 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007165 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7166
7167 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7168 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007169 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007170 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7171 }
7172
7173 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7174 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7175
Jeff Johnsone7245742012-09-05 17:12:55 -07007176 wpalMemoryCopy( pSendBuffer+usDataOffset,
7177 &halFinishScanReqMsg.finishScanParams,
7178 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007179
7180 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007181 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007182
7183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007184 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007185 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007186 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007187 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7188}/*WDI_ProcessFinishScanReq*/
7189
7190
7191/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007192 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007193==========================================================================*/
7194/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007195 @brief Process BSS Join for a given Session
7196
7197 @param pWDICtx: pointer to the WLAN DAL context
7198 pEventData: pointer to the event information structure
7199
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 @see
7201 @return Result of the function call
7202*/
7203WDI_Status
7204WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007205(
Jeff Johnson295189b2012-06-20 16:38:30 -07007206 WDI_ControlBlockType* pWDICtx,
7207 WDI_JoinReqParamsType* pwdiJoinParams,
7208 WDI_JoinRspCb wdiJoinRspCb,
7209 void* pUserData
7210)
7211{
7212 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007213 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007214 wpt_uint16 usDataOffset = 0;
7215 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007216 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007217
Jeff Johnsone7245742012-09-05 17:12:55 -07007218 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7220
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007221 wpalMutexAcquire(&pWDICtx->wptMutex);
7222
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 /*------------------------------------------------------------------------
7224 Check to see if we have any session with this BSSID already stored, we
7225 should not
7226 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007227 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7228 pwdiJoinParams->wdiReqInfo.macBSSID,
7229 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007230
7231 if ( NULL != pBSSSes )
7232 {
7233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007234 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7235 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007236
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007237 /*reset the bAssociationInProgress otherwise the next
7238 *join request will be queued*/
7239 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7240 wpalMutexRelease(&pWDICtx->wptMutex);
7241 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007242 }
7243
Jeff Johnson295189b2012-06-20 16:38:30 -07007244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007245 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007246 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007247 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007248 if ( NULL == pBSSSes )
7249 {
7250
7251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7252 "DAL has no free sessions - cannot run another join");
7253
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007254 /*reset the bAssociationInProgress otherwise the next
7255 *join request will be queued*/
7256 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007257 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007258 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007259 }
7260
7261 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007262 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7263 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 WDI_MAC_ADDR_LEN);
7265
7266 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007267 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007268 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007269
Jeff Johnson295189b2012-06-20 16:38:30 -07007270 wpalMutexRelease(&pWDICtx->wptMutex);
7271
7272 /*-----------------------------------------------------------------------
7273 Get message buffer
7274 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007275 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007276 sizeof(halJoinReqMsg.joinReqParams),
7277 &pSendBuffer, &usDataOffset, &usSendSize))||
7278 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7279 {
7280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7281 "Unable to get send buffer in join req %x %x %x",
7282 pUserData, pwdiJoinParams, wdiJoinRspCb);
7283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007285 }
7286
7287 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007289
7290 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 pwdiJoinParams->wdiReqInfo.macSTASelf,
7292 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007293
Jeff Johnsone7245742012-09-05 17:12:55 -07007294 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007295 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7296
7297 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7298
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007299#ifdef WLAN_FEATURE_VOWIFI
7300 halJoinReqMsg.joinReqParams.maxTxPower =
7301 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7302#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007303 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007304 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7305#endif
7306
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7309 wdiSecondaryChannelOffset);
7310
Jeff Johnsone7245742012-09-05 17:12:55 -07007311 wpalMemoryCopy( pSendBuffer+usDataOffset,
7312 &halJoinReqMsg.joinReqParams,
7313 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007314
7315 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007317
7318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007319 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007320 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007321 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7322 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007323
7324}/*WDI_ProcessBSSSessionJoinReq*/
7325
7326/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007327 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007328 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007329
7330 @param pWDICtx: pointer to the WLAN DAL context
7331 pEventData: pointer to the event information structure
7332
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 @see
7334 @return Result of the function call
7335*/
7336WDI_Status
7337WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007338(
Jeff Johnson295189b2012-06-20 16:38:30 -07007339 WDI_ControlBlockType* pWDICtx,
7340 WDI_EventInfoType* pEventData
7341)
7342{
7343 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7344 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7345 WDI_JoinRspCb wdiJoinRspCb = NULL;
7346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7347
7348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 -------------------------------------------------------------------------*/
7351 if (( NULL == pEventData ) ||
7352 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7353 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7354 {
7355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007360
Jeff Johnson295189b2012-06-20 16:38:30 -07007361 /*-------------------------------------------------------------------------
7362 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007363 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007364 -------------------------------------------------------------------------*/
7365 wpalMutexAcquire(&pWDICtx->wptMutex);
7366
7367 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7368 {
7369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7370 "Association is currently in progress, queueing new join req");
7371
7372 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007373 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007374 pwdiJoinParams->wdiReqInfo.macBSSID);
7375
7376 wpalMutexRelease(&pWDICtx->wptMutex);
7377
Jeff Johnsone7245742012-09-05 17:12:55 -07007378 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007379 }
7380
7381 /*Starting a new association */
7382 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7383 wpalMutexRelease(&pWDICtx->wptMutex);
7384
7385 /*Process the Join Request*/
7386 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7387 wdiJoinRspCb,pEventData->pUserData);
7388
7389}/*WDI_ProcessJoinReq*/
7390
7391
7392/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007395
7396 @param pWDICtx: pointer to the WLAN DAL context
7397 pEventData: pointer to the event information structure
7398
Jeff Johnson295189b2012-06-20 16:38:30 -07007399 @see
7400 @return Result of the function call
7401*/
7402WDI_Status
7403WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007404(
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 WDI_ControlBlockType* pWDICtx,
7406 WDI_EventInfoType* pEventData
7407)
7408{
7409 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7410 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007413 wpt_uint16 uMsgSize = 0;
7414 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 wpt_uint16 usDataOffset = 0;
7416 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007418
Jeff Johnsone7245742012-09-05 17:12:55 -07007419 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7421
7422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 -------------------------------------------------------------------------*/
7425 if (( NULL == pEventData ) ||
7426 ( NULL == pEventData->pEventData ) ||
7427 ( NULL == pEventData->pCBfnc ))
7428 {
7429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007430 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 }
7434
7435 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7436 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7437 /*-------------------------------------------------------------------------
7438 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007439 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007440 -------------------------------------------------------------------------*/
7441 wpalMutexAcquire(&pWDICtx->wptMutex);
7442
7443 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007444 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007445 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007446 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7447 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7448 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007449
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 {
7452#ifdef WLAN_FEATURE_VOWIFI_11R
7453 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007454 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007456 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 if ( NULL == pBSSSes )
7458 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007459
Jeff Johnson295189b2012-06-20 16:38:30 -07007460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7461 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007462
Jeff Johnson295189b2012-06-20 16:38:30 -07007463 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007464 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007466
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007468 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7469 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007471
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007473 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7475#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007476 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007477 * Request in case of IBSS*/
7478 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7479 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7480 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7481 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7482 {
7483 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007484 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007485 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007486 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 if ( NULL == pBSSSes )
7488 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007489
Jeff Johnson295189b2012-06-20 16:38:30 -07007490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7491 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007492
Jeff Johnson295189b2012-06-20 16:38:30 -07007493 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007495 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007496
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007498 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7499 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007501
Jeff Johnson295189b2012-06-20 16:38:30 -07007502 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007503 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007504 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7505 }
7506 else
7507 {
7508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007509 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7510 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7511 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7512
Jeff Johnson295189b2012-06-20 16:38:30 -07007513 /* for IBSS testing */
7514 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007516 }
7517#endif
7518 }
7519
7520 /*------------------------------------------------------------------------
7521 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 ------------------------------------------------------------------------*/
7524 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7525 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7527 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7528 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7529 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007530
Jeff Johnsone7245742012-09-05 17:12:55 -07007531 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007532
7533 wpalMutexRelease(&pWDICtx->wptMutex);
7534
Jeff Johnsone7245742012-09-05 17:12:55 -07007535 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007536 }
7537
7538 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007539 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7540 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007541 sizeof(pWDICtx->wdiCachedConfigBssReq));
7542
7543 wpalMutexRelease(&pWDICtx->wptMutex);
7544
Jeff Johnsone7245742012-09-05 17:12:55 -07007545 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7546#ifdef WLAN_FEATURE_11AC
7547 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007548 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007549 else
7550#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007551 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007552
7553 /*-----------------------------------------------------------------------
7554 Get message buffer
7555 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7558 ( usSendSize < (usDataOffset + uMsgSize )))
7559 {
7560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7561 "Unable to get send buffer in config bss req %x %x %x",
7562 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007565 }
7566
7567 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007568#ifdef WLAN_FEATURE_11AC
7569 if (WDI_getFwWlanFeatCaps(DOT11AC))
7570 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7571 &pwdiConfigBSSParams->wdiReqInfo);
7572 else
7573#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007574 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007575 &pwdiConfigBSSParams->wdiReqInfo);
7576
7577 /* Need to fill in the STA Index to invalid, since at this point we have not
7578 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007579 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007580
7581 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007582 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7583
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007584#ifdef WLAN_FEATURE_11AC
7585 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7586 wpalMemoryCopy( pSendBuffer+usDataOffset,
7587 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7588 uMsgSize);
7589 }else
7590#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007591 wpalMemoryCopy( pSendBuffer+usDataOffset,
7592 &halConfigBssReqMsg.uBssParams.configBssParams,
7593 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -07007594
7595 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007597
7598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007599 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007601 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7602 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 WDI_CONFIG_BSS_RESP);
7604
7605}/*WDI_ProcessConfigBSSReq*/
7606
7607
7608/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007609 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007610 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007611
7612 @param pWDICtx: pointer to the WLAN DAL context
7613 pEventData: pointer to the event information structure
7614
Jeff Johnson295189b2012-06-20 16:38:30 -07007615 @see
7616 @return Result of the function call
7617*/
7618WDI_Status
7619WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007620(
Jeff Johnson295189b2012-06-20 16:38:30 -07007621 WDI_ControlBlockType* pWDICtx,
7622 WDI_EventInfoType* pEventData
7623)
7624{
7625 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7626 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007627 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007629 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007630 wpt_uint16 usDataOffset = 0;
7631 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007632 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007633
Jeff Johnsone7245742012-09-05 17:12:55 -07007634 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7636
7637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007639 -------------------------------------------------------------------------*/
7640 if (( NULL == pEventData ) ||
7641 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7642 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7643 {
7644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007648 }
7649
7650 /*-------------------------------------------------------------------------
7651 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 -------------------------------------------------------------------------*/
7654 wpalMutexAcquire(&pWDICtx->wptMutex);
7655
7656 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007657 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7660 pwdiDelBSSParams->ucBssIdx,
7661 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007662
Jeff Johnsone7245742012-09-05 17:12:55 -07007663 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007664 {
7665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007666 "%s: BSS does not yet exist. ucBssIdx %d",
7667 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007668
7669 wpalMutexRelease(&pWDICtx->wptMutex);
7670
7671 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007673
7674 /*------------------------------------------------------------------------
7675 Check if this BSS is being currently processed or queued,
7676 if queued - queue the new request as well
7677 ------------------------------------------------------------------------*/
7678 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007679 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7681 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7682 __func__, pwdiDelBSSParams->ucBssIdx);
7683
7684 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7685
7686 wpalMutexRelease(&pWDICtx->wptMutex);
7687
7688 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007690
Jeff Johnson295189b2012-06-20 16:38:30 -07007691 /*-----------------------------------------------------------------------
7692 If we receive a Del BSS request for an association that is already in
7693 progress, it indicates that the assoc has failed => we no longer have
7694 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007695 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007696 -----------------------------------------------------------------------*/
7697 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7698 {
7699 /*We can switch to false here because even if a subsequent Join comes in
7700 it will only be processed when DAL transitions out of BUSY state which
7701 happens when the Del BSS request comes */
7702 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7703
7704 /*Former association is complete - prepare next pending assoc for
7705 processing */
7706 WDI_DequeueAssocRequest(pWDICtx);
7707 }
7708
7709 wpalMutexRelease(&pWDICtx->wptMutex);
7710 /*-----------------------------------------------------------------------
7711 Get message buffer
7712 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007713 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 sizeof(halBssReqMsg.deleteBssParams),
7715 &pSendBuffer, &usDataOffset, &usSendSize))||
7716 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7717 {
7718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7719 "Unable to get send buffer in start req %x %x %x",
7720 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 }
7724
7725 /*Fill in the message request structure*/
7726
7727 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007728 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007729
Jeff Johnsone7245742012-09-05 17:12:55 -07007730 wpalMemoryCopy( pSendBuffer+usDataOffset,
7731 &halBssReqMsg.deleteBssParams,
7732 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007733
7734 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007736
Jeff Johnsone7245742012-09-05 17:12:55 -07007737
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007741 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7743
Jeff Johnsone7245742012-09-05 17:12:55 -07007744
Jeff Johnson295189b2012-06-20 16:38:30 -07007745}/*WDI_ProcessDelBSSReq*/
7746
7747/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007748 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007749 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007750
7751 @param pWDICtx: pointer to the WLAN DAL context
7752 pEventData: pointer to the event information structure
7753
Jeff Johnson295189b2012-06-20 16:38:30 -07007754 @see
7755 @return Result of the function call
7756*/
7757WDI_Status
7758WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007759(
Jeff Johnson295189b2012-06-20 16:38:30 -07007760 WDI_ControlBlockType* pWDICtx,
7761 WDI_EventInfoType* pEventData
7762)
7763{
7764 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7765 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007766 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007767 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007769 wpt_uint16 usDataOffset = 0;
7770 wpt_uint16 usSendSize = 0;
7771 wpt_uint16 uMsgSize = 0;
7772 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007774
Jeff Johnsone7245742012-09-05 17:12:55 -07007775 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7777
7778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007779 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007780 -------------------------------------------------------------------------*/
7781 if (( NULL == pEventData ) ||
7782 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7783 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7784 {
7785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 }
7790
7791 /*-------------------------------------------------------------------------
7792 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007794 -------------------------------------------------------------------------*/
7795 wpalMutexAcquire(&pWDICtx->wptMutex);
7796
7797 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007798 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007799 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007800 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7801 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7802 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007803
7804 if ( NULL == pBSSSes )
7805 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7807 "%s: Association sequence for this BSS does not yet exist - "
7808 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7809 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007810
7811 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007812 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 }
7814
7815 /*------------------------------------------------------------------------
7816 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 ------------------------------------------------------------------------*/
7819 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7820 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7822 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7823 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007824
Jeff Johnsone7245742012-09-05 17:12:55 -07007825 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007826
7827 wpalMutexRelease(&pWDICtx->wptMutex);
7828
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 }
7831
7832 /*-----------------------------------------------------------------------
7833 If Post Assoc was not yet received - the current association must
7834 be in progress
7835 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007836 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007837 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7838 {
7839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7840 "Association sequence for this BSS association no longer in "
7841 "progress - not allowed");
7842
7843 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007844 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 }
7846
7847 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 -----------------------------------------------------------------------*/
7850 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7851 {
7852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7853 "Post Assoc not allowed before JOIN - failing request");
7854
7855 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 }
7858
7859 wpalMutexRelease(&pWDICtx->wptMutex);
7860
7861 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7862 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7863 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007864 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007867 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7868 ( usSendSize < (usDataOffset + uMsgSize )))
7869 {
7870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7871 "Unable to get send buffer in start req %x %x %x",
7872 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007875 }
7876
7877 /*Copy the STA parameters */
7878 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7879 &pwdiPostAssocParams->wdiSTAParams );
7880
7881 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 WDI_STATableFindStaidByAddr(pWDICtx,
7884 pwdiPostAssocParams->wdiSTAParams.macSTA,
7885 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
7886 {
7887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7888 "This station does not exist in the WDI Station Table %d");
7889 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007890 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007892 }
7893
7894 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007895 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007896 pBSSSes->ucBSSIdx;
7897
7898 /*Copy the BSS parameters */
7899 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7900 &pwdiPostAssocParams->wdiBSSParams);
7901
7902 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07007903 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007904 WDI_STATableFindStaidByAddr(pWDICtx,
7905 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07007906 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07007907 {
7908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7909 "This station does not exist in the WDI Station Table %d");
7910 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007911 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007913 }
7914
7915 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007916 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 pBSSSes->ucBSSIdx;
7918
Jeff Johnsone7245742012-09-05 17:12:55 -07007919
7920 wpalMemoryCopy( pSendBuffer+usDataOffset,
7921 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
7922 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007923
7924 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
7925
Jeff Johnsone7245742012-09-05 17:12:55 -07007926 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
7927 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7928 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007929
Jeff Johnsone7245742012-09-05 17:12:55 -07007930
Jeff Johnson295189b2012-06-20 16:38:30 -07007931 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007932 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007933
Jeff Johnsone7245742012-09-05 17:12:55 -07007934
7935 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07007937 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07007938
7939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007942 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007943 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
7944
Jeff Johnsone7245742012-09-05 17:12:55 -07007945
Jeff Johnson295189b2012-06-20 16:38:30 -07007946}/*WDI_ProcessPostAssocReq*/
7947
7948/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007951
7952 @param pWDICtx: pointer to the WLAN DAL context
7953 pEventData: pointer to the event information structure
7954
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 @see
7956 @return Result of the function call
7957*/
7958WDI_Status
7959WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007960(
Jeff Johnson295189b2012-06-20 16:38:30 -07007961 WDI_ControlBlockType* pWDICtx,
7962 WDI_EventInfoType* pEventData
7963)
7964{
7965 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
7966 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007969 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 wpt_uint16 usDataOffset = 0;
7971 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007972 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7974
Jeff Johnsone7245742012-09-05 17:12:55 -07007975 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7977
7978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 -------------------------------------------------------------------------*/
7981 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
7982 ( NULL == pEventData->pCBfnc ))
7983 {
7984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007988 }
7989
7990 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
7991 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
7992 /*-------------------------------------------------------------------------
7993 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 -------------------------------------------------------------------------*/
7996 wpalMutexAcquire(&pWDICtx->wptMutex);
7997
7998 /*------------------------------------------------------------------------
7999 Find the BSS for which the request is made and identify WDI session
8000 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008001 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8002 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008003 &macBSSID))
8004 {
8005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8006 "This station does not exist in the WDI Station Table %d");
8007 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008009 }
8010
Jeff Johnsone7245742012-09-05 17:12:55 -07008011 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8012 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008013 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8015 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8016 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008017
8018 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008020 }
8021
8022 /*------------------------------------------------------------------------
8023 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008024 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008025 ------------------------------------------------------------------------*/
8026 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8027 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8029 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8030 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008031
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 }
8036
8037 wpalMutexRelease(&pWDICtx->wptMutex);
8038 /*-----------------------------------------------------------------------
8039 Get message buffer
8040 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 sizeof(halDelStaReqMsg.delStaParams),
8043 &pSendBuffer, &usDataOffset, &usSendSize))||
8044 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8045 {
8046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8047 "Unable to get send buffer in start req %x %x %x",
8048 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 }
8052
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8054 wpalMemoryCopy( pSendBuffer+usDataOffset,
8055 &halDelStaReqMsg.delStaParams,
8056 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008057
8058 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008060
8061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008065 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8066
8067}/*WDI_ProcessDelSTAReq*/
8068
8069
8070/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008071 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008072==========================================================================*/
8073/**
8074 @brief Process Set BSS Key Request function (called when Main FSM
8075 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008076
8077 @param pWDICtx: pointer to the WLAN DAL context
8078 pEventData: pointer to the event information structure
8079
Jeff Johnson295189b2012-06-20 16:38:30 -07008080 @see
8081 @return Result of the function call
8082*/
8083WDI_Status
8084WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008085(
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 WDI_ControlBlockType* pWDICtx,
8087 WDI_EventInfoType* pEventData
8088)
8089{
8090 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8091 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008094 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 wpt_uint16 usDataOffset = 0;
8096 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008097 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8099 wpt_uint8 keyIndex = 0;
8100
8101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8102
8103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 -------------------------------------------------------------------------*/
8106 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8107 ( NULL == pEventData->pCBfnc ))
8108 {
8109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008113 }
8114
8115 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8116 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8117 /*-------------------------------------------------------------------------
8118 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 -------------------------------------------------------------------------*/
8121 wpalMutexAcquire(&pWDICtx->wptMutex);
8122
8123 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8127 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8128 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008129
Jeff Johnsone7245742012-09-05 17:12:55 -07008130 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 {
8132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8134 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008135
8136 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 }
8139
8140 /*------------------------------------------------------------------------
8141 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 ------------------------------------------------------------------------*/
8144 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8145 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8147 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8148 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008149
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008152 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 }
8154
8155
8156 wpalMutexRelease(&pWDICtx->wptMutex);
8157 /*-----------------------------------------------------------------------
8158 Get message buffer
8159 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008161 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8162 &pSendBuffer, &usDataOffset, &usSendSize))||
8163 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8164 {
8165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8166 "Unable to get send buffer in set bss key req %x %x %x",
8167 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008170 }
8171
8172 /*-----------------------------------------------------------------------
8173 Copy the Key parameters into the HAL message
8174 -----------------------------------------------------------------------*/
8175
Jeff Johnsone7245742012-09-05 17:12:55 -07008176 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008177
Jeff Johnsone7245742012-09-05 17:12:55 -07008178 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008179 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8180
Jeff Johnsone7245742012-09-05 17:12:55 -07008181 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8183
8184 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8185 keyIndex++)
8186 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008187 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8189 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8190 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8191 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8192 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8193 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008196 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008197 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8200 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008201 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008202 WDI_MAX_KEY_LENGTH);
8203 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008204
8205 wpalMemoryCopy( pSendBuffer+usDataOffset,
8206 &halSetBssKeyReqMsg.setBssKeyParams,
8207 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008208
8209 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008210 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008211
8212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008215 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8216 wdiSetBSSKeyRspCb, pEventData->pUserData,
8217 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008218
8219}/*WDI_ProcessSetBssKeyReq*/
8220
8221/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008224
8225 @param pWDICtx: pointer to the WLAN DAL context
8226 pEventData: pointer to the event information structure
8227
Jeff Johnson295189b2012-06-20 16:38:30 -07008228 @see
8229 @return Result of the function call
8230*/
8231WDI_Status
8232WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008233(
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 WDI_ControlBlockType* pWDICtx,
8235 WDI_EventInfoType* pEventData
8236)
8237{
8238 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8239 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008240 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 wpt_uint16 usDataOffset = 0;
8244 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8248
8249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 -------------------------------------------------------------------------*/
8252 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8253 ( NULL == pEventData->pCBfnc ))
8254 {
8255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 }
8260
8261 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8262 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8263 /*-------------------------------------------------------------------------
8264 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 -------------------------------------------------------------------------*/
8267 wpalMutexAcquire(&pWDICtx->wptMutex);
8268
8269 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008270 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008272 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8273 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8274 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008275
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 {
8278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008279 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8280 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008281
8282 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008283 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008284 }
8285
8286 /*------------------------------------------------------------------------
8287 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008288 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008289 ------------------------------------------------------------------------*/
8290 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8291 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8293 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8294 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008295
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008298 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008299 }
8300
8301
8302 wpalMutexRelease(&pWDICtx->wptMutex);
8303
8304 /*-----------------------------------------------------------------------
8305 Get message buffer
8306 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8309 &pSendBuffer, &usDataOffset, &usSendSize))||
8310 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8311 {
8312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8313 "Unable to get send buffer in set bss key req %x %x %x",
8314 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 }
8318 /*-----------------------------------------------------------------------
8319 Copy the Key parameters into the HAL message
8320 -----------------------------------------------------------------------*/
8321 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8322
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008324 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8325
8326 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8327
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8330
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 wpalMemoryCopy( pSendBuffer+usDataOffset,
8332 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8333 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008334
8335 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008337
8338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008341 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008342 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008344}/*WDI_ProcessRemoveBssKeyReq*/
8345
8346/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008349
8350 @param pWDICtx: pointer to the WLAN DAL context
8351 pEventData: pointer to the event information structure
8352
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 @see
8354 @return Result of the function call
8355*/
8356WDI_Status
8357WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008358(
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 WDI_ControlBlockType* pWDICtx,
8360 WDI_EventInfoType* pEventData
8361)
8362{
8363 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8364 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8365 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 wpt_uint16 usDataOffset = 0;
8368 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008371 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8373 wpt_uint8 keyIndex = 0;
8374
8375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8376
8377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008378 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008379 -------------------------------------------------------------------------*/
8380 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8381 ( NULL == pEventData->pCBfnc ))
8382 {
8383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 }
8388
8389 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8390 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8391 /*-------------------------------------------------------------------------
8392 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008394 -------------------------------------------------------------------------*/
8395 wpalMutexAcquire(&pWDICtx->wptMutex);
8396
8397 /*------------------------------------------------------------------------
8398 Find the BSS for which the request is made and identify WDI session
8399 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008400 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8401 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 &macBSSID))
8403 {
8404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8405 "This station does not exist in the WDI Station Table %d");
8406 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 }
8409
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8411 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8414 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8415 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008416
8417 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008418 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008419 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008420
Jeff Johnson295189b2012-06-20 16:38:30 -07008421 /*------------------------------------------------------------------------
8422 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 ------------------------------------------------------------------------*/
8425 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8426 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8428 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8429 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008430
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008434 }
8435
8436
8437 wpalMutexRelease(&pWDICtx->wptMutex);
8438 /*-----------------------------------------------------------------------
8439 Get message buffer
8440 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8443 &pSendBuffer, &usDataOffset, &usSendSize))||
8444 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8445 {
8446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8447 "Unable to get send buffer in set bss key req %x %x %x",
8448 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 }
8452 /*-----------------------------------------------------------------------
8453 Copy the STA Key parameters into the HAL message
8454 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008455 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008456 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8457
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8460
8461 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8462
8463 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8464
8465 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8466
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8468 keyIndex++)
8469 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8472 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8473 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8474 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8475 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8476 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008479 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008480 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8483 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 WDI_MAX_KEY_LENGTH);
8486 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008487
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 wpalMemoryCopy( pSendBuffer+usDataOffset,
8489 &halSetStaKeyReqMsg.setStaKeyParams,
8490 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008491
8492 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008493 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008494
8495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008496 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008497 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008498 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8499 wdiSetSTAKeyRspCb, pEventData->pUserData,
8500 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008501
8502}/*WDI_ProcessSetSTAKeyReq*/
8503
8504/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008507
8508 @param pWDICtx: pointer to the WLAN DAL context
8509 pEventData: pointer to the event information structure
8510
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 @see
8512 @return Result of the function call
8513*/
8514WDI_Status
8515WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008516(
Jeff Johnson295189b2012-06-20 16:38:30 -07008517 WDI_ControlBlockType* pWDICtx,
8518 WDI_EventInfoType* pEventData
8519)
8520{
8521 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8522 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8523 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008524 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 wpt_uint16 usDataOffset = 0;
8526 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 wpt_macAddr macBSSID;
8529 wpt_uint8 ucCurrentBSSSesIdx;
8530 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8532
8533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008535 -------------------------------------------------------------------------*/
8536 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8537 ( NULL == pEventData->pCBfnc ))
8538 {
8539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 }
8544
8545 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8546 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8547 /*-------------------------------------------------------------------------
8548 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 -------------------------------------------------------------------------*/
8551 wpalMutexAcquire(&pWDICtx->wptMutex);
8552
8553 /*------------------------------------------------------------------------
8554 Find the BSS for which the request is made and identify WDI session
8555 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8557 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 &macBSSID))
8559 {
8560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8561 "This station does not exist in the WDI Station Table %d");
8562 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 }
8565
Jeff Johnsone7245742012-09-05 17:12:55 -07008566 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8567 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008568 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8570 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8571 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008572
8573 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008576
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 /*------------------------------------------------------------------------
8578 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008579 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 ------------------------------------------------------------------------*/
8581 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8582 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8584 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8585 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008586
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 }
8591
8592
8593
8594 wpalMutexRelease(&pWDICtx->wptMutex);
8595 /*-----------------------------------------------------------------------
8596 Get message buffer
8597 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8600 &pSendBuffer, &usDataOffset, &usSendSize))||
8601 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8602 {
8603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8604 "Unable to get send buffer in set bss key req %x %x %x",
8605 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008608 }
8609
8610 /*-----------------------------------------------------------------------
8611 Copy the Key parameters into the HAL message
8612 -----------------------------------------------------------------------*/
8613
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8616
Jeff Johnsone7245742012-09-05 17:12:55 -07008617 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008618 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8619
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8622
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8625
Jeff Johnsone7245742012-09-05 17:12:55 -07008626 wpalMemoryCopy( pSendBuffer+usDataOffset,
8627 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8628 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008629
8630 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008631 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008632
8633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008634 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008639
8640}/*WDI_ProcessRemoveSTAKeyReq*/
8641
8642/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008643 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008644 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008645
8646 @param pWDICtx: pointer to the WLAN DAL context
8647 pEventData: pointer to the event information structure
8648
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 @see
8650 @return Result of the function call
8651*/
8652WDI_Status
8653WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008654(
Jeff Johnson295189b2012-06-20 16:38:30 -07008655 WDI_ControlBlockType* pWDICtx,
8656 WDI_EventInfoType* pEventData
8657)
8658{
8659 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8660 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8661 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 wpt_uint16 usDataOffset = 0;
8664 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8669 wpt_uint8 keyIndex = 0;
8670
8671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8672
8673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008675 -------------------------------------------------------------------------*/
8676 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8677 ( NULL == pEventData->pCBfnc ))
8678 {
8679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008680 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 }
8684
8685 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8686 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8687 /*-------------------------------------------------------------------------
8688 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008689 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008690 -------------------------------------------------------------------------*/
8691 wpalMutexAcquire(&pWDICtx->wptMutex);
8692
8693 /*------------------------------------------------------------------------
8694 Find the BSS for which the request is made and identify WDI session
8695 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008696 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8697 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 &macBSSID))
8699 {
8700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8701 "This station does not exist in the WDI Station Table %d");
8702 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 }
8705
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8707 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 {
8709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8711 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008712
8713 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008715 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008716
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 /*------------------------------------------------------------------------
8718 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 ------------------------------------------------------------------------*/
8721 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8722 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8724 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8725 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008726
Jeff Johnsone7245742012-09-05 17:12:55 -07008727 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 }
8731
8732
8733 wpalMutexRelease(&pWDICtx->wptMutex);
8734 /*-----------------------------------------------------------------------
8735 Get message buffer
8736 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8739 &pSendBuffer, &usDataOffset, &usSendSize))||
8740 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8741 {
8742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8743 "Unable to get send buffer in set bss key req %x %x %x",
8744 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008747 }
8748 /*-----------------------------------------------------------------------
8749 Copy the STA Key parameters into the HAL message
8750 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8753
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8756
8757 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8758
8759 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8760
8761 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8762
Jeff Johnson295189b2012-06-20 16:38:30 -07008763 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8764 keyIndex++)
8765 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8768 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8769 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8770 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8771 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8772 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8779 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008780 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 WDI_MAX_KEY_LENGTH);
8782 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008783
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 wpalMemoryCopy( pSendBuffer+usDataOffset,
8785 &halSetStaKeyReqMsg.setStaKeyParams,
8786 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008787
8788 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008790
8791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008792 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008794 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8795 wdiSetSTAKeyRspCb, pEventData->pUserData,
8796 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008797
8798}/*WDI_ProcessSetSTABcastKeyReq*/
8799
8800/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008803
8804 @param pWDICtx: pointer to the WLAN DAL context
8805 pEventData: pointer to the event information structure
8806
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 @see
8808 @return Result of the function call
8809*/
8810WDI_Status
8811WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008812(
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 WDI_ControlBlockType* pWDICtx,
8814 WDI_EventInfoType* pEventData
8815)
8816{
8817 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8818 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8819 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008820 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008821 wpt_uint16 usDataOffset = 0;
8822 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008824 wpt_macAddr macBSSID;
8825 wpt_uint8 ucCurrentBSSSesIdx;
8826 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8828
8829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 -------------------------------------------------------------------------*/
8832 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8833 ( NULL == pEventData->pCBfnc ))
8834 {
8835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 }
8840
8841 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8842 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8843 /*-------------------------------------------------------------------------
8844 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008845 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 -------------------------------------------------------------------------*/
8847 wpalMutexAcquire(&pWDICtx->wptMutex);
8848
8849 /*------------------------------------------------------------------------
8850 Find the BSS for which the request is made and identify WDI session
8851 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008852 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8853 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 &macBSSID))
8855 {
8856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8857 "This station does not exist in the WDI Station Table %d");
8858 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008859 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008860 }
8861
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8863 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008864 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8866 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8867 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008868
8869 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008872
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 /*------------------------------------------------------------------------
8874 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 ------------------------------------------------------------------------*/
8877 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8878 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8880 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8881 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008882
Jeff Johnsone7245742012-09-05 17:12:55 -07008883 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008884 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008885 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008886 }
8887
8888
8889
8890 wpalMutexRelease(&pWDICtx->wptMutex);
8891 /*-----------------------------------------------------------------------
8892 Get message buffer
8893 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
8896 &pSendBuffer, &usDataOffset, &usSendSize))||
8897 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
8898 {
8899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8900 "Unable to get send buffer in set bss key req %x %x %x",
8901 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
8902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 }
8905
8906 /*-----------------------------------------------------------------------
8907 Copy the Key parameters into the HAL message
8908 -----------------------------------------------------------------------*/
8909
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
8912
Jeff Johnsone7245742012-09-05 17:12:55 -07008913 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
8915
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
8918
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
8921
Jeff Johnsone7245742012-09-05 17:12:55 -07008922 wpalMemoryCopy( pSendBuffer+usDataOffset,
8923 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
8924 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008925
8926 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008927 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008928
8929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008930 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008935
8936}/*WDI_ProcessRemoveSTABcastKeyReq*/
8937
8938/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008940==========================================================================*/
8941/**
8942 @brief Process Add TSpec Request function (called when Main FSM
8943 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008944
8945 @param pWDICtx: pointer to the WLAN DAL context
8946 pEventData: pointer to the event information structure
8947
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 @see
8949 @return Result of the function call
8950*/
8951WDI_Status
8952WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008953(
Jeff Johnson295189b2012-06-20 16:38:30 -07008954 WDI_ControlBlockType* pWDICtx,
8955 WDI_EventInfoType* pEventData
8956)
8957{
8958 WDI_AddTSReqParamsType* pwdiAddTSParams;
8959 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008960 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008961 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008962 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 wpt_uint16 usDataOffset = 0;
8964 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 wpt_macAddr macBSSID;
8967 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07008968
Jeff Johnson295189b2012-06-20 16:38:30 -07008969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8970
8971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 -------------------------------------------------------------------------*/
8974 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8975 ( NULL == pEventData->pCBfnc ))
8976 {
8977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 }
8982
8983 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
8984 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
8985 /*-------------------------------------------------------------------------
8986 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 -------------------------------------------------------------------------*/
8989 wpalMutexAcquire(&pWDICtx->wptMutex);
8990
8991 /*------------------------------------------------------------------------
8992 Find the BSS for which the request is made and identify WDI session
8993 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8995 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 &macBSSID))
8997 {
8998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8999 "This station does not exist in the WDI Station Table %d");
9000 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 }
9003
Jeff Johnsone7245742012-09-05 17:12:55 -07009004 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9005 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009006 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9008 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9009 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009010
9011 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009014
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 /*------------------------------------------------------------------------
9016 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009017 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009018 ------------------------------------------------------------------------*/
9019 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9020 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9022 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9023 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009024
Jeff Johnsone7245742012-09-05 17:12:55 -07009025 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 }
9029
9030 wpalMutexRelease(&pWDICtx->wptMutex);
9031 /*-----------------------------------------------------------------------
9032 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9036 sizeof(halAddTsParams),
9037 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 &usSendSize))||
9039 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9040 {
9041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9042 "Unable to get send buffer in set bss key req %x %x %x",
9043 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 }
9047
9048 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9049 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9050
9051 //TSPEC IE
9052 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9053 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009054 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009055 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009058 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009061 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009070 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009072 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009073 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009076 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009077 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9084
9085 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009090 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009091 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009093 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009094 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009095 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009096 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009097 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9100
9101 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009103 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009104 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009105 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9106
Jeff Johnsone7245742012-09-05 17:12:55 -07009107 wpalMemoryCopy( pSendBuffer+usDataOffset,
9108 &halAddTsParams,
9109 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009110
9111 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009113
9114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009120}/*WDI_ProcessAddTSpecReq*/
9121
9122
9123/**
9124 @brief Process Del TSpec Request function (called when Main FSM
9125 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009126
9127 @param pWDICtx: pointer to the WLAN DAL context
9128 pEventData: pointer to the event information structure
9129
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 @see
9131 @return Result of the function call
9132*/
9133WDI_Status
9134WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009135(
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 WDI_ControlBlockType* pWDICtx,
9137 WDI_EventInfoType* pEventData
9138)
9139{
9140 WDI_DelTSReqParamsType* pwdiDelTSParams;
9141 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 wpt_uint16 usDataOffset = 0;
9146 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009147 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9149
9150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 -------------------------------------------------------------------------*/
9153 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9154 ( NULL == pEventData->pCBfnc ))
9155 {
9156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 }
9161
9162 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9163 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9164
9165 /*-------------------------------------------------------------------------
9166 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 -------------------------------------------------------------------------*/
9169 wpalMutexAcquire(&pWDICtx->wptMutex);
9170
9171 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9175 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9176 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009177
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9181 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9182 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9183
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 }
9187
9188 /*------------------------------------------------------------------------
9189 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 ------------------------------------------------------------------------*/
9192 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9193 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9195 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9196 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009197
Jeff Johnsone7245742012-09-05 17:12:55 -07009198 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 }
9202
9203
9204 wpalMutexRelease(&pWDICtx->wptMutex);
9205 /*-----------------------------------------------------------------------
9206 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9211 &pSendBuffer, &usDataOffset, &usSendSize))||
9212 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9213 {
9214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9215 "Unable to get send buffer in set bss key req %x %x %x",
9216 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 }
9220
Jeff Johnsone7245742012-09-05 17:12:55 -07009221 wpalMemoryCopy( pSendBuffer+usDataOffset,
9222 &pwdiDelTSParams->wdiDelTSInfo,
9223 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009224
9225 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009227
9228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009230 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9232 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009233}/*WDI_ProcessDelTSpecReq*/
9234
9235/**
9236 @brief Process Update EDCA Params Request function (called when
9237 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009238
9239 @param pWDICtx: pointer to the WLAN DAL context
9240 pEventData: pointer to the event information structure
9241
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 @see
9243 @return Result of the function call
9244*/
9245WDI_Status
9246WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009247(
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 WDI_ControlBlockType* pWDICtx,
9249 WDI_EventInfoType* pEventData
9250)
9251{
9252 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9253 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009256 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 wpt_uint16 usDataOffset = 0;
9258 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009259 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9261
9262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 -------------------------------------------------------------------------*/
9265 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9266 ( NULL == pEventData->pCBfnc ))
9267 {
9268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009269 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 }
9273
9274 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9275 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9276 /*-------------------------------------------------------------------------
9277 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 -------------------------------------------------------------------------*/
9280 wpalMutexAcquire(&pWDICtx->wptMutex);
9281
9282 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009285 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9286 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9287 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009288
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 {
9291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9293 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009294
9295 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 }
9298
9299 /*------------------------------------------------------------------------
9300 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 ------------------------------------------------------------------------*/
9303 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9304 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9306 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9307 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009308
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009312 }
9313
9314
9315 wpalMutexRelease(&pWDICtx->wptMutex);
9316 /*-----------------------------------------------------------------------
9317 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9322 &pSendBuffer, &usDataOffset, &usSendSize))||
9323 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9324 {
9325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9326 "Unable to get send buffer in set bss key req %x %x %x",
9327 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009330 }
9331
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 wpalMemoryCopy( pSendBuffer+usDataOffset,
9333 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9334 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009335
9336 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009338
9339 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9343 wdiUpdateEDCARspCb, pEventData->pUserData,
9344 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009345}/*WDI_ProcessUpdateEDCAParamsReq*/
9346
9347/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009348 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009349 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009350
9351 @param pWDICtx: pointer to the WLAN DAL context
9352 pEventData: pointer to the event information structure
9353
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 @see
9355 @return Result of the function call
9356*/
9357WDI_Status
9358WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009359(
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 WDI_ControlBlockType* pWDICtx,
9361 WDI_EventInfoType* pEventData
9362)
9363{
9364 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9365 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 wpt_uint16 usDataOffset = 0;
9370 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 wpt_macAddr macBSSID;
9373
9374 tAddBASessionReqMsg halAddBASessionReq;
9375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9376
9377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009378 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009379 -------------------------------------------------------------------------*/
9380 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9381 ( NULL == pEventData->pCBfnc ))
9382 {
9383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 }
9388
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009391 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009392 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9393 /*-------------------------------------------------------------------------
9394 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 -------------------------------------------------------------------------*/
9397 wpalMutexAcquire(&pWDICtx->wptMutex);
9398
9399 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009400 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009401 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9403 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009404 &macBSSID))
9405 {
9406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9407 "This station does not exist in the WDI Station Table %d");
9408 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 }
9411
9412
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009414
Jeff Johnsone7245742012-09-05 17:12:55 -07009415 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9418 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9419 __func__, MAC_ADDR_ARRAY(macBSSID));
9420
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 }
9424
9425 /*------------------------------------------------------------------------
9426 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 ------------------------------------------------------------------------*/
9429 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9430 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9432 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9433 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009434
Jeff Johnsone7245742012-09-05 17:12:55 -07009435 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009436 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009437 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009438 }
9439
9440
9441 wpalMutexRelease(&pWDICtx->wptMutex);
9442 /*-----------------------------------------------------------------------
9443 Get message buffer
9444 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009445 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9446 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 sizeof(halAddBASessionReq.addBASessionParams),
9448 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9451 {
9452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9453 "Unable to get send buffer in Add BA session req %x %x %x",
9454 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 }
9458
9459 halAddBASessionReq.addBASessionParams.staIdx =
9460 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9461 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9462 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9463 WDI_MAC_ADDR_LEN);
9464 halAddBASessionReq.addBASessionParams.baTID =
9465 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9466 halAddBASessionReq.addBASessionParams.baPolicy =
9467 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9468 halAddBASessionReq.addBASessionParams.baBufferSize =
9469 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9470 halAddBASessionReq.addBASessionParams.baTimeout =
9471 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9472 halAddBASessionReq.addBASessionParams.baSSN =
9473 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9474 halAddBASessionReq.addBASessionParams.baDirection =
9475 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9476
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 wpalMemoryCopy( pSendBuffer+usDataOffset,
9478 &halAddBASessionReq.addBASessionParams,
9479 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009480
9481 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009483
9484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9488 wdiAddBASessionRspCb, pEventData->pUserData,
9489 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009490}/*WDI_ProcessAddBASessionReq*/
9491
9492/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009495
9496 @param pWDICtx: pointer to the WLAN DAL context
9497 pEventData: pointer to the event information structure
9498
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 @see
9500 @return Result of the function call
9501*/
9502WDI_Status
9503WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009504(
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 WDI_ControlBlockType* pWDICtx,
9506 WDI_EventInfoType* pEventData
9507)
9508{
9509 WDI_DelBAReqParamsType* pwdiDelBAParams;
9510 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009511 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009512 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009513 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 wpt_uint16 usDataOffset = 0;
9515 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 wpt_macAddr macBSSID;
9518 tDelBAParams halDelBAparam;
9519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9520
9521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 -------------------------------------------------------------------------*/
9524 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9525 ( NULL == pEventData->pCBfnc ))
9526 {
9527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009528 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009531 }
9532
9533 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9534 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9535 /*-------------------------------------------------------------------------
9536 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 -------------------------------------------------------------------------*/
9539 wpalMutexAcquire(&pWDICtx->wptMutex);
9540
9541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009542 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009543 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9545 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 &macBSSID))
9547 {
9548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9549 "This station does not exist in the WDI Station Table %d");
9550 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 }
9553
Jeff Johnsone7245742012-09-05 17:12:55 -07009554 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009555
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9559 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9560 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009561
9562 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 }
9565
9566 /*------------------------------------------------------------------------
9567 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 ------------------------------------------------------------------------*/
9570 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9571 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9573 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9574 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009575
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 }
9580
9581 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009582 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 sizeof(halDelBAparam),
9584 &pSendBuffer, &usDataOffset, &usSendSize))||
9585 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9586 {
9587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9588 "Unable to get send buffer for DEL BA req %x %x %x",
9589 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 }
9593
9594 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9595 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9596 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9597
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 wpalMemoryCopy( pSendBuffer+usDataOffset,
9599 &halDelBAparam,
9600 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009601
9602 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009604
9605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9609 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009610}/*WDI_ProcessDelBAReq*/
9611
9612#ifdef FEATURE_WLAN_CCX
9613
9614WDI_Status
9615WDI_ProcessTSMStatsReq
9616(
9617 WDI_ControlBlockType* pWDICtx,
9618 WDI_EventInfoType* pEventData
9619)
9620{
9621 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9622 WDI_TsmRspCb wdiTSMRspCb;
9623 wpt_uint8 ucCurrentBSSSesIdx = 0;
9624 WDI_BSSSessionType* pBSSSes = NULL;
9625 wpt_uint8* pSendBuffer = NULL;
9626 wpt_uint16 usDataOffset = 0;
9627 wpt_uint16 usSendSize = 0;
9628 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9629 tTsmStatsParams halTsmStatsReqParams = {0};
9630
9631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9632
9633 /*-------------------------------------------------------------------------
9634 Sanity check
9635 -------------------------------------------------------------------------*/
9636 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9637 ( NULL == pEventData->pCBfnc ))
9638 {
9639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009640 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 WDI_ASSERT(0);
9642 return WDI_STATUS_E_FAILURE;
9643 }
9644
9645 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9646 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9647 /*-------------------------------------------------------------------------
9648 Check to see if we are in the middle of an association, if so queue, if
9649 not it means it is free to process request
9650 -------------------------------------------------------------------------*/
9651 wpalMutexAcquire(&pWDICtx->wptMutex);
9652
9653 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9654 if ( NULL == pBSSSes )
9655 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9657 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9658 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009659
9660 wpalMutexRelease(&pWDICtx->wptMutex);
9661 return WDI_STATUS_E_NOT_ALLOWED;
9662 }
9663
9664 /*------------------------------------------------------------------------
9665 Check if this BSS is being currently processed or queued,
9666 if queued - queue the new request as well
9667 ------------------------------------------------------------------------*/
9668 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9669 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9671 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9672 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009673
9674 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9675 wpalMutexRelease(&pWDICtx->wptMutex);
9676 return wdiStatus;
9677 }
9678
9679 wpalMutexRelease(&pWDICtx->wptMutex);
9680 /*-----------------------------------------------------------------------
9681 Get message buffer
9682 ! TO DO : proper conversion into the HAL Message Request Format
9683 -----------------------------------------------------------------------*/
9684 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9685 sizeof(halTsmStatsReqParams),
9686 &pSendBuffer, &usDataOffset, &usSendSize))||
9687 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9688 {
9689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9690 "Unable to get send buffer in set bss key req %x %x %x",
9691 pEventData, pwdiTSMParams, wdiTSMRspCb);
9692 WDI_ASSERT(0);
9693 return WDI_STATUS_E_FAILURE;
9694 }
9695
9696 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9697 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9698 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9699 WDI_MAC_ADDR_LEN);
9700 wpalMemoryCopy( pSendBuffer+usDataOffset,
9701 &halTsmStatsReqParams,
9702 sizeof(halTsmStatsReqParams));
9703
9704 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9705 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9706
9707 /*-------------------------------------------------------------------------
9708 Send TSM Stats Request to HAL
9709 -------------------------------------------------------------------------*/
9710 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9711 wdiTSMRspCb, pEventData->pUserData,
9712 WDI_TSM_STATS_RESP);
9713}/*WDI_ProcessTSMStatsReq*/
9714
9715#endif
9716
9717
9718/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009719 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009720 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009721
9722 @param pWDICtx: pointer to the WLAN DAL context
9723 pEventData: pointer to the event information structure
9724
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 @see
9726 @return Result of the function call
9727*/
9728WDI_Status
9729WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009730(
Jeff Johnson295189b2012-06-20 16:38:30 -07009731 WDI_ControlBlockType* pWDICtx,
9732 WDI_EventInfoType* pEventData
9733)
9734{
9735 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9736 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009737 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 wpt_uint16 usDataOffset = 0;
9739 wpt_uint16 usSendSize = 0;
9740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9741
9742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009743 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 -------------------------------------------------------------------------*/
9745 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9746 ( NULL == pEventData->pCBfnc ))
9747 {
9748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009749 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009752 }
9753
9754 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9755 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9756 /*-----------------------------------------------------------------------
9757 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009758 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9762 &pSendBuffer, &usDataOffset, &usSendSize))||
9763 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9764 {
9765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9766 "Unable to get send buffer in set bss key req %x %x %x",
9767 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 }
9771
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 wpalMemoryCopy( pSendBuffer+usDataOffset,
9773 &pwdiFlushAcParams->wdiFlushAcInfo,
9774 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009775
9776 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009778
9779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009780 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009781 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9783 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009784}/*WDI_ProcessFlushAcReq*/
9785
9786/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009787 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009788 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009789
9790 @param pWDICtx: pointer to the WLAN DAL context
9791 pEventData: pointer to the event information structure
9792
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 @see
9794 @return Result of the function call
9795*/
9796WDI_Status
9797WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009798(
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 WDI_ControlBlockType* pWDICtx,
9800 WDI_EventInfoType* pEventData
9801)
9802{
9803 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9804 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 wpt_uint16 usDataOffset = 0;
9807 wpt_uint16 usSendSize = 0;
9808
9809 tBtAmpEventMsg haltBtAmpEventMsg;
9810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9811
9812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 -------------------------------------------------------------------------*/
9815 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9816 ( NULL == pEventData->pCBfnc ))
9817 {
9818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009819 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 }
9823
9824 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9825 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9826 /*-----------------------------------------------------------------------
9827 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009829 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009830 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9832 &pSendBuffer, &usDataOffset, &usSendSize))||
9833 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9834 {
9835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9836 "Unable to get send buffer in BT AMP event req %x %x %x",
9837 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 }
9841
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009844 wpalMemoryCopy( pSendBuffer+usDataOffset,
9845 &haltBtAmpEventMsg.btAmpEventParams,
9846 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009847
9848 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009849 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009850
9851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9855 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009856}/*WDI_ProcessBtAmpEventReq*/
9857
9858/**
9859 @brief Process Add STA self Request function (called when Main FSM
9860 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009861
9862 @param pWDICtx: pointer to the WLAN DAL context
9863 pEventData: pointer to the event information structure
9864
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 @see
9866 @return Result of the function call
9867*/
9868WDI_Status
9869WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009870(
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 WDI_ControlBlockType* pWDICtx,
9872 WDI_EventInfoType* pEventData
9873)
9874{
9875 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9876 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 wpt_uint16 usDataOffset = 0;
9879 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9882
9883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009884 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009885 -------------------------------------------------------------------------*/
9886 if (( NULL == pEventData ) ||
9887 ( NULL == pEventData->pEventData) ||
9888 ( NULL == pEventData->pCBfnc))
9889 {
9890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009891 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009894 }
9895
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
9900 /*-----------------------------------------------------------------------
9901 Get message buffer
9902 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9904 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009905 sizeof(tAddStaSelfParams),
9906 &pSendBuffer, &usDataOffset, &usSendSize))||
9907 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
9908 {
9909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9910 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
9911 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
9912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009914 }
9915
9916 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
9919
Jeff Johnsone7245742012-09-05 17:12:55 -07009920 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
9922
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
9924 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009925
9926 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009928
9929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009930 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009931 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009932 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9933 wdiAddSTASelfReqRspCb, pEventData->pUserData,
9934 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009935}/*WDI_ProcessAddSTASelfReq*/
9936
9937
9938
9939/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009940 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009941 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009942
9943 @param pWDICtx: pointer to the WLAN DAL context
9944 pEventData: pointer to the event information structure
9945
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 @see
9947 @return Result of the function call
9948*/
9949WDI_Status
9950WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009951(
Jeff Johnson295189b2012-06-20 16:38:30 -07009952 WDI_ControlBlockType* pWDICtx,
9953 WDI_EventInfoType* pEventData
9954)
9955{
9956 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
9957 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 wpt_uint16 usDataOffset = 0;
9960 wpt_uint16 usSendSize = 0;
9961 tDelStaSelfParams halSetDelSelfSTAParams;
9962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9963
9964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009965 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 -------------------------------------------------------------------------*/
9967 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9968 ( NULL == pEventData->pCBfnc ))
9969 {
9970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009971 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 }
9975
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
9978 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
9979
9980 /*-----------------------------------------------------------------------
9981 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
9986 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009987 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009988 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
9989 {
9990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9991 "Unable to get send buffer in Del Sta Self req %x %x %x",
9992 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
9993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 }
9996
Jeff Johnsone7245742012-09-05 17:12:55 -07009997 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009998 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
9999
Jeff Johnsone7245742012-09-05 17:12:55 -070010000 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10001 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010002
10003 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010004 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010005
10006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010009 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10010 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010011 WDI_DEL_STA_SELF_RESP);
10012
10013}
10014
Jeff Johnsone7245742012-09-05 17:12:55 -070010015#ifdef FEATURE_OEM_DATA_SUPPORT
10016/**
10017 @brief Process Start Oem Data Request function (called when Main
10018 FSM allows it)
10019
10020 @param pWDICtx: pointer to the WLAN DAL context
10021 pEventData: pointer to the event information structure
10022
10023 @see
10024 @return Result of the function call
10025*/
10026WDI_Status
10027WDI_ProcessStartOemDataReq
10028(
10029 WDI_ControlBlockType* pWDICtx,
10030 WDI_EventInfoType* pEventData
10031)
10032{
10033 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10034 WDI_oemDataRspCb wdiOemDataRspCb;
10035 wpt_uint8* pSendBuffer = NULL;
10036 wpt_uint16 usDataOffset = 0;
10037 wpt_uint16 usSendSize = 0;
10038 wpt_uint16 reqLen;
10039 tStartOemDataReqParams* halStartOemDataReqParams;
10040
10041 /*-------------------------------------------------------------------------
10042 Sanity check
10043 -------------------------------------------------------------------------*/
10044 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10045 ( NULL == pEventData->pCBfnc ))
10046 {
10047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010048 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010049 WDI_ASSERT(0);
10050 return WDI_STATUS_E_FAILURE;
10051 }
10052
10053 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10054 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10055
10056 /*-----------------------------------------------------------------------
10057 Get message buffer
10058 -----------------------------------------------------------------------*/
10059
10060 reqLen = sizeof(tStartOemDataReqParams);
10061
10062 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10063 WDI_START_OEM_DATA_REQ, reqLen,
10064 &pSendBuffer, &usDataOffset, &usSendSize))||
10065 (usSendSize < (usDataOffset + reqLen)))
10066 {
10067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10068 "Unable to get send buffer in Start Oem Data req %x %x %x",
10069 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10070 WDI_ASSERT(0);
10071 return WDI_STATUS_E_FAILURE;
10072 }
10073
10074 //copying WDI OEM DATA REQ PARAMS to shared memory
10075 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10076
10077 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10078 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10079
10080 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10081 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10082
10083 /*-------------------------------------------------------------------------
10084 Send Start Request to HAL
10085 -------------------------------------------------------------------------*/
10086 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10087 wdiOemDataRspCb, pEventData->pUserData,
10088 WDI_START_OEM_DATA_RESP);
10089}/*WDI_ProcessStartOemDataReq*/
10090#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010091
10092/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010093 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010094 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010095
10096 @param pWDICtx: pointer to the WLAN DAL context
10097 pEventData: pointer to the event information structure
10098
Jeff Johnson295189b2012-06-20 16:38:30 -070010099 @see
10100 @return Result of the function call
10101*/
10102WDI_Status
10103WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010104(
Jeff Johnson295189b2012-06-20 16:38:30 -070010105 WDI_ControlBlockType* pWDICtx,
10106 WDI_EventInfoType* pEventData
10107)
10108{
10109 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10110 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 wpt_uint16 usDataOffset = 0;
10113 wpt_uint16 usSendSize = 0;
10114 tHalWlanHostResumeReqParam halResumeReqParams;
10115
10116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10117
10118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 -------------------------------------------------------------------------*/
10121 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10122 ( NULL == pEventData->pCBfnc ))
10123 {
10124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010125 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010126 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010127 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010128 }
10129
10130 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10131 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10132
10133 /*-----------------------------------------------------------------------
10134 Get message buffer
10135 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010137 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10138 &pSendBuffer, &usDataOffset, &usSendSize))||
10139 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10140 {
10141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010142 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010143 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10144 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 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010150
10151 wpalMemoryCopy( pSendBuffer+usDataOffset,
10152 &halResumeReqParams,
10153 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010154
10155 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010156 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010157
10158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010159 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10162 wdiHostResumeRspCb, pEventData->pUserData,
10163 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010164}/*WDI_ProcessHostResumeReq*/
10165
10166/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010168 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010169
10170 @param pWDICtx: pointer to the WLAN DAL context
10171 pEventData: pointer to the event information structure
10172
Jeff Johnson295189b2012-06-20 16:38:30 -070010173 @see
10174 @return Result of the function call
10175*/
10176WDI_Status
10177WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010178(
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 WDI_ControlBlockType* pWDICtx,
10180 WDI_EventInfoType* pEventData
10181)
10182{
10183 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10184 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 wpt_uint16 usDataOffset = 0;
10187 wpt_uint16 usSendSize = 0;
10188 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10190
10191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 -------------------------------------------------------------------------*/
10194 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10195 ( NULL == pEventData->pCBfnc ))
10196 {
10197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010198 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 }
10202
10203 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10204 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010205
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 /*-----------------------------------------------------------------------
10207 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010208 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 sizeof(halTxPerTrackingReqParam),
10212 &pSendBuffer, &usDataOffset, &usSendSize))||
10213 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10214 {
10215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10216 "Unable to get send buffer in set tx per tracking req %x %x %x",
10217 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010220 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010221
Jeff Johnson295189b2012-06-20 16:38:30 -070010222 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10223 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10224 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10225 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010226
10227 wpalMemoryCopy( pSendBuffer+usDataOffset,
10228 &halTxPerTrackingReqParam,
10229 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010230
10231 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010233
10234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010237 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10238 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010239}/*WDI_ProcessSetTxPerTrackingReq*/
10240
10241/*=========================================================================
10242 Indications
10243=========================================================================*/
10244
10245/**
10246 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010247
10248 @param pWDICtx: pointer to the WLAN DAL context
10249 pEventData: pointer to the event information structure
10250
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 @see
10252 @return Result of the function call
10253*/
10254WDI_Status
10255WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010256(
Jeff Johnson295189b2012-06-20 16:38:30 -070010257 WDI_ControlBlockType* pWDICtx,
10258 WDI_EventInfoType* pEventData
10259)
10260{
10261 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 wpt_uint16 usDataOffset = 0;
10264 wpt_uint16 usSendSize = 0;
10265 WDI_Status wdiStatus;
10266 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10268
10269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010271 -------------------------------------------------------------------------*/
10272 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10273 {
10274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010275 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 }
10279
10280 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10281
10282 /*-----------------------------------------------------------------------
10283 Get message buffer
10284 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10286 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 sizeof(halWlanSuspendIndparams),
10288 &pSendBuffer, &usDataOffset, &usSendSize))||
10289 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10290 {
10291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10292 "Unable to get send buffer in Suspend Ind ");
10293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 }
10296
10297 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10298 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10299
Jeff Johnsone7245742012-09-05 17:12:55 -070010300 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 WDI_GetActiveSessionsCount(pWDICtx);
10302
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10304 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010305
10306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 -------------------------------------------------------------------------*/
10309 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010311
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10314}/*WDI_ProcessHostSuspendInd*/
10315
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010316
10317
10318/**
10319 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10320
10321 @param pWDICtx: pointer to the WLAN DAL context
10322 pEventData: pointer to the event information structure
10323
10324 @see
10325 @return Result of the function call
10326*/
10327WDI_Status
10328WDI_ProcessTrafficStatsInd
10329(
10330 WDI_ControlBlockType* pWDICtx,
10331 WDI_EventInfoType* pEventData
10332)
10333{
10334 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10335 wpt_uint8* pSendBuffer = NULL;
10336 wpt_uint16 usDataOffset = 0;
10337 wpt_uint16 usSendSize = 0;
10338 WDI_Status wdiStatus;
10339 tStatsClassBIndParams* pStatsClassBIndParams;
10340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10341
10342 /*-------------------------------------------------------------------------
10343 Sanity check
10344 -------------------------------------------------------------------------*/
10345 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10346 {
10347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10348 "%s: Invalid parameters in Traffic Stats ind",__func__);
10349 WDI_ASSERT(0);
10350 return WDI_STATUS_E_FAILURE;
10351 }
10352
10353 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10354
10355 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10356 {
10357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10358 "%s: Invalid parameters in Traffic Stats ind",__func__);
10359 WDI_ASSERT(0);
10360 return WDI_STATUS_E_FAILURE;
10361 }
10362
10363 /*-----------------------------------------------------------------------
10364 Get message buffer
10365 -----------------------------------------------------------------------*/
10366 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10367 WDI_TRAFFIC_STATS_IND,
10368 sizeof(tStatsClassBIndParams),
10369 &pSendBuffer, &usDataOffset, &usSendSize))||
10370 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10371 {
10372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10373 "Unable to get send buffer in Traffic Stats Ind ");
10374 WDI_ASSERT(0);
10375 return WDI_STATUS_E_FAILURE;
10376 }
10377
10378 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10379
10380 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10381
10382 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10383 pTrafficStatsIndParams->pTrafficStats,
10384 pTrafficStatsIndParams->length);
10385
10386 /*-------------------------------------------------------------------------
10387 Send Suspend Request to HAL
10388 -------------------------------------------------------------------------*/
10389 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10390 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10391
10392 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10393 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10394}/*WDI_ProcessTrafficStatsInd*/
10395
Jeff Johnson295189b2012-06-20 16:38:30 -070010396/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010398==========================================================================*/
10399/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010402
10403 @param pWDICtx: pointer to the WLAN DAL context
10404 pEventData: pointer to the event information structure
10405
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 @see
10407 @return Result of the function call
10408*/
10409WDI_Status
10410WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010411(
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 WDI_ControlBlockType* pWDICtx,
10413 WDI_EventInfoType* pEventData
10414)
10415{
10416 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10417 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010418 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 wpt_uint16 usDataOffset = 0;
10420 wpt_uint16 usSendSize = 0;
10421 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10423
10424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010426 -------------------------------------------------------------------------*/
10427 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10428 ( NULL == pEventData->pCBfnc ))
10429 {
10430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010431 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010434 }
10435
10436 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10437 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10438 /*-----------------------------------------------------------------------
10439 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 sizeof(halSwitchChannelReq.switchChannelParams),
10444 &pSendBuffer, &usDataOffset, &usSendSize))||
10445 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10446 {
10447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10448 "Unable to get send buffer in channel switch req %x %x %x",
10449 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010452 }
10453
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010455 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010456#ifndef WLAN_FEATURE_VOWIFI
10457 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010458 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10459#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10462
10463#ifdef WLAN_FEATURE_VOWIFI
10464 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010465 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010466 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10467 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10468 WDI_MAC_ADDR_LEN);
10469 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10470 pwdiSwitchChParams->wdiChInfo.macBSSId,
10471 WDI_MAC_ADDR_LEN);
10472#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010473 wpalMemoryCopy( pSendBuffer+usDataOffset,
10474 &halSwitchChannelReq.switchChannelParams,
10475 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010476
10477 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010479
10480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010481 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10484 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010485}/*WDI_ProcessChannelSwitchReq*/
10486
10487/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010488 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010490
10491 @param pWDICtx: pointer to the WLAN DAL context
10492 pEventData: pointer to the event information structure
10493
Jeff Johnson295189b2012-06-20 16:38:30 -070010494 @see
10495 @return Result of the function call
10496*/
10497WDI_Status
10498WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010499(
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 WDI_ControlBlockType* pWDICtx,
10501 WDI_EventInfoType* pEventData
10502)
10503{
10504 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10505 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010508 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010509 wpt_uint16 usDataOffset = 0;
10510 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010512
Jeff Johnsone7245742012-09-05 17:12:55 -070010513 tConfigStaReqMsg halConfigStaReqMsg;
10514 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10516
10517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010519 -------------------------------------------------------------------------*/
10520 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10521 ( NULL == pEventData->pCBfnc ))
10522 {
10523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 }
10528
10529 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10530 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10531 /*-------------------------------------------------------------------------
10532 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010534 -------------------------------------------------------------------------*/
10535 wpalMutexAcquire(&pWDICtx->wptMutex);
10536
10537 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010540 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10541 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10542 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010543
Jeff Johnsone7245742012-09-05 17:12:55 -070010544 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010545 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10547 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10548 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010549
10550 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010552 }
10553
10554 /*------------------------------------------------------------------------
10555 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 ------------------------------------------------------------------------*/
10558 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10559 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10561 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10562 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010563
Jeff Johnsone7245742012-09-05 17:12:55 -070010564 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 }
10568
10569 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010570
10571 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10572#ifdef WLAN_FEATURE_11AC
10573 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010574 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 else
10576#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010577 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010578
Jeff Johnson295189b2012-06-20 16:38:30 -070010579 /*-----------------------------------------------------------------------
10580 Get message buffer
10581 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10583 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010585 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010586 {
10587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10588 "Unable to get send buffer in config sta req %x %x %x",
10589 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 }
10593
10594 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010595 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010596 &pwdiConfigSTAParams->wdiReqInfo);
10597
10598 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10599 {
10600 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010602 WDI_STATableFindStaidByAddr(pWDICtx,
10603 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010604 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010605 {
10606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10607 "This station does not exist in the WDI Station Table %d");
10608 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010609 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010611 }
10612 }
10613 else
10614 {
10615 /* Need to fill in the STA Index to invalid, since at this point we have not
10616 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010617 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 }
10619
10620 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010621 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010622
Jeff Johnsone7245742012-09-05 17:12:55 -070010623 wpalMemoryCopy( pSendBuffer+usDataOffset,
10624 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010625 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010626
10627 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010628 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010629
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10631 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010632 sizeof(pWDICtx->wdiCachedConfigStaReq));
10633
10634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010635 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10638 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010639}/*WDI_ProcessConfigStaReq*/
10640
10641
10642/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010645
10646 @param pWDICtx: pointer to the WLAN DAL context
10647 pEventData: pointer to the event information structure
10648
Jeff Johnson295189b2012-06-20 16:38:30 -070010649 @see
10650 @return Result of the function call
10651*/
10652WDI_Status
10653WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010654(
Jeff Johnson295189b2012-06-20 16:38:30 -070010655 WDI_ControlBlockType* pWDICtx,
10656 WDI_EventInfoType* pEventData
10657)
10658{
10659 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10660 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010661 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010662 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010663 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010664 wpt_uint16 usDataOffset = 0;
10665 wpt_uint16 usSendSize = 0;
10666 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10669
10670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010672 -------------------------------------------------------------------------*/
10673 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10674 ( NULL == pEventData->pCBfnc ))
10675 {
10676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010680 }
10681
10682 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10683 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10684 /*-------------------------------------------------------------------------
10685 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010687 -------------------------------------------------------------------------*/
10688 wpalMutexAcquire(&pWDICtx->wptMutex);
10689
10690 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10694 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10695 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010696
Jeff Johnsone7245742012-09-05 17:12:55 -070010697 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010698 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010700 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10701 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 }
10703 else
10704 {
10705 /*------------------------------------------------------------------------
10706 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010707 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 ------------------------------------------------------------------------*/
10709 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10710 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10712 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10713 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10714
10715 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010716 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 }
10719 }
10720 /* If the link is set to enter IDLE - the Session allocated for this BSS
10721 will be deleted on the Set Link State response coming from HAL
10722 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10725
10726 wpalMutexRelease(&pWDICtx->wptMutex);
10727 /*-----------------------------------------------------------------------
10728 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010731
10732 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 sizeof(halLinkStateReqMsg),
10734 &pSendBuffer, &usDataOffset, &usSendSize))||
10735 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10736 {
10737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10738 "Unable to get send buffer in set bss key req %x %x %x",
10739 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010742 }
10743
10744 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10745 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10746
10747 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10748 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10749
Jeff Johnsone7245742012-09-05 17:12:55 -070010750 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010751 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10752
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 wpalMemoryCopy( pSendBuffer+usDataOffset,
10754 &halLinkStateReqMsg,
10755 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010756
10757 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010759
10760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010761 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010762 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10764 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010765}/*WDI_ProcessSetLinkStateReq*/
10766
10767
10768/**
10769 @brief Process Get Stats Request function (called when Main FSM
10770 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010771
10772 @param pWDICtx: pointer to the WLAN DAL context
10773 pEventData: pointer to the event information structure
10774
Jeff Johnson295189b2012-06-20 16:38:30 -070010775 @see
10776 @return Result of the function call
10777*/
10778WDI_Status
10779WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010780(
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 WDI_ControlBlockType* pWDICtx,
10782 WDI_EventInfoType* pEventData
10783)
10784{
10785 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10786 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010787 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010788 wpt_uint16 usDataOffset = 0;
10789 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010790 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010791 WDI_BSSSessionType* pBSSSes = NULL;
10792 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010793 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010794 tHalStatsReqMsg halStatsReqMsg;
10795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10796
10797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 -------------------------------------------------------------------------*/
10800 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10801 ( NULL == pEventData->pCBfnc ) )
10802 {
10803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010807 }
10808
10809 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10810 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10811
10812 /*-------------------------------------------------------------------------
10813 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010814 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 -------------------------------------------------------------------------*/
10816 wpalMutexAcquire(&pWDICtx->wptMutex);
10817
10818 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10822 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 &macBSSID))
10824 {
10825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10826 "This station does not exist in the WDI Station Table %d");
10827 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 }
10830
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10832 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010833 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10835 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10836 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010837
10838 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 }
10841
10842 /*------------------------------------------------------------------------
10843 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010845 ------------------------------------------------------------------------*/
10846 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10847 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10849 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10850 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010851
Jeff Johnsone7245742012-09-05 17:12:55 -070010852 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010853 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010854 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010855 }
10856
10857
10858 wpalMutexRelease(&pWDICtx->wptMutex);
10859
10860 /*-----------------------------------------------------------------------
10861 Get message buffer
10862 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010863 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 sizeof(halStatsReqMsg.statsReqParams),
10865 &pSendBuffer, &usDataOffset, &usSendSize))||
10866 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10867 {
10868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10869 "Unable to get send buffer in set bss key req %x %x %x",
10870 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010873 }
10874
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010877 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010878 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010879 wpalMemoryCopy( pSendBuffer+usDataOffset,
10880 &halStatsReqMsg.statsReqParams,
10881 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010882
10883 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010884 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010885
10886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010888 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10890 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010891}/*WDI_ProcessGetStatsReq*/
10892
10893/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010894 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010895 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010896
10897 @param pWDICtx: pointer to the WLAN DAL context
10898 pEventData: pointer to the event information structure
10899
Jeff Johnson295189b2012-06-20 16:38:30 -070010900 @see
10901 @return Result of the function call
10902*/
10903WDI_Status
10904WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010905(
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 WDI_ControlBlockType* pWDICtx,
10907 WDI_EventInfoType* pEventData
10908)
10909{
10910 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
10911 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
10912
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 wpt_uint16 usDataOffset = 0;
10915 wpt_uint16 usSendSize = 0;
10916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10917
10918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010919 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010920 -------------------------------------------------------------------------*/
10921 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10922 ( NULL == pEventData->pCBfnc))
10923 {
10924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 }
10929
10930 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
10931 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
10932
10933 /*-----------------------------------------------------------------------
10934 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 -----------------------------------------------------------------------*/
10937
Jeff Johnsone7245742012-09-05 17:12:55 -070010938 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010939 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
10940 &pSendBuffer, &usDataOffset, &usSendSize))||
10941 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
10942 {
10943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10944 "Unable to get send buffer in set bss key req %x %x %x",
10945 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
10946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010948 }
10949
Jeff Johnsone7245742012-09-05 17:12:55 -070010950 wpalMemoryCopy( pSendBuffer+usDataOffset,
10951 &pwdiUpdateCfgParams->uConfigBufferLen,
10952 sizeof(wpt_uint32));
10953 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
10954 pwdiUpdateCfgParams->pConfigBuffer,
10955 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070010956
10957 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010958 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010959
10960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 -------------------------------------------------------------------------*/
10963
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10965 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010966
10967}/*WDI_ProcessUpdateCfgReq*/
10968
10969
10970/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010971 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010973
10974 @param pWDICtx: pointer to the WLAN DAL context
10975 pEventData: pointer to the event information structure
10976
Jeff Johnson295189b2012-06-20 16:38:30 -070010977 @see
10978 @return Result of the function call
10979*/
10980WDI_Status
10981WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010982(
Jeff Johnson295189b2012-06-20 16:38:30 -070010983 WDI_ControlBlockType* pWDICtx,
10984 WDI_EventInfoType* pEventData
10985)
10986{
10987 WDI_AddBAReqParamsType* pwdiAddBAParams;
10988 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010989 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010990 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010992 wpt_uint16 usDataOffset = 0;
10993 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 wpt_macAddr macBSSID;
10996
10997 tAddBAReqMsg halAddBAReq;
10998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10999
11000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011002 -------------------------------------------------------------------------*/
11003 if (( NULL == pEventData ) ||
11004 ( NULL == pEventData->pEventData) ||
11005 ( NULL == pEventData->pCBfnc ))
11006 {
11007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011008 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011011 }
11012
11013 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11014 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11015
11016 /*-------------------------------------------------------------------------
11017 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011018 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 -------------------------------------------------------------------------*/
11020 wpalMutexAcquire(&pWDICtx->wptMutex);
11021
11022 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011023 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011025 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11026 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011027 &macBSSID))
11028 {
11029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11030 "This station does not exist in the WDI Station Table %d");
11031 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011033 }
11034
Jeff Johnsone7245742012-09-05 17:12:55 -070011035 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11036 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011037 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11039 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11040 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011041
11042 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011043 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011044 }
11045
11046 /*------------------------------------------------------------------------
11047 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011048 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011049 ------------------------------------------------------------------------*/
11050 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11051 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11053 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11054 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011055
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011057 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011058 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011059 }
11060
11061
11062 wpalMutexRelease(&pWDICtx->wptMutex);
11063 /*-----------------------------------------------------------------------
11064 Get message buffer
11065 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011066 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011067 sizeof(halAddBAReq.addBAParams),
11068 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011069 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011070 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11071 {
11072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11073 "Unable to get send buffer in Add BA req %x %x %x",
11074 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011077 }
11078
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11081 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11082#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011084 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11085#endif
11086
Jeff Johnsone7245742012-09-05 17:12:55 -070011087 wpalMemoryCopy( pSendBuffer+usDataOffset,
11088 &halAddBAReq.addBAParams,
11089 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011090
11091 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011093
11094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011095 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011096 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11098 wdiAddBARspCb, pEventData->pUserData,
11099 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011100}/*WDI_ProcessAddBAReq*/
11101
11102
11103
11104/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011105 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011106 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011107
11108 @param pWDICtx: pointer to the WLAN DAL context
11109 pEventData: pointer to the event information structure
11110
Jeff Johnson295189b2012-06-20 16:38:30 -070011111 @see
11112 @return Result of the function call
11113*/
11114WDI_Status
11115WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011116(
Jeff Johnson295189b2012-06-20 16:38:30 -070011117 WDI_ControlBlockType* pWDICtx,
11118 WDI_EventInfoType* pEventData
11119)
11120{
11121 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11122 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011125 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011126 wpt_uint16 usDataOffset = 0;
11127 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011128 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011129 wpt_uint16 index;
11130 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011131
Jeff Johnson295189b2012-06-20 16:38:30 -070011132 tTriggerBAReqMsg halTriggerBAReq;
11133 tTriggerBaReqCandidate* halTriggerBACandidate;
11134 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11136
11137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011138 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011139 -------------------------------------------------------------------------*/
11140 if (( NULL == pEventData ) ||
11141 ( NULL == pEventData->pEventData ) ||
11142 ( NULL == pEventData->pCBfnc ))
11143 {
11144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011145 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011146 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011148 }
11149
11150 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11151 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11152 /*-------------------------------------------------------------------------
11153 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011154 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011155 -------------------------------------------------------------------------*/
11156 wpalMutexAcquire(&pWDICtx->wptMutex);
11157
11158 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011159 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011160 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11162 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011163 &macBSSID))
11164 {
11165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11166 "This station does not exist in the WDI Station Table %d");
11167 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 }
11170
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11172 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011173 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11175 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11176 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011177
11178 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 }
11181
11182 /*------------------------------------------------------------------------
11183 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011184 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011185 ------------------------------------------------------------------------*/
11186 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11187 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11189 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11190 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011191
Jeff Johnsone7245742012-09-05 17:12:55 -070011192 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011194 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011195 }
11196
11197
11198 wpalMutexRelease(&pWDICtx->wptMutex);
11199 /*-----------------------------------------------------------------------
11200 Get message buffer
11201 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011202 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11203 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11207 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011208 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011209 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011210 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011211 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11212 {
11213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11214 "Unable to get send buffer in Trigger BA req %x %x %x",
11215 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 }
11219
Jeff Johnsone7245742012-09-05 17:12:55 -070011220 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011221 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11224
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 wpalMemoryCopy( pSendBuffer+usDataOffset,
11226 &halTriggerBAReq.triggerBAParams,
11227 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011228
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011230 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11231 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11232 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011233
11234 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011235 index++)
11236 {
11237 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11238 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11239 halTriggerBACandidate++;
11240 wdiTriggerBACandidate++;
11241 }
11242
11243 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011244 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011245
11246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011247 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011248 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11250 wdiTriggerBARspCb, pEventData->pUserData,
11251 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011252}/*WDI_ProcessTriggerBAReq*/
11253
11254
11255
11256/**
11257 @brief Process Update Beacon Params Request function (called when Main FSM
11258 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011259
11260 @param pWDICtx: pointer to the WLAN DAL context
11261 pEventData: pointer to the event information structure
11262
Jeff Johnson295189b2012-06-20 16:38:30 -070011263 @see
11264 @return Result of the function call
11265*/
11266WDI_Status
11267WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011268(
Jeff Johnson295189b2012-06-20 16:38:30 -070011269 WDI_ControlBlockType* pWDICtx,
11270 WDI_EventInfoType* pEventData
11271)
11272{
11273 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11274 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011275 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 wpt_uint16 usDataOffset = 0;
11277 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011278 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11280
11281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011283 -------------------------------------------------------------------------*/
11284 if (( NULL == pEventData ) ||
11285 ( NULL == pEventData->pEventData) ||
11286 ( NULL == pEventData->pCBfnc))
11287 {
11288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011289 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 }
11293
11294 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11295 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11296 /*-----------------------------------------------------------------------
11297 Get message buffer
11298 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011299 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011300 sizeof(halUpdateBeaconParams),
11301 &pSendBuffer, &usDataOffset, &usSendSize))||
11302 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11303 {
11304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11305 "Unable to get send buffer in set bss key req %x %x %x",
11306 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 }
11310
11311 /*BSS Index of the BSS*/
11312 halUpdateBeaconParams.bssIdx =
11313 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11314 /*shortPreamble mode. HAL should update all the STA rates when it
11315 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11318 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11321 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011323 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11324
11325 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011326 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011327 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011330 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011331 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011336 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011337 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11338 halUpdateBeaconParams.fRIFSMode =
11339 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11342
Jeff Johnsone7245742012-09-05 17:12:55 -070011343 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11344 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011345
11346 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011347 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011348
11349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011350 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011351 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011352 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11353 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011354}/*WDI_ProcessUpdateBeaconParamsReq*/
11355
11356
11357
11358/**
11359 @brief Process Send Beacon template Request function (called when Main FSM
11360 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011361
11362 @param pWDICtx: pointer to the WLAN DAL context
11363 pEventData: pointer to the event information structure
11364
Jeff Johnson295189b2012-06-20 16:38:30 -070011365 @see
11366 @return Result of the function call
11367*/
11368WDI_Status
11369WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011370(
Jeff Johnson295189b2012-06-20 16:38:30 -070011371 WDI_ControlBlockType* pWDICtx,
11372 WDI_EventInfoType* pEventData
11373)
11374{
11375 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11376 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 wpt_uint16 usDataOffset = 0;
11379 wpt_uint16 usSendSize = 0;
11380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11381
11382 tSendBeaconReqMsg halSendBeaconReq;
11383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011385 -------------------------------------------------------------------------*/
11386 if (( NULL == pEventData ) ||
11387 ( NULL == pEventData->pEventData ) ||
11388 ( NULL == pEventData->pCBfnc ))
11389 {
11390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011391 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 }
11395
11396 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11397 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11398 /*-----------------------------------------------------------------------
11399 Get message buffer
11400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011402 sizeof(halSendBeaconReq.sendBeaconParam),
11403 &pSendBuffer, &usDataOffset, &usSendSize))||
11404 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11405 {
11406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11407 "Unable to get send buffer in send beacon req %x %x %x",
11408 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011411 }
11412
11413 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11414 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11415 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011416 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011417 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11418 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11419 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11420 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011421 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011422 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011423#ifdef WLAN_FEATURE_P2P
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011425 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
11426#endif
11427
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 wpalMemoryCopy( pSendBuffer+usDataOffset,
11429 &halSendBeaconReq.sendBeaconParam,
11430 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011431
11432 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011434
11435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011436 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011437 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011438 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11439 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011440}/*WDI_ProcessSendBeaconParamsReq*/
11441
11442/**
11443 @brief Process Update Beacon Params Request function (called when Main FSM
11444 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011445
11446 @param pWDICtx: pointer to the WLAN DAL context
11447 pEventData: pointer to the event information structure
11448
Jeff Johnson295189b2012-06-20 16:38:30 -070011449 @see
11450 @return Result of the function call
11451*/
11452WDI_Status
11453WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011454(
Jeff Johnson295189b2012-06-20 16:38:30 -070011455 WDI_ControlBlockType* pWDICtx,
11456 WDI_EventInfoType* pEventData
11457)
11458{
11459 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11460 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011462 wpt_uint16 usDataOffset = 0;
11463 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11466
11467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 -------------------------------------------------------------------------*/
11470 if (( NULL == pEventData ) ||
11471 ( NULL == pEventData->pEventData) ||
11472 ( NULL == pEventData->pCBfnc))
11473 {
11474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011478 }
11479
Jeff Johnsone7245742012-09-05 17:12:55 -070011480 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011481 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011482 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011483 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11484 /*-----------------------------------------------------------------------
11485 Get message buffer
11486 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011487 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 sizeof(halUpdateProbeRspTmplParams),
11489 &pSendBuffer, &usDataOffset, &usSendSize))||
11490 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11491 {
11492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11493 "Unable to get send buffer in set bss key req %x %x %x",
11494 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011497 }
11498
11499 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011500 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011501 WDI_MAC_ADDR_LEN);
11502
Jeff Johnsone7245742012-09-05 17:12:55 -070011503 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11505
11506 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11507 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011509
11510
11511 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11512 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11513 WDI_PROBE_REQ_BITMAP_IE_LEN);
11514
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 wpalMemoryCopy( pSendBuffer+usDataOffset,
11516 &halUpdateProbeRspTmplParams,
11517 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011518
11519 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011521
11522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011525 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11526 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11527 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011528}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11529
11530/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011531 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011532 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011533
11534 @param pWDICtx: pointer to the WLAN DAL context
11535 pEventData: pointer to the event information structure
11536
Jeff Johnson295189b2012-06-20 16:38:30 -070011537 @see
11538 @return Result of the function call
11539*/
11540WDI_Status
11541WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011542(
Jeff Johnson295189b2012-06-20 16:38:30 -070011543 WDI_ControlBlockType* pWDICtx,
11544 WDI_EventInfoType* pEventData
11545)
11546{
11547
11548 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11549 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11550
11551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011552 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011553 -------------------------------------------------------------------------*/
11554 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011556 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011558 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11559 {
11560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011561 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 }
11565
11566 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11569
11570 /*cache the wdi nv request message here if the the first fragment
11571 * To issue the request to HAL for the next fragment */
11572 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11573 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011574 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11575 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11577
11578 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11579 pWDICtx->pRspCBUserData = pEventData->pUserData;
11580 }
11581
11582 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11583}
11584
11585/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011588
11589 @param pWDICtx: pointer to the WLAN DAL context
11590 pEventData: pointer to the event information structure
11591
Jeff Johnson295189b2012-06-20 16:38:30 -070011592 @see
11593 @return Result of the function call
11594*/
11595WDI_Status WDI_ProcessSetMaxTxPowerReq
11596(
11597 WDI_ControlBlockType* pWDICtx,
11598 WDI_EventInfoType* pEventData
11599)
11600{
11601 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11602 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011603 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011604 wpt_uint16 usDataOffset = 0;
11605 wpt_uint16 usSendSize = 0;
11606 tSetMaxTxPwrReq halSetMaxTxPower;
11607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11608
11609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 -------------------------------------------------------------------------*/
11612 if (( NULL == pEventData ) ||
11613 ( NULL == pEventData->pEventData ) ||
11614 ( NULL == pEventData->pCBfnc ))
11615 {
11616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011617 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011618 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011620 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011621 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011623 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011624 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11625
11626 /*-----------------------------------------------------------------------
11627 Get message buffer
11628 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011629if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11631 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011633)))
11634 {
11635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11636 "Unable to get Set Max Tx Power req %x %x %x",
11637 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11638 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011639 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011640 }
11641
11642 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11643 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11644 WDI_MAC_ADDR_LEN);
11645
11646 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11647 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11648 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011651
11652 wpalMemoryCopy( pSendBuffer+usDataOffset,
11653 &halSetMaxTxPower.setMaxTxPwrParams,
11654 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011655
11656 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011657 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011658
11659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11663 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11664 WDI_SET_MAX_TX_POWER_RESP);
11665
Jeff Johnson295189b2012-06-20 16:38:30 -070011666}
11667
11668#ifdef WLAN_FEATURE_P2P
11669
11670/**
11671 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11672 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011673
11674 @param pWDICtx: pointer to the WLAN DAL context
11675 pEventData: pointer to the event information structure
11676
Jeff Johnson295189b2012-06-20 16:38:30 -070011677 @see
11678 @return Result of the function call
11679*/
11680WDI_Status
11681WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011682(
Jeff Johnson295189b2012-06-20 16:38:30 -070011683 WDI_ControlBlockType* pWDICtx,
11684 WDI_EventInfoType* pEventData
11685)
11686{
11687 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
11688 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 wpt_uint16 usDataOffset = 0;
11691 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011692 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11694
11695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011697 -------------------------------------------------------------------------*/
11698 if (( NULL == pEventData ) ||
11699 ( NULL == pEventData->pEventData) ||
11700 ( NULL == pEventData->pCBfnc))
11701 {
11702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011706 }
11707
Jeff Johnsone7245742012-09-05 17:12:55 -070011708 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011709 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011710 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011711 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
11712 /*-----------------------------------------------------------------------
11713 Get message buffer
11714 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011715 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11716 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011717 sizeof(halSetP2PGONOAParams),
11718 &pSendBuffer, &usDataOffset, &usSendSize))||
11719 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
11720 {
11721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11722 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
11723 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
11724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011726 }
11727
Jeff Johnsone7245742012-09-05 17:12:55 -070011728 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070011729 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070011730 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070011731 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
11732 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070011733 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011734 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011735 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011736 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011737 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011738 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
11741
Jeff Johnsone7245742012-09-05 17:12:55 -070011742 wpalMemoryCopy( pSendBuffer+usDataOffset,
11743 &halSetP2PGONOAParams,
11744 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011745
11746 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011748
11749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011751 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011752 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11753 wdiP2PGONOAReqRspCb, pEventData->pUserData,
11754 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011755}/*WDI_ProcessP2PGONOAReq*/
11756
11757#endif
11758
11759
11760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070011763 @param None
11764
11765 @see
11766 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070011767*/
11768void
11769WDI_SetPowerStateCb
11770(
11771 wpt_status status,
11772 unsigned int dxePhyAddr,
11773 void *pContext
11774)
11775{
11776 wpt_status wptStatus;
11777 WDI_ControlBlockType *pCB = NULL;
11778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
11779 if(eWLAN_PAL_STATUS_E_FAILURE == status )
11780 {
11781 //it shouldn't happen, put an error msg
11782 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011783 /*
11784 * Trigger the event to bring the Enter BMPS req function to come
11785 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070011786*/
11787 if( NULL != pContext )
11788 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011789 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070011790 }
11791 else
11792 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011793 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 pCB = &gWDICb;
11795 }
11796 pCB->dxePhyAddr = dxePhyAddr;
11797 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
11798 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11799 {
11800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11801 "Failed to set an event");
11802
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 }
11805 return;
11806}
11807
11808
11809/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011810 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011811 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011812
11813 @param pWDICtx: pointer to the WLAN DAL context
11814 pEventData: pointer to the event information structure
11815
Jeff Johnson295189b2012-06-20 16:38:30 -070011816 @see
11817 @return Result of the function call
11818*/
11819WDI_Status
11820WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011821(
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 WDI_ControlBlockType* pWDICtx,
11823 WDI_EventInfoType* pEventData
11824)
11825{
Jeff Johnson43971f52012-07-17 12:26:56 -070011826 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011827 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011828 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011829 wpt_uint16 usDataOffset = 0;
11830 wpt_uint16 usSendSize = 0;
11831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11832
11833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011835 -------------------------------------------------------------------------*/
11836 if (( NULL == pEventData ) ||
11837 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
11838 {
11839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011841 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011842 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 }
11844
11845 /*-----------------------------------------------------------------------
11846 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011847 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011849 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 0,
11851 &pSendBuffer, &usDataOffset, &usSendSize))||
11852 ( usSendSize < (usDataOffset )))
11853 {
11854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11855 "Unable to get send buffer in Enter IMPS req %x %x",
11856 pEventData, wdiEnterImpsRspCb);
11857 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011858 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 }
11860
11861 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011862 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11863 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011864 {
11865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11866 "WDI Init failed to reset an event");
11867
Jeff Johnsone7245742012-09-05 17:12:55 -070011868 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011869 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070011870 }
11871
11872 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011873 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
11874 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
11875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11876 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
11877 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011878 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011879 }
Jeff Johnson295189b2012-06-20 16:38:30 -070011880
11881 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070011882 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011883 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011884 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11885 WDI_SET_POWER_STATE_TIMEOUT);
11886 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 {
11888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11889 "WDI Init failed to wait on an event");
11890
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011892 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070011893 }
11894
11895 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011896 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011897 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011898 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11899 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011900
11901fail:
11902 // Release the message buffer so we don't leak
11903 wpalMemoryFree(pSendBuffer);
11904
11905failRequest:
11906 //WDA should have failure check to avoid the memory leak
11907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011908}/*WDI_ProcessEnterImpsReq*/
11909
11910/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011912 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011913
11914 @param pWDICtx: pointer to the WLAN DAL context
11915 pEventData: pointer to the event information structure
11916
Jeff Johnson295189b2012-06-20 16:38:30 -070011917 @see
11918 @return Result of the function call
11919*/
11920WDI_Status
11921WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011922(
Jeff Johnson295189b2012-06-20 16:38:30 -070011923 WDI_ControlBlockType* pWDICtx,
11924 WDI_EventInfoType* pEventData
11925)
11926{
11927 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 wpt_uint16 usDataOffset = 0;
11930 wpt_uint16 usSendSize = 0;
11931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11932
11933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 -------------------------------------------------------------------------*/
11936 if (( NULL == pEventData ) ||
11937 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
11938 {
11939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011940 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 }
11944
11945 /*-----------------------------------------------------------------------
11946 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011947 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011948 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011949 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011950 0,
11951 &pSendBuffer, &usDataOffset, &usSendSize))||
11952 ( usSendSize < (usDataOffset )))
11953 {
11954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11955 "Unable to get send buffer in Exit IMPS req %x %x",
11956 pEventData, wdiExitImpsRspCb);
11957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011959 }
11960
11961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011962 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011964 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11965 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011966}/*WDI_ProcessExitImpsReq*/
11967
11968/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011969 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011970 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011971
11972 @param pWDICtx: pointer to the WLAN DAL context
11973 pEventData: pointer to the event information structure
11974
Jeff Johnson295189b2012-06-20 16:38:30 -070011975 @see
11976 @return Result of the function call
11977*/
11978WDI_Status
11979WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011980(
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 WDI_ControlBlockType* pWDICtx,
11982 WDI_EventInfoType* pEventData
11983)
11984{
11985 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
11986 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011987 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011988 wpt_uint16 usDataOffset = 0;
11989 wpt_uint16 usSendSize = 0;
11990 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070011991 wpt_status wptStatus;
11992
Jeff Johnson295189b2012-06-20 16:38:30 -070011993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11994
11995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011997 -------------------------------------------------------------------------*/
11998 if (( NULL == pEventData ) ||
11999 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12000 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12001 {
12002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012004 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012005 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012006 }
12007
12008 /*-----------------------------------------------------------------------
12009 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012010 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012013 sizeof(enterBmpsReq),
12014 &pSendBuffer, &usDataOffset, &usSendSize))||
12015 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12016 {
12017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12018 "Unable to get send buffer in Enter BMPS req %x %x %x",
12019 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12020 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012021 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012022 }
12023
12024 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012025 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12026 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 {
12028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12029 "WDI Init failed to reset an event");
12030
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012032 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 }
12034
12035 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012036 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12037 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12038 {
12039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12040 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12041 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012042 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012043 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012044
12045/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012046 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012048 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12049 WDI_SET_POWER_STATE_TIMEOUT);
12050 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012051 {
12052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12053 "WDI Init failed to wait on an event");
12054
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012056 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012057 }
12058
12059 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12060
12061 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12062 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12063 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12064 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12065
12066 // For CCX and 11R Roaming
12067 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12068 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12069 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12070
12071 wpalMemoryCopy( pSendBuffer+usDataOffset,
12072 &enterBmpsReq,
12073 sizeof(enterBmpsReq));
12074
12075 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012076 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012077
12078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012081 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12082 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012083
12084fail:
12085 // Release the message buffer so we don't leak
12086 wpalMemoryFree(pSendBuffer);
12087
12088failRequest:
12089 //WDA should have failure check to avoid the memory leak
12090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012091}/*WDI_ProcessEnterBmpsReq*/
12092
12093/**
12094 @brief Process Exit BMPS Request function (called when Main FSM
12095 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012096
12097 @param pWDICtx: pointer to the WLAN DAL context
12098 pEventData: pointer to the event information structure
12099
Jeff Johnson295189b2012-06-20 16:38:30 -070012100 @see
12101 @return Result of the function call
12102*/
12103WDI_Status
12104WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012105(
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 WDI_ControlBlockType* pWDICtx,
12107 WDI_EventInfoType* pEventData
12108)
12109{
12110 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12111 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012112 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 wpt_uint16 usDataOffset = 0;
12114 wpt_uint16 usSendSize = 0;
12115 tHalExitBmpsReqParams exitBmpsReq;
12116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12117
12118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 -------------------------------------------------------------------------*/
12121 if (( NULL == pEventData ) ||
12122 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12123 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12124 {
12125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012129 }
12130
12131 /*-----------------------------------------------------------------------
12132 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012133 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012134 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012135 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012136 sizeof(exitBmpsReq),
12137 &pSendBuffer, &usDataOffset, &usSendSize))||
12138 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12139 {
12140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12141 "Unable to get send buffer in Exit BMPS req %x %x %x",
12142 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 }
12146 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12147
Jeff Johnsone7245742012-09-05 17:12:55 -070012148 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12149
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 wpalMemoryCopy( pSendBuffer+usDataOffset,
12151 &exitBmpsReq,
12152 sizeof(exitBmpsReq));
12153
12154 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012156
12157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12161 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012162}/*WDI_ProcessExitBmpsReq*/
12163
12164/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012165 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012167
12168 @param pWDICtx: pointer to the WLAN DAL context
12169 pEventData: pointer to the event information structure
12170
Jeff Johnson295189b2012-06-20 16:38:30 -070012171 @see
12172 @return Result of the function call
12173*/
12174WDI_Status
12175WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012176(
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 WDI_ControlBlockType* pWDICtx,
12178 WDI_EventInfoType* pEventData
12179)
12180{
12181 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12182 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012184 wpt_uint16 usDataOffset = 0;
12185 wpt_uint16 usSendSize = 0;
12186 tUapsdReqParams enterUapsdReq;
12187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12188
12189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012191 -------------------------------------------------------------------------*/
12192 if (( NULL == pEventData ) ||
12193 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12194 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12195 {
12196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012200 }
12201
12202 /*-----------------------------------------------------------------------
12203 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012204 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012205 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012206 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012207 sizeof(enterUapsdReq),
12208 &pSendBuffer, &usDataOffset, &usSendSize))||
12209 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12210 {
12211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12212 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12213 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012216 }
12217
12218 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12219 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12220 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12221 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12222 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12223 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12224 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12225 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012226 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012227
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 wpalMemoryCopy( pSendBuffer+usDataOffset,
12229 &enterUapsdReq,
12230 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012231
12232 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012233 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012234
12235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012236 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012238 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12239 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012240}/*WDI_ProcessEnterUapsdReq*/
12241
12242/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012243 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012245
12246 @param pWDICtx: pointer to the WLAN DAL context
12247 pEventData: pointer to the event information structure
12248
Jeff Johnson295189b2012-06-20 16:38:30 -070012249 @see
12250 @return Result of the function call
12251*/
12252WDI_Status
12253WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012254(
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 WDI_ControlBlockType* pWDICtx,
12256 WDI_EventInfoType* pEventData
12257)
12258{
12259 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 wpt_uint16 usDataOffset = 0;
12262 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012263 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12264 wpt_uint8 bssIdx = 0;
12265
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12267
12268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 -------------------------------------------------------------------------*/
12271 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012272 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12274 {
12275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012279 }
12280
12281 /*-----------------------------------------------------------------------
12282 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012283 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012285 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012286 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012288 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 {
12290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12291 "Unable to get send buffer in Exit UAPSD req %x %x",
12292 pEventData, wdiExitUapsdRspCb);
12293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 }
12296
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012297 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12298
12299 wpalMemoryCopy( pSendBuffer+usDataOffset,
12300 &bssIdx,
12301 sizeof(wpt_uint8));
12302
12303 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12304 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12305
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012307 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12310 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012311}/*WDI_ProcessExitUapsdReq*/
12312
12313/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012316
12317 @param pWDICtx: pointer to the WLAN DAL context
12318 pEventData: pointer to the event information structure
12319
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 @see
12321 @return Result of the function call
12322*/
12323WDI_Status
12324WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012325(
Jeff Johnson295189b2012-06-20 16:38:30 -070012326 WDI_ControlBlockType* pWDICtx,
12327 WDI_EventInfoType* pEventData
12328)
12329{
12330 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12331 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 wpt_uint16 usDataOffset = 0;
12334 wpt_uint16 usSendSize = 0;
12335 tUapsdInfo uapsdAcParamsReq;
12336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12337
12338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 -------------------------------------------------------------------------*/
12341 if (( NULL == pEventData ) ||
12342 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12343 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12344 {
12345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012346 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 }
12350
12351 /*-----------------------------------------------------------------------
12352 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012353 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 sizeof(uapsdAcParamsReq),
12357 &pSendBuffer, &usDataOffset, &usSendSize))||
12358 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12359 {
12360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12361 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12362 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012365 }
12366
12367 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12368 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12369 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12370 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12371 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12372 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12373
Jeff Johnsone7245742012-09-05 17:12:55 -070012374 wpalMemoryCopy( pSendBuffer+usDataOffset,
12375 &uapsdAcParamsReq,
12376 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012377
12378 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012379 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012380
12381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012384 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12385 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012386}/*WDI_ProcessSetUapsdAcParamsReq*/
12387
12388/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012389 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012391
12392 @param pWDICtx: pointer to the WLAN DAL context
12393 pEventData: pointer to the event information structure
12394
Jeff Johnson295189b2012-06-20 16:38:30 -070012395 @see
12396 @return Result of the function call
12397*/
12398WDI_Status
12399WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012400(
Jeff Johnson295189b2012-06-20 16:38:30 -070012401 WDI_ControlBlockType* pWDICtx,
12402 WDI_EventInfoType* pEventData
12403)
12404{
12405 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12406 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 wpt_uint16 usDataOffset = 0;
12409 wpt_uint16 usSendSize = 0;
12410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12411
12412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012413 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012414 -------------------------------------------------------------------------*/
12415 if (( NULL == pEventData ) ||
12416 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12417 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12418 {
12419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 }
12424
12425 /*-----------------------------------------------------------------------
12426 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12431 &pSendBuffer, &usDataOffset, &usSendSize))||
12432 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12433 {
12434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12435 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12436 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012439 }
12440
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 wpalMemoryCopy( pSendBuffer+usDataOffset,
12442 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12443 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012444
12445 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012446 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012447
12448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012449 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012450 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12452 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012453}/*WDI_ProcessUpdateUapsdParamsReq*/
12454
12455/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012456 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012457 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012458
12459 @param pWDICtx: pointer to the WLAN DAL context
12460 pEventData: pointer to the event information structure
12461
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 @see
12463 @return Result of the function call
12464*/
12465WDI_Status
12466WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012467(
Jeff Johnson295189b2012-06-20 16:38:30 -070012468 WDI_ControlBlockType* pWDICtx,
12469 WDI_EventInfoType* pEventData
12470)
12471{
12472 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12473 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012474 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 wpt_uint16 usDataOffset = 0;
12476 wpt_uint16 usSendSize = 0;
12477 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12478
12479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12480
12481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 -------------------------------------------------------------------------*/
12484 if (( NULL == pEventData ) ||
12485 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12486 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12487 {
12488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012492 }
12493
12494 /*-----------------------------------------------------------------------
12495 Get message buffer
12496 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 sizeof(halRxpFilterParams),
12499 &pSendBuffer, &usDataOffset, &usSendSize))||
12500 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12501 {
12502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12503 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12504 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 }
12508
Jeff Johnsone7245742012-09-05 17:12:55 -070012509 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012511 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12513
Jeff Johnsone7245742012-09-05 17:12:55 -070012514 wpalMemoryCopy( pSendBuffer+usDataOffset,
12515 &halRxpFilterParams,
12516 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012517
12518 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012519 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012520
12521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012523 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012524 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12525 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012526}/*WDI_ProcessConfigureRxpFilterReq*/
12527
12528/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012531
12532 @param pWDICtx: pointer to the WLAN DAL context
12533 pEventData: pointer to the event information structure
12534
Jeff Johnson295189b2012-06-20 16:38:30 -070012535 @see
12536 @return Result of the function call
12537*/
12538WDI_Status
12539WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012540(
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 WDI_ControlBlockType* pWDICtx,
12542 WDI_EventInfoType* pEventData
12543)
12544{
12545 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12546 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 wpt_uint16 usDataOffset = 0;
12549 wpt_uint16 usSendSize = 0;
12550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12551
12552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012553 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012554 -------------------------------------------------------------------------*/
12555 if (( NULL == pEventData ) ||
12556 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12557 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12558 {
12559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 }
12564
12565 /*-----------------------------------------------------------------------
12566 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012569 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012570 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12571 &pSendBuffer, &usDataOffset, &usSendSize))||
12572 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12573 {
12574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12575 "Unable to get send buffer in Set beacon filter req %x %x %x",
12576 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012579 }
12580
Jeff Johnsone7245742012-09-05 17:12:55 -070012581 wpalMemoryCopy( pSendBuffer+usDataOffset,
12582 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12583 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12584 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12585 &pwdiBeaconFilterParams->aFilters[0],
12586 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012587
12588 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012590
12591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012592 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012593 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012594 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12595 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012596}/*WDI_ProcessSetBeaconFilterReq*/
12597
12598/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012599 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012600 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012601
12602 @param pWDICtx: pointer to the WLAN DAL context
12603 pEventData: pointer to the event information structure
12604
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 @see
12606 @return Result of the function call
12607*/
12608WDI_Status
12609WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012610(
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 WDI_ControlBlockType* pWDICtx,
12612 WDI_EventInfoType* pEventData
12613)
12614{
12615 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12616 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 wpt_uint16 usDataOffset = 0;
12619 wpt_uint16 usSendSize = 0;
12620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12621
12622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 -------------------------------------------------------------------------*/
12625 if (( NULL == pEventData ) ||
12626 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12627 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12628 {
12629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012630 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012633 }
12634
12635 /*-----------------------------------------------------------------------
12636 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012639 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012640 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12641 &pSendBuffer, &usDataOffset, &usSendSize))||
12642 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12643 {
12644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12645 "Unable to get send buffer in remove beacon filter req %x %x %x",
12646 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012649 }
12650
Jeff Johnsone7245742012-09-05 17:12:55 -070012651 wpalMemoryCopy( pSendBuffer+usDataOffset,
12652 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12653 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012654
12655 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012656 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012657
12658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012659 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012660 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012661 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12662 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012663}
12664
12665/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012668
12669 @param pWDICtx: pointer to the WLAN DAL context
12670 pEventData: pointer to the event information structure
12671
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 @see
12673 @return Result of the function call
12674*/
12675WDI_Status
12676WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012677(
Jeff Johnson295189b2012-06-20 16:38:30 -070012678 WDI_ControlBlockType* pWDICtx,
12679 WDI_EventInfoType* pEventData
12680)
12681{
12682 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12683 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 wpt_uint16 usDataOffset = 0;
12686 wpt_uint16 usSendSize = 0;
12687 tHalRSSIThresholds rssiThresholdsReq;
12688 WDI_Status ret_status = 0;
12689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12690
12691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 -------------------------------------------------------------------------*/
12694 if (( NULL == pEventData ) ||
12695 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
12696 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
12697 {
12698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 }
12703
12704 /*-----------------------------------------------------------------------
12705 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012706 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012708 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012709 sizeof(rssiThresholdsReq),
12710 &pSendBuffer, &usDataOffset, &usSendSize))||
12711 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
12712 {
12713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12714 "Unable to get send buffer in remove beacon filter req %x %x %x",
12715 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
12716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012718 }
12719
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012721 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070012722 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012723 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012725 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012726 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012730 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012731 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012732 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012733 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012734 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012735 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070012738 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012739 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
12740
Jeff Johnsone7245742012-09-05 17:12:55 -070012741 wpalMemoryCopy( pSendBuffer+usDataOffset,
12742 &rssiThresholdsReq,
12743 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012744
12745 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012746 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012747
12748 /*-------------------------------------------------------------------------
12749 Send Set threshold req to HAL
12750 -------------------------------------------------------------------------*/
12751 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12752 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
12753 {
12754 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
12755 // req. Then as a result of processing the threshold cross ind, we trigger
12756 // a Set threshold req, then we need to indicate to WDI that it needs to
12757 // go to busy state as a result of the indication as we sent a req in the
12758 // same WDI context.
12759 // Hence expected state transition is to busy.
12760 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
12761 }
12762
12763 return ret_status;
12764}
12765
12766/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012769
12770 @param pWDICtx: pointer to the WLAN DAL context
12771 pEventData: pointer to the event information structure
12772
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 @see
12774 @return Result of the function call
12775*/
12776WDI_Status
12777WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012778(
Jeff Johnson295189b2012-06-20 16:38:30 -070012779 WDI_ControlBlockType* pWDICtx,
12780 WDI_EventInfoType* pEventData
12781)
12782{
12783 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
12784 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012785 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012786 wpt_uint16 usDataOffset = 0;
12787 wpt_uint16 usSendSize = 0;
12788 tHalHostOffloadReq hostOffloadParams;
12789 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012790 wpt_uint8 ucCurrentBSSSesIdx = 0;
12791 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012792
12793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12794
12795 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012796 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012797 -------------------------------------------------------------------------*/
12798 if (( NULL == pEventData ) ||
12799 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
12800 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
12801 {
12802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012805 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012806 }
12807
12808 /*-----------------------------------------------------------------------
12809 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012810 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012811 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
12814 &pSendBuffer, &usDataOffset, &usSendSize))||
12815 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
12816 {
12817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12818 "Unable to get send buffer in host offload req %x %x %x",
12819 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
12820 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012821 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012822 }
12823
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012824 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12825 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
12826 &pBSSSes);
12827 if ( NULL == pBSSSes )
12828 {
12829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012830 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012831 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012832 }
12833
Jeff Johnson295189b2012-06-20 16:38:30 -070012834 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
12835 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070012836
Jeff Johnson295189b2012-06-20 16:38:30 -070012837 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
12838 {
12839 // ARP Offload
12840 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
12841 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
12842 4);
12843 }
12844 else
12845 {
12846 // NS Offload
12847 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
12848 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
12849 16);
12850
12851#ifdef WLAN_NS_OFFLOAD
12852 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
12853 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
12854 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
12855 16);
12856 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
12857 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
12858 16);
12859 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
12860 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
12861 16);
12862 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
12863 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
12864 16);
12865 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
12866 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
12867 6);
12868 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
12869 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
12870 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070012871
Jeff Johnson295189b2012-06-20 16:38:30 -070012872#endif // WLAN_NS_OFFLOAD
12873 }
12874
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012875 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
12876
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 // copy hostOffloadParams into pSendBuffer
12878 wpalMemoryCopy( pSendBuffer+usDataOffset,
12879 &hostOffloadParams,
12880 sizeof(hostOffloadParams));
12881
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012882 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012884 // copy nsOffloadParams into pSendBuffer
12885 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 &nsOffloadParams,
12887 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012888 }
12889 else
12890 {
12891#ifdef WLAN_NS_OFFLOAD
12892 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
12893 {
12894 // copy nsOffloadParams into pSendBuffer
12895 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
12896 &nsOffloadParams,
12897 sizeof(nsOffloadParams));
12898 }
12899#endif
12900 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012901
12902 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012904
12905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012906 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012907 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12909 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012910
12911fail:
12912 // Release the message buffer so we don't leak
12913 wpalMemoryFree(pSendBuffer);
12914
12915failRequest:
12916 //WDA should have failure check to avoid the memory leak
12917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012918}/*WDI_ProcessHostOffloadReq*/
12919
12920/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012921 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012922 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012923
12924 @param pWDICtx: pointer to the WLAN DAL context
12925 pEventData: pointer to the event information structure
12926
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 @see
12928 @return Result of the function call
12929*/
12930WDI_Status
12931WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012932(
Jeff Johnson295189b2012-06-20 16:38:30 -070012933 WDI_ControlBlockType* pWDICtx,
12934 WDI_EventInfoType* pEventData
12935)
12936{
12937 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
12938 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012939 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012940 wpt_uint16 usDataOffset = 0;
12941 wpt_uint16 usSendSize = 0;
12942 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012943 wpt_uint8 ucCurrentBSSSesIdx = 0;
12944 WDI_BSSSessionType* pBSSSes = NULL;
12945
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12947
12948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 -------------------------------------------------------------------------*/
12951 if (( NULL == pEventData ) ||
12952 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
12953 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
12954 {
12955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12956 "Invalid parameters in Keep Alive req");
12957 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012958 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 }
12960
12961 /*-----------------------------------------------------------------------
12962 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012964 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012965 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012966 sizeof(keepAliveReq),
12967 &pSendBuffer, &usDataOffset, &usSendSize))||
12968 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
12969 {
12970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12971 "Unable to get send buffer in keep alive req %x %x %x",
12972 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
12973 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012974 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012975 }
12976
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012977 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12978 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
12979 &pBSSSes);
12980 if ( NULL == pBSSSes )
12981 {
12982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012983 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012984 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012985 }
12986
Jeff Johnson295189b2012-06-20 16:38:30 -070012987 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
12988 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
12989
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012990 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012991
Jeff Johnson295189b2012-06-20 16:38:30 -070012992 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
12993 {
12994 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
12995 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
12996 HAL_IPV4_ADDR_LEN);
12997 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
12998 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070012999 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013000 wpalMemoryCopy(keepAliveReq.destMacAddr,
13001 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13002 HAL_MAC_ADDR_LEN);
13003 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013004
13005 wpalMemoryCopy( pSendBuffer+usDataOffset,
13006 &keepAliveReq,
13007 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013008
13009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13010 "Process keep alive req %d",sizeof(keepAliveReq));
13011
13012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13013 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13014
13015 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013016 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013017
13018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13019 "Sending keep alive req to HAL");
13020
13021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013022 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013023 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013024 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13025 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013026
13027fail:
13028 // Release the message buffer so we don't leak
13029 wpalMemoryFree(pSendBuffer);
13030
13031failRequest:
13032 //WDA should have failure check to avoid the memory leak
13033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013034}/*WDI_ProcessKeepAliveReq*/
13035
13036
13037/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013038 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013039 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013040
13041 @param pWDICtx: pointer to the WLAN DAL context
13042 pEventData: pointer to the event information structure
13043
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 @see
13045 @return Result of the function call
13046*/
13047WDI_Status
13048WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013049(
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 WDI_ControlBlockType* pWDICtx,
13051 WDI_EventInfoType* pEventData
13052)
13053{
13054 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13055 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013056 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013057 wpt_uint16 usDataOffset = 0;
13058 wpt_uint16 usSendSize = 0;
13059 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013060 wpt_uint8 ucCurrentBSSSesIdx = 0;
13061 WDI_BSSSessionType* pBSSSes = NULL;
13062
Jeff Johnson295189b2012-06-20 16:38:30 -070013063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13064
13065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013066 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013067 -------------------------------------------------------------------------*/
13068 if (( NULL == pEventData ) ||
13069 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13070 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13071 {
13072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013073 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013075 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 }
13077
13078 /*-----------------------------------------------------------------------
13079 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013080 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013081 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013082 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013083 sizeof(wowlAddBcPtrnReq),
13084 &pSendBuffer, &usDataOffset, &usSendSize))||
13085 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13086 {
13087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13088 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13089 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13090 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013091 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 }
13093
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013094 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13095 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13096 &pBSSSes);
13097 if ( NULL == pBSSSes )
13098 {
13099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013100 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013101 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013102 }
13103
Jeff Johnsone7245742012-09-05 17:12:55 -070013104 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013108 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013110 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013111 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13112
13113 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13114 {
13115 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13116 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13117 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13118 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13119 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13120 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13121 }
13122 else
13123 {
13124 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13125 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13126 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13127 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13128 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13129 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13130
13131 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13132 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13133 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13134 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13135 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13136 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13137 }
13138
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013139 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13140
Jeff Johnson295189b2012-06-20 16:38:30 -070013141 wpalMemoryCopy( pSendBuffer+usDataOffset,
13142 &wowlAddBcPtrnReq,
13143 sizeof(wowlAddBcPtrnReq));
13144
13145 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013146 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013147
13148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013149 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013150 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013151 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13152 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013153fail:
13154 // Release the message buffer so we don't leak
13155 wpalMemoryFree(pSendBuffer);
13156
13157failRequest:
13158 //WDA should have failure check to avoid the memory leak
13159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013160}/*WDI_ProcessWowlAddBcPtrnReq*/
13161
13162/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013163 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013164 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013165
13166 @param pWDICtx: pointer to the WLAN DAL context
13167 pEventData: pointer to the event information structure
13168
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 @see
13170 @return Result of the function call
13171*/
13172WDI_Status
13173WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013174(
Jeff Johnson295189b2012-06-20 16:38:30 -070013175 WDI_ControlBlockType* pWDICtx,
13176 WDI_EventInfoType* pEventData
13177)
13178{
13179 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13180 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013181 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013182 wpt_uint16 usDataOffset = 0;
13183 wpt_uint16 usSendSize = 0;
13184 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013185 wpt_uint8 ucCurrentBSSSesIdx = 0;
13186 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13188
13189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013191 -------------------------------------------------------------------------*/
13192 if (( NULL == pEventData ) ||
13193 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13194 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13195 {
13196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013199 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 }
13201
13202 /*-----------------------------------------------------------------------
13203 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013206 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 sizeof(wowlDelBcPtrnReq),
13208 &pSendBuffer, &usDataOffset, &usSendSize))||
13209 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13210 {
13211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13212 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13213 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13214 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013215 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 }
13217
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013218 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13219 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13220 &pBSSSes);
13221 if ( NULL == pBSSSes )
13222 {
13223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013224 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013225 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013226 }
13227
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013230
13231 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13232
Jeff Johnsone7245742012-09-05 17:12:55 -070013233 wpalMemoryCopy( pSendBuffer+usDataOffset,
13234 &wowlDelBcPtrnReq,
13235 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013236
13237 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013239
13240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013241 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013242 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013243 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13244 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013245
13246fail:
13247 // Release the message buffer so we don't leak
13248 wpalMemoryFree(pSendBuffer);
13249
13250failRequest:
13251 //WDA should have failure check to avoid the memory leak
13252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013253}/*WDI_ProcessWowlDelBcPtrnReq*/
13254
13255/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013256 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013258
13259 @param pWDICtx: pointer to the WLAN DAL context
13260 pEventData: pointer to the event information structure
13261
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 @see
13263 @return Result of the function call
13264*/
13265WDI_Status
13266WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013267(
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 WDI_ControlBlockType* pWDICtx,
13269 WDI_EventInfoType* pEventData
13270)
13271{
13272 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13273 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 wpt_uint16 usDataOffset = 0;
13276 wpt_uint16 usSendSize = 0;
13277 tHalWowlEnterParams wowlEnterReq;
13278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13279
13280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 -------------------------------------------------------------------------*/
13283 if (( NULL == pEventData ) ||
13284 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13285 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13286 {
13287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 }
13292
13293 /*-----------------------------------------------------------------------
13294 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013297 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013298 sizeof(wowlEnterReq),
13299 &pSendBuffer, &usDataOffset, &usSendSize))||
13300 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13301 {
13302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13303 "Unable to get send buffer in Wowl enter req %x %x %x",
13304 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013307 }
13308
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013312 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013317 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013318 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013319 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013321 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013322 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13325
13326#ifdef WLAN_WAKEUP_EVENTS
13327 wowlEnterReq.ucWoWEAPIDRequestEnable =
13328 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13329
13330 wowlEnterReq.ucWoWEAPOL4WayEnable =
13331 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13332
13333 wowlEnterReq.ucWowNetScanOffloadMatch =
13334 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13335
13336 wowlEnterReq.ucWowGTKRekeyError =
13337 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13338
13339 wowlEnterReq.ucWoWBSSConnLoss =
13340 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13341#endif // WLAN_WAKEUP_EVENTS
13342
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013343 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13344
Jeff Johnson295189b2012-06-20 16:38:30 -070013345 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13346 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13347 sizeof(tSirMacAddr));
13348
Jeff Johnsone7245742012-09-05 17:12:55 -070013349 wpalMemoryCopy( pSendBuffer+usDataOffset,
13350 &wowlEnterReq,
13351 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013352
13353 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013355
13356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13360 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013361}/*WDI_ProcessWowlEnterReq*/
13362
13363/**
13364 @brief Process Wowl exit Request function (called when Main FSM
13365 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013366
13367 @param pWDICtx: pointer to the WLAN DAL context
13368 pEventData: pointer to the event information structure
13369
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 @see
13371 @return Result of the function call
13372*/
13373WDI_Status
13374WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013375(
Jeff Johnson295189b2012-06-20 16:38:30 -070013376 WDI_ControlBlockType* pWDICtx,
13377 WDI_EventInfoType* pEventData
13378)
13379{
13380 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013381 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013382 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013383 wpt_uint16 usDataOffset = 0;
13384 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013385 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13387
13388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013390 -------------------------------------------------------------------------*/
13391 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013392 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13394 {
13395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 }
13400
13401 /*-----------------------------------------------------------------------
13402 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013403 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013404 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013406 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013407 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013408 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013409 {
13410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13411 "Unable to get send buffer in Wowl Exit req %x %x",
13412 pEventData, wdiWowlExitCb);
13413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013415 }
13416
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013417 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13418
13419 wpalMemoryCopy( pSendBuffer+usDataOffset,
13420 &wowlExitparams,
13421 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013423 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013424 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013425 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13426 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013427}/*WDI_ProcessWowlExitReq*/
13428
13429/**
13430 @brief Process Configure Apps Cpu Wakeup State Request function
13431 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013432
13433 @param pWDICtx: pointer to the WLAN DAL context
13434 pEventData: pointer to the event information structure
13435
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 @see
13437 @return Result of the function call
13438*/
13439WDI_Status
13440WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013441(
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 WDI_ControlBlockType* pWDICtx,
13443 WDI_EventInfoType* pEventData
13444)
13445{
13446 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13447 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 wpt_uint16 usDataOffset = 0;
13450 wpt_uint16 usSendSize = 0;
13451 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13453
13454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 -------------------------------------------------------------------------*/
13457 if (( NULL == pEventData ) ||
13458 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13459 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13460 {
13461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 }
13466
13467 /*-----------------------------------------------------------------------
13468 Get message buffer
13469 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013470 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 sizeof(halCfgAppsCpuWakeupStateReqParams),
13472 &pSendBuffer, &usDataOffset, &usSendSize))||
13473 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13474 {
13475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13476 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13477 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 }
13481
Jeff Johnsone7245742012-09-05 17:12:55 -070013482 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013483 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13484
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 wpalMemoryCopy( pSendBuffer+usDataOffset,
13486 &halCfgAppsCpuWakeupStateReqParams,
13487 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013488
13489 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013491
13492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013493 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13496 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13497 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013498}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13499
13500#ifdef WLAN_FEATURE_VOWIFI_11R
13501/**
13502 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13503 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013504
13505 @param pWDICtx: pointer to the WLAN DAL context
13506 pEventData: pointer to the event information structure
13507
Jeff Johnson295189b2012-06-20 16:38:30 -070013508 @see
13509 @return Result of the function call
13510*/
13511WDI_Status
13512WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013513(
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 WDI_ControlBlockType* pWDICtx,
13515 WDI_EventInfoType* pEventData
13516)
13517{
13518 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13519 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013520 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013521 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013522 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 wpt_uint16 usDataOffset = 0;
13524 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013525 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013526 wpt_macAddr macBSSID;
13527 tAggrAddTsReq halAggrAddTsReq;
13528 int i;
13529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13530
13531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013533 -------------------------------------------------------------------------*/
13534 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13535 ( NULL == pEventData->pCBfnc ))
13536 {
13537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013538 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 }
13542 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13543 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13544 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13545 /*-------------------------------------------------------------------------
13546 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013547 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013548 -------------------------------------------------------------------------*/
13549 wpalMutexAcquire(&pWDICtx->wptMutex);
13550
13551 /*------------------------------------------------------------------------
13552 Find the BSS for which the request is made and identify WDI session
13553 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013554 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13555 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 &macBSSID))
13557 {
13558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13559 "This station does not exist in the WDI Station Table %d");
13560 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 }
13563
Jeff Johnsone7245742012-09-05 17:12:55 -070013564 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13565 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13568 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13569 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013570
13571 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013574
Jeff Johnson295189b2012-06-20 16:38:30 -070013575 /*------------------------------------------------------------------------
13576 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013577 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 ------------------------------------------------------------------------*/
13579 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13580 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13582 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13583 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013584
Jeff Johnsone7245742012-09-05 17:12:55 -070013585 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013586 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013587 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013588 }
13589
13590 wpalMutexRelease(&pWDICtx->wptMutex);
13591 /*-----------------------------------------------------------------------
13592 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013593 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013594 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013596 sizeof(tAggrAddTsParams),
13597 &pSendBuffer, &usDataOffset, &usSendSize))||
13598 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13599 {
13600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13601 "Unable to get send buffer in set bss key req %x %x %x",
13602 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013605 }
13606
Jeff Johnsone7245742012-09-05 17:12:55 -070013607 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013609 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013610 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13611
13612 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13613 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013616 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013617 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013618 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13620 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13623 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013624 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013625 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13626 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013627 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13629 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13632 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013633 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013634 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13635 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013636 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013637 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13638 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13641 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013644 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013646
13647
13648 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013650 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013651 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013652 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013653 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013654 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013655 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013656 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013660 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013661 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013664 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013666 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013667 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013669 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013671 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013672 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013673 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013674 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013675 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13678 }
13679
Jeff Johnsone7245742012-09-05 17:12:55 -070013680 wpalMemoryCopy( pSendBuffer+usDataOffset,
13681 &halAggrAddTsReq,
13682 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013683
13684 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013686
13687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013688 Send Add TS 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,
Jeff Johnson295189b2012-06-20 16:38:30 -070013691 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070013692 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013693}/*WDI_ProcessAggrAddTSpecReq*/
13694#endif /* WLAN_FEATURE_VOWIFI_11R */
13695
13696/**
13697 @brief Process Shutdown Request function (called when Main FSM
13698 allows it)
13699
13700 @param pWDICtx: pointer to the WLAN DAL context
13701 pEventData: pointer to the event information structure
13702
13703 @see
13704 @return Result of the function call
13705*/
13706WDI_Status
13707WDI_ProcessShutdownReq
13708(
13709 WDI_ControlBlockType* pWDICtx,
13710 WDI_EventInfoType* pEventData
13711 )
13712{
13713 wpt_status wptStatus;
13714
13715
13716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13717
13718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 -------------------------------------------------------------------------*/
13721 if ( NULL == pEventData )
13722 {
13723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 WDI_ASSERT(0);
13726 return WDI_STATUS_E_FAILURE;
13727 }
13728
13729 wpalMutexAcquire(&pWDICtx->wptMutex);
13730
13731
13732 gWDIInitialized = eWLAN_PAL_FALSE;
13733 /*! TO DO: stop the data services */
13734 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13735 {
13736 /*Stop the STA Table !UT- check this logic again
13737 It is safer to do it here than on the response - because a stop is imminent*/
13738 WDI_STATableStop(pWDICtx);
13739
13740 /* Stop Transport Driver, DXE */
13741 WDTS_Stop(pWDICtx);
13742 }
13743
13744 /*Clear all pending request*/
13745 WDI_ClearPendingRequests(pWDICtx);
13746 /* Close Data transport*/
13747 /* FTM mode does not open Data Path */
13748 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13749 {
13750 WDTS_Close(pWDICtx);
13751 }
13752 /*Close the STA Table !UT- check this logic again*/
13753 WDI_STATableClose(pWDICtx);
13754 /*close the PAL */
13755 wptStatus = wpalClose(pWDICtx->pPALContext);
13756 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13757 {
13758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13759 "Failed to wpal Close %d", wptStatus);
13760 WDI_ASSERT(0);
13761 }
13762
13763 /*Transition back to init state*/
13764 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
13765
13766 wpalMutexRelease(&pWDICtx->wptMutex);
13767
13768 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070013770
13771
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013773}/*WDI_ProcessShutdownReq*/
13774
13775/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070013777========================================================================*/
13778
13779/**
13780 @brief Process Start Response function (called when a response
13781 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013782
13783 @param pWDICtx: pointer to the WLAN DAL context
13784 pEventData: pointer to the event information structure
13785
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 @see
13787 @return Result of the function call
13788*/
13789WDI_Status
13790WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013791(
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 WDI_ControlBlockType* pWDICtx,
13793 WDI_EventInfoType* pEventData
13794)
13795{
13796 WDI_StartRspParamsType wdiRspParams;
13797 WDI_StartRspCb wdiStartRspCb = NULL;
13798
13799 tHalMacStartRspParams* startRspParams;
13800
13801#ifndef HAL_SELF_STA_PER_BSS
13802 WDI_AddStaParams wdiAddSTAParam = {0};
13803#endif
13804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13805
Jeff Johnsone7245742012-09-05 17:12:55 -070013806 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013809 -------------------------------------------------------------------------*/
13810 if (( NULL == pEventData ) ||
13811 ( NULL == pEventData->pEventData) ||
13812 ( NULL == wdiStartRspCb ))
13813 {
13814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013815 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 }
13819
13820 /*-------------------------------------------------------------------------
13821 Extract response and send it to UMAC
13822 -------------------------------------------------------------------------*/
13823 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
13824 {
13825 // not enough data was received
13826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13827 "Invalid response length in Start Resp Expect %x Rcvd %x",
13828 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
13829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013831 }
13832
13833 /*-------------------------------------------------------------------------
13834 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013835 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 -------------------------------------------------------------------------*/
13837 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
13838
13839 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
13840 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
13841 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
13842 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
13843 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
13844 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
13845 wdiRspParams.wlanReportedVersion.major =
13846 startRspParams->wcnssWlanVersion.major;
13847 wdiRspParams.wlanReportedVersion.minor =
13848 startRspParams->wcnssWlanVersion.minor;
13849 wdiRspParams.wlanReportedVersion.version =
13850 startRspParams->wcnssWlanVersion.version;
13851 wdiRspParams.wlanReportedVersion.revision =
13852 startRspParams->wcnssWlanVersion.revision;
13853 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
13854 startRspParams->wcnssCrmVersionString,
13855 sizeof(wdiRspParams.wcnssSoftwareVersion));
13856 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
13857 startRspParams->wcnssWlanVersionString,
13858 sizeof(wdiRspParams.wcnssHardwareVersion));
13859 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
13860
Pratik Bhalgatd4404592012-11-22 17:49:14 +053013861 /*Save the HAL Version*/
13862 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
13863
Jeff Johnson295189b2012-06-20 16:38:30 -070013864 wpalMutexAcquire(&pWDICtx->wptMutex);
13865 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
13866 {
13867 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
13868
13869 /*Cache the start response for further use*/
13870 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070013871 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013872 sizeof(pWDICtx->wdiCachedStartRspParams));
13873
13874 }
13875 else
13876 {
13877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13878 "Failed to start device with status %s(%d)",
13879 WDI_getHALStatusMsgString(startRspParams->status),
13880 startRspParams->status);
13881
13882 /*Set the expected state transition to stopped - because the start has
13883 failed*/
13884 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13885
13886 wpalMutexRelease(&pWDICtx->wptMutex);
13887
13888 /*Notify UMAC*/
13889 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070013890
Jeff Johnson295189b2012-06-20 16:38:30 -070013891 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
13892
13893 /*Although the response is an error - it was processed by our function
13894 so as far as the caller is concerned this is a succesful reponse processing*/
13895 return WDI_STATUS_SUCCESS;
13896 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013897
Jeff Johnson295189b2012-06-20 16:38:30 -070013898 wpalMutexRelease(&pWDICtx->wptMutex);
13899
13900 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
13901 {
13902 /* FTM mode does not need to execute below */
13903 /* Notify UMAC */
13904 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13905 return WDI_STATUS_SUCCESS;
13906 }
13907
13908 /* START the Data transport */
13909 WDTS_startTransport(pWDICtx);
13910
13911 /*Start the STA Table !- check this logic again*/
13912 WDI_STATableStart(pWDICtx);
13913
13914#ifndef HAL_SELF_STA_PER_BSS
13915 /* Store the Self STA Index */
13916 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
13917
13918 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
13919 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
13920 WDI_MAC_ADDR_LEN);
13921
13922 /* At this point add the self-STA */
13923
13924 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
13925 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
13926 /*! TO DO: wdiAddSTAParam.dpuSig */
13927 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
13928 /*! TO DO: wdiAddSTAParam.ucHTCapable */
13929 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
13930
13931 //all DPU indices are the same for self STA
13932 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
13933 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070013934 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
13936 WDI_MAC_ADDR_LEN);
13937 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
13938 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
13939
13940 /* Note: Since we don't get an explicit config STA request for self STA, we
13941 add the self STA upon receiving the Start response message. But the
13942 self STA entry in the table is deleted when WDI gets an explicit delete STA
13943 request */
13944 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
13945#endif
13946
13947 /*Notify UMAC*/
13948 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13949
Jeff Johnsone7245742012-09-05 17:12:55 -070013950 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013951}/*WDI_ProcessStartRsp*/
13952
13953
13954/**
13955 @brief Process Stop Response function (called when a response
13956 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013957
13958 @param pWDICtx: pointer to the WLAN DAL context
13959 pEventData: pointer to the event information structure
13960
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 @see
13962 @return Result of the function call
13963*/
13964WDI_Status
13965WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013966(
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 WDI_ControlBlockType* pWDICtx,
13968 WDI_EventInfoType* pEventData
13969)
13970{
13971 WDI_Status wdiStatus;
13972 WDI_StopRspCb wdiStopRspCb = NULL;
13973
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13976
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 -------------------------------------------------------------------------*/
13981 if (( NULL == pEventData ) ||
13982 ( NULL == pEventData->pEventData) ||
13983 ( NULL == wdiStopRspCb ))
13984 {
13985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013986 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 }
13990
13991 /*-------------------------------------------------------------------------
13992 Extract response and send it to UMAC
13993 -------------------------------------------------------------------------*/
13994 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
13995 {
13996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13997 "Invalid response length in Stop Resp %x %x",
13998 pEventData->uEventDataSize);
13999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014001 }
14002
14003 /*-------------------------------------------------------------------------
14004 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014005 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014006 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14008 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 sizeof(halMacStopRspMsg.stopRspParams));
14010
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014012
14013 wpalMutexAcquire(&pWDICtx->wptMutex);
14014
14015 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014016 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014017 --------------------------------------------------------------------------*/
14018 if ( WDI_STATUS_SUCCESS != wdiStatus )
14019 {
14020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14021 "Failed to stop the device with status %s (%d)",
14022 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14023 halMacStopRspMsg.stopRspParams.status);
14024
Jeff Johnsone7245742012-09-05 17:12:55 -070014025 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14026
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014030
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14032
14033 /*Transition now as WDI may get preempted imediately after it sends
14034 up the Stop Response and it will not get to process the state transition
14035 from Main Rsp function*/
14036 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14037 wpalMutexRelease(&pWDICtx->wptMutex);
14038
14039 /*! TO DO: - STOP the Data transport */
14040
14041 /*Notify UMAC*/
14042 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14043
Jeff Johnsone7245742012-09-05 17:12:55 -070014044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014045}/*WDI_ProcessStopRsp*/
14046
14047/**
14048 @brief Process Close Rsp function (called when a response
14049 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014050
14051 @param pWDICtx: pointer to the WLAN DAL context
14052 pEventData: pointer to the event information structure
14053
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 @see
14055 @return Result of the function call
14056*/
14057WDI_Status
14058WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014059(
Jeff Johnson295189b2012-06-20 16:38:30 -070014060 WDI_ControlBlockType* pWDICtx,
14061 WDI_EventInfoType* pEventData
14062)
14063{
14064 /*There is no close response comming from HAL - function just kept for
14065 simmetry */
14066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014068}/*WDI_ProcessCloseRsp*/
14069
14070
14071/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014072 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014073============================================================================*/
14074
14075/**
14076 @brief Process Init Scan Rsp function (called when a response
14077 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014078
14079 @param pWDICtx: pointer to the WLAN DAL context
14080 pEventData: pointer to the event information structure
14081
Jeff Johnson295189b2012-06-20 16:38:30 -070014082 @see
14083 @return Result of the function call
14084*/
14085WDI_Status
14086WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014087(
Jeff Johnson295189b2012-06-20 16:38:30 -070014088 WDI_ControlBlockType* pWDICtx,
14089 WDI_EventInfoType* pEventData
14090)
14091{
14092 WDI_Status wdiStatus;
14093 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014094 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014095 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14097
14098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014099 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 -------------------------------------------------------------------------*/
14101 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14102 ( NULL == pEventData->pEventData))
14103 {
14104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014108 }
14109
14110 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14111 if( NULL == wdiInitScanRspCb)
14112 {
14113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014114 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014117 }
14118
14119 /*-------------------------------------------------------------------------
14120 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014121 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14124 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014125 sizeof(halInitScanRspMsg.initScanRspParams));
14126
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014128
14129 if ( pWDICtx->bInBmps )
14130 {
14131 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014132 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14133 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14135 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14136 WDI_ASSERT(0);
14137 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 }
14139
14140 /*Notify UMAC*/
14141 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14142
Jeff Johnsone7245742012-09-05 17:12:55 -070014143 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014144}/*WDI_ProcessInitScanRsp*/
14145
14146
14147/**
14148 @brief Process Start Scan Rsp function (called when a response
14149 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014150
14151 @param pWDICtx: pointer to the WLAN DAL context
14152 pEventData: pointer to the event information structure
14153
Jeff Johnson295189b2012-06-20 16:38:30 -070014154 @see
14155 @return Result of the function call
14156*/
14157WDI_Status
14158WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014159(
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 WDI_ControlBlockType* pWDICtx,
14161 WDI_EventInfoType* pEventData
14162)
14163{
14164 WDI_StartScanRspParamsType wdiStartScanParams;
14165 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014166
14167 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14169
14170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 -------------------------------------------------------------------------*/
14173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14174 ( NULL == pEventData->pEventData))
14175 {
14176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014180 }
14181
14182 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14183 if( NULL == wdiStartScanRspCb)
14184 {
14185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014186 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014189 }
14190
14191 /*-------------------------------------------------------------------------
14192 Extract response and send it to UMAC
14193 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014194 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14195 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014196 sizeof(halStartScanRspMsg.startScanRspParams));
14197
14198 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14199 halStartScanRspMsg.startScanRspParams.status);
14200#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014201 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014203 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014204 halStartScanRspMsg.startScanRspParams.startTSF,
14205 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014206#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014207
14208 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14209 {
14210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14211 "Start scan failed with status %s (%d)",
14212 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14213 halStartScanRspMsg.startScanRspParams.status);
14214 /* send the status to UMAC, don't return from here*/
14215 }
14216
14217 /*Notify UMAC*/
14218 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14219
Jeff Johnsone7245742012-09-05 17:12:55 -070014220 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014221
14222}/*WDI_ProcessStartScanRsp*/
14223
14224
14225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014226 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014227 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014228
14229 @param pWDICtx: pointer to the WLAN DAL context
14230 pEventData: pointer to the event information structure
14231
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 @see
14233 @return Result of the function call
14234*/
14235WDI_Status
14236WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014237(
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 WDI_ControlBlockType* pWDICtx,
14239 WDI_EventInfoType* pEventData
14240)
14241{
14242 WDI_Status wdiStatus;
14243 tHalEndScanRspMsg halEndScanRspMsg;
14244 WDI_EndScanRspCb wdiEndScanRspCb;
14245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14246
14247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014248 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 -------------------------------------------------------------------------*/
14250 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14251 ( NULL == pEventData->pEventData))
14252 {
14253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014254 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014255 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 }
14258
14259 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14260
14261 /*-------------------------------------------------------------------------
14262 Extract response and send it to UMAC
14263 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014264 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14265 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 sizeof(halEndScanRspMsg.endScanRspParams));
14267
Jeff Johnsone7245742012-09-05 17:12:55 -070014268 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014269
14270 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14271 {
14272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14273 "End Scan failed with status %s (%d )",
14274 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14275 halEndScanRspMsg.endScanRspParams.status);
14276 /* send the status to UMAC, don't return from here*/
14277 }
14278
14279 /*Notify UMAC*/
14280 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14281
Jeff Johnsone7245742012-09-05 17:12:55 -070014282 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014283}/*WDI_ProcessEndScanRsp*/
14284
14285
14286/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014287 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014288 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014289
14290 @param pWDICtx: pointer to the WLAN DAL context
14291 pEventData: pointer to the event information structure
14292
Jeff Johnson295189b2012-06-20 16:38:30 -070014293 @see
14294 @return Result of the function call
14295*/
14296WDI_Status
14297WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014298(
Jeff Johnson295189b2012-06-20 16:38:30 -070014299 WDI_ControlBlockType* pWDICtx,
14300 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014301)
Jeff Johnson295189b2012-06-20 16:38:30 -070014302{
14303 WDI_Status wdiStatus;
14304 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014305
14306 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14308
14309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 -------------------------------------------------------------------------*/
14312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14313 ( NULL == pEventData->pEventData))
14314 {
14315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 }
14320
14321 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14322
14323 /*-------------------------------------------------------------------------
14324 Extract response and send it to UMAC
14325 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014326 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14327 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14329
Jeff Johnsone7245742012-09-05 17:12:55 -070014330 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014331
14332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014333 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014334 halFinishScanRspMsg.finishScanRspParams.status);
14335
14336 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14337 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14338 {
14339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14340 "Finish Scan failed with status %s (%d)",
14341 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14342 halFinishScanRspMsg.finishScanRspParams.status);
14343 /* send the status to UMAC, don't return from here*/
14344 }
14345
14346 /*Notify UMAC*/
14347 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14348
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014350}/*WDI_ProcessFinishScanRsp*/
14351
14352/**
14353 @brief Process Join Response function (called when a response
14354 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014355
14356 @param pWDICtx: pointer to the WLAN DAL context
14357 pEventData: pointer to the event information structure
14358
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 @see
14360 @return Result of the function call
14361*/
14362WDI_Status
14363WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014364(
Jeff Johnson295189b2012-06-20 16:38:30 -070014365 WDI_ControlBlockType* pWDICtx,
14366 WDI_EventInfoType* pEventData
14367)
14368{
14369 WDI_Status wdiStatus;
14370 WDI_JoinRspCb wdiJoinRspCb;
14371 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014372
14373 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14375
14376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 -------------------------------------------------------------------------*/
14379 if (( NULL == pWDICtx ) ||
14380 ( NULL == pWDICtx->pfncRspCB ) ||
14381 ( NULL == pEventData ) ||
14382 ( NULL == pEventData->pEventData))
14383 {
14384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 }
14389
14390 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14391
14392 /*-------------------------------------------------------------------------
14393 Extract response and send it to UMAC
14394 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014395 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14396 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014397 sizeof(halJoinRspMsg.joinRspParams));
14398
Jeff Johnsone7245742012-09-05 17:12:55 -070014399 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014400
14401 wpalMutexAcquire(&pWDICtx->wptMutex);
14402
14403 /*-----------------------------------------------------------------------
14404 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014406 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14409 {
14410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14412 "association no longer in progress %d - mysterious HAL response",
14413 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014414
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 }
14419
14420 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14421
14422 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 -----------------------------------------------------------------------*/
14425 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14426 {
14427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14428 "Join only allowed in Joining state - failure state is %d "
14429 "strange HAL response", pBSSSes->wdiAssocState);
14430
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14432
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014435 }
14436
14437
14438 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 -----------------------------------------------------------------------*/
14441 if ( WDI_STATUS_SUCCESS != wdiStatus )
14442 {
14443 /*Association was failed by HAL - remove session*/
14444 WDI_DeleteSession(pWDICtx, pBSSSes);
14445
14446 /*Association no longer in progress */
14447 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14448
14449 /*Association no longer in progress - prepare pending assoc for processing*/
14450 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014451
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 }
14453 else
14454 {
14455 /*Transition to state Joining - this may be redundant as we are supposed
14456 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 }
14459
14460 wpalMutexRelease(&pWDICtx->wptMutex);
14461
14462 /*Notify UMAC*/
14463 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14464
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014466}/*WDI_ProcessJoinRsp*/
14467
14468
14469/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014470 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014472
14473 @param pWDICtx: pointer to the WLAN DAL context
14474 pEventData: pointer to the event information structure
14475
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 @see
14477 @return Result of the function call
14478*/
14479WDI_Status
14480WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014481(
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 WDI_ControlBlockType* pWDICtx,
14483 WDI_EventInfoType* pEventData
14484)
14485{
14486 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14487 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 WDI_BSSSessionType* pBSSSes = NULL;
14490
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14493 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014494
Jeff Johnson295189b2012-06-20 16:38:30 -070014495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14496
14497 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014498 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014499 -------------------------------------------------------------------------*/
14500 if (( NULL == pEventData ) ||
14501 ( NULL == pEventData->pEventData))
14502 {
14503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014504 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 }
14508
14509 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14510
14511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014512 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014514 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14515 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014516 sizeof(halConfigBssRspMsg.configBssRspParams));
14517
14518 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14519 halConfigBssRspMsg.configBssRspParams.status);
14520 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14521 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014522 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014523 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14524 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014525
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014527
14528 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014530
14531 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014533
Jeff Johnson295189b2012-06-20 16:38:30 -070014534 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014535
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014537 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014538 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14539 #endif
14540 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14541 halConfigBssRspMsg.configBssRspParams.staMac,
14542 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014543
Jeff Johnson295189b2012-06-20 16:38:30 -070014544 wpalMutexAcquire(&pWDICtx->wptMutex);
14545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014546 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014547 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014548 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14549 wdiConfigBSSParams.macBSSID,
14550 &pBSSSes);
14551
Jeff Johnson295189b2012-06-20 16:38:30 -070014552 /*-----------------------------------------------------------------------
14553 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014554 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 -----------------------------------------------------------------------*/
14556 if ( NULL == pBSSSes )
14557 {
14558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14559 "Association sequence for this BSS does not yet exist "
14560 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014561
14562 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14563
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014565 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014566 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014567
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 /*Save data for this BSS*/
14569 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14570 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014571 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014575 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014577 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014578 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014579 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14581 pBSSSes->bcastStaIdx =
14582 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014583
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014585
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 /*-------------------------------------------------------------------------
14587 Add Peer STA
14588 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14591 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014592
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 wdiAddSTAParam.ucHTCapable =
14597 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14598 wdiAddSTAParam.ucStaType =
14599 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14600
Jeff Johnson295189b2012-06-20 16:38:30 -070014601 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014602 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14603 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014605
14606 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14607 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14608 WDI_MAC_ADDR_LEN);
14609
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014612 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014613 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014615 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014619 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014620 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014621 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014622 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014623
Jeff Johnson295189b2012-06-20 16:38:30 -070014624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14625 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014626
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14628 /*-------------------------------------------------------------------------
14629 Add Broadcast STA only in AP mode
14630 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 WDI_BSS_OPERATIONAL_MODE_AP )
14633 {
14634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14635 "Add BCAST STA to table for index: %d",
14636 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014637
14638 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014639 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014640
Jeff Johnson295189b2012-06-20 16:38:30 -070014641 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14642 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14643 }
14644 wpalMutexRelease(&pWDICtx->wptMutex);
14645 }
14646 else
14647 {
14648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14649 "Config BSS RSP failed with status : %s(%d)",
14650 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014651 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014652 halConfigBssRspMsg.configBssRspParams.status);
14653
Jeff Johnsone7245742012-09-05 17:12:55 -070014654
Jeff Johnson295189b2012-06-20 16:38:30 -070014655 /*Association was failed by HAL - remove session*/
14656 WDI_DeleteSession(pWDICtx, pBSSSes);
14657
14658 /*Association no longer in progress */
14659 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14660
14661 /*Association no longer in progress - prepare pending assoc for processing*/
14662 WDI_DequeueAssocRequest(pWDICtx);
14663
14664 }
14665
14666 /*Notify UMAC*/
14667 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14668
Jeff Johnsone7245742012-09-05 17:12:55 -070014669 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014670}/*WDI_ProcessConfigBSSRsp*/
14671
14672
14673/**
14674 @brief Process Del BSS Response function (called when a response
14675 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014676
14677 @param pWDICtx: pointer to the WLAN DAL context
14678 pEventData: pointer to the event information structure
14679
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 @see
14681 @return Result of the function call
14682*/
14683WDI_Status
14684WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014685(
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 WDI_ControlBlockType* pWDICtx,
14687 WDI_EventInfoType* pEventData
14688)
14689{
14690 WDI_DelBSSRspParamsType wdiDelBSSParams;
14691 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 WDI_BSSSessionType* pBSSSes = NULL;
14694
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14697
14698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014699 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 -------------------------------------------------------------------------*/
14701 if (( NULL == pEventData ) ||
14702 ( NULL == pEventData->pEventData))
14703 {
14704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014705 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014707 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014708 }
14709
14710 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
14711
14712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
14716 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 sizeof(halDelBssRspMsg.deleteBssRspParams));
14718
14719
14720 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014722
14723 wpalMutexAcquire(&pWDICtx->wptMutex);
14724
14725 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014728 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
14729 halDelBssRspMsg.deleteBssRspParams.bssIdx,
14730 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014731
14732 /*-----------------------------------------------------------------------
14733 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 -----------------------------------------------------------------------*/
14736 if ( NULL == pBSSSes )
14737 {
14738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14739 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014740 "association no longer in progress - mysterious HAL response");
14741
14742 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14743
14744 wpalMutexRelease(&pWDICtx->wptMutex);
14745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014747
14748 /*Extract BSSID for the response to UMAC*/
14749 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
14750 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
14751
14752 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
14753
14754 /*-----------------------------------------------------------------------
14755 The current session will be deleted
14756 -----------------------------------------------------------------------*/
14757 WDI_DeleteSession(pWDICtx, pBSSSes);
14758
14759
14760 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
14761 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070014762 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014763 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014764 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014765
14766 /* Delete the STA's in this BSS */
14767 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
14768
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 wpalMutexRelease(&pWDICtx->wptMutex);
14770
14771 /*Notify UMAC*/
14772 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
14773
Jeff Johnsone7245742012-09-05 17:12:55 -070014774 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014775}/*WDI_ProcessDelBSSRsp*/
14776
14777/**
14778 @brief Process Post Assoc Rsp function (called when a response
14779 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014780
14781 @param pWDICtx: pointer to the WLAN DAL context
14782 pEventData: pointer to the event information structure
14783
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 @see
14785 @return Result of the function call
14786*/
14787WDI_Status
14788WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014789(
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 WDI_ControlBlockType* pWDICtx,
14791 WDI_EventInfoType* pEventData
14792)
14793{
14794 WDI_PostAssocRspParamsType wdiPostAssocParams;
14795 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14800
14801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 -------------------------------------------------------------------------*/
14804 if (( NULL == pEventData ) ||
14805 ( NULL == pEventData->pEventData))
14806 {
14807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 }
14812
14813 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
14814
14815 /*-------------------------------------------------------------------------
14816 Extract response and send it to UMAC
14817 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
14819 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014820 sizeof(halPostAssocRspMsg.postAssocRspParams));
14821
14822 /*Extract the Post Assoc STA Params */
14823
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014826 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070014828 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14830
Jeff Johnsone7245742012-09-05 17:12:55 -070014831 wdiPostAssocParams.wdiStatus =
14832 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014833
14834 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14835 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014836 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
14837 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 WDI_MAC_ADDR_LEN);
14839
14840 /* Extract Post Assoc BSS Params */
14841
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
14843 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
14844 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014845
14846 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14847 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
14850 .macSTA, WDI_MAC_ADDR_LEN);
14851
Jeff Johnsone7245742012-09-05 17:12:55 -070014852 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14854
Jeff Johnsone7245742012-09-05 17:12:55 -070014855 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014856 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
14857
14858 wdiPostAssocParams.bssParams.ucBSSIdx =
14859 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14860
Jeff Johnsone7245742012-09-05 17:12:55 -070014861 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014862 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
14863
14864 wpalMutexAcquire(&pWDICtx->wptMutex);
14865
14866 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014867 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014868 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014869 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014870 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014872
14873 /*-----------------------------------------------------------------------
14874 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014875 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 -----------------------------------------------------------------------*/
14877 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014878 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14880 {
14881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14882 "Association sequence for this BSS does not yet exist or "
14883 "association no longer in progress - mysterious HAL response");
14884
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14886
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 }
14890
14891 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014892 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070014893 -----------------------------------------------------------------------*/
14894 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14895 {
14896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14897 "Post Assoc not allowed before JOIN - failing request "
14898 "strange HAL response");
14899
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14901
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 }
14905
14906 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 -----------------------------------------------------------------------*/
14909 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
14910 {
14911 /*Association was failed by HAL - remove session*/
14912 WDI_DeleteSession(pWDICtx, pBSSSes);
14913 }
14914 else
14915 {
14916 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014918
14919 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014924 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
14928
Jeff Johnsone7245742012-09-05 17:12:55 -070014929 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014930 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14931 }
14932
14933 /*Association no longer in progress */
14934 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14935
14936 /*Association no longer in progress - prepare pending assoc for processing*/
14937 WDI_DequeueAssocRequest(pWDICtx);
14938
14939 wpalMutexRelease(&pWDICtx->wptMutex);
14940
14941 /*Notify UMAC*/
14942 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
14943
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014945}/*WDI_ProcessPostAssocRsp*/
14946
14947/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014948 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070014949 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014950
14951 @param pWDICtx: pointer to the WLAN DAL context
14952 pEventData: pointer to the event information structure
14953
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 @see
14955 @return Result of the function call
14956*/
14957WDI_Status
14958WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014959(
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 WDI_ControlBlockType* pWDICtx,
14961 WDI_EventInfoType* pEventData
14962)
14963{
14964 WDI_DelSTARspParamsType wdiDelSTARsp;
14965 WDI_DelSTARspCb wdiDelSTARspCb;
14966 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14969
14970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 -------------------------------------------------------------------------*/
14973 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14974 ( NULL == pEventData->pEventData))
14975 {
14976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014980 }
14981
14982 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
14983
14984 /*-------------------------------------------------------------------------
14985 Extract response and send it to UMAC
14986 -------------------------------------------------------------------------*/
14987 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070014988 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014989 sizeof(halDelStaRspMsg.delStaRspParams));
14990
14991 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014992 wdiDelSTARsp.wdiStatus =
14993 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014994
14995 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
14996
14997 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
14998 if(staType == WDI_STA_ENTRY_SELF)
14999 {
15000 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15001
15002 /* At this point add the self-STA */
15003
15004 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15005 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15006 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15007
15008#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15009#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15010
15011 //all DPU indices are the same for self STA
15012 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15013 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15014 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15015 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15016 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15017 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015018
15019 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015020 }
15021 else
15022 {
15023 //Delete the station in the table
15024 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15025 }
15026
15027 /*Notify UMAC*/
15028 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15029
Jeff Johnsone7245742012-09-05 17:12:55 -070015030 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015031}/*WDI_ProcessDelSTARsp*/
15032
15033
15034/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015035 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015036==========================================================================*/
15037
15038/**
15039 @brief Process Set BSS Key Rsp function (called when a response
15040 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015041
15042 @param pWDICtx: pointer to the WLAN DAL context
15043 pEventData: pointer to the event information structure
15044
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 @see
15046 @return Result of the function call
15047*/
15048WDI_Status
15049WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015050(
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 WDI_ControlBlockType* pWDICtx,
15052 WDI_EventInfoType* pEventData
15053)
15054{
15055 WDI_Status wdiStatus;
15056 eHalStatus halStatus;
15057 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15059
15060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 -------------------------------------------------------------------------*/
15063 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15064 ( NULL == pEventData->pEventData))
15065 {
15066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015070 }
15071
15072 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15073
15074 /*-------------------------------------------------------------------------
15075 Extract response and send it to UMAC
15076 -------------------------------------------------------------------------*/
15077 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015079
15080 if ( eHAL_STATUS_SUCCESS != halStatus )
15081 {
15082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15083 "Set BSS Key failed with status %s (%d)",
15084 WDI_getHALStatusMsgString(halStatus),
15085 halStatus);
15086 /* send the status to UMAC, don't return from here*/
15087 }
15088
15089 /*Notify UMAC*/
15090 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15091
Jeff Johnsone7245742012-09-05 17:12:55 -070015092 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015093}/*WDI_ProcessSetBssKeyRsp*/
15094
15095/**
15096 @brief Process Remove BSS Key Rsp function (called when a response
15097 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015098
15099 @param pWDICtx: pointer to the WLAN DAL context
15100 pEventData: pointer to the event information structure
15101
Jeff Johnson295189b2012-06-20 16:38:30 -070015102 @see
15103 @return Result of the function call
15104*/
15105WDI_Status
15106WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015107(
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 WDI_ControlBlockType* pWDICtx,
15109 WDI_EventInfoType* pEventData
15110)
15111{
15112 WDI_Status wdiStatus;
15113 eHalStatus halStatus;
15114 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15116
15117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015118 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015119 -------------------------------------------------------------------------*/
15120 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15121 ( NULL == pEventData->pEventData))
15122 {
15123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015124 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015125 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015127 }
15128
15129 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15130
15131 /*-------------------------------------------------------------------------
15132 Extract response and send it to UMAC
15133 -------------------------------------------------------------------------*/
15134 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015136
15137 if ( eHAL_STATUS_SUCCESS != halStatus )
15138 {
15139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15140 "Remove BSS Key failed with status %s (%d )",
15141 WDI_getHALStatusMsgString(halStatus),
15142 halStatus);
15143 /* send the status to UMAC, don't return from here*/
15144 }
15145
15146 /*Notify UMAC*/
15147 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15148
Jeff Johnsone7245742012-09-05 17:12:55 -070015149 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015150}/*WDI_ProcessSetBssKeyRsp*/
15151
15152
15153/**
15154 @brief Process Set STA Key Rsp function (called when a response
15155 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015156
15157 @param pWDICtx: pointer to the WLAN DAL context
15158 pEventData: pointer to the event information structure
15159
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 @see
15161 @return Result of the function call
15162*/
15163WDI_Status
15164WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015165(
Jeff Johnson295189b2012-06-20 16:38:30 -070015166 WDI_ControlBlockType* pWDICtx,
15167 WDI_EventInfoType* pEventData
15168)
15169{
15170 WDI_Status wdiStatus;
15171 eHalStatus halStatus;
15172 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15174
15175 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015177 -------------------------------------------------------------------------*/
15178 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15179 ( NULL == pEventData->pEventData))
15180 {
15181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015182 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015185 }
15186
15187 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15188
15189 /*-------------------------------------------------------------------------
15190 Extract response and send it to UMAC
15191 -------------------------------------------------------------------------*/
15192 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015193 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015194
15195 if ( eHAL_STATUS_SUCCESS != halStatus )
15196 {
15197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15198 "Set STA Key failed with status %s (%d)",
15199 WDI_getHALStatusMsgString(halStatus),
15200 halStatus);
15201 /* send the status to UMAC, don't return from here*/
15202 }
15203
15204 /*Notify UMAC*/
15205 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15206
Jeff Johnsone7245742012-09-05 17:12:55 -070015207 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015208}/*WDI_ProcessSetSTAKeyRsp*/
15209
15210/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015213
15214 @param pWDICtx: pointer to the WLAN DAL context
15215 pEventData: pointer to the event information structure
15216
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 @see
15218 @return Result of the function call
15219*/
15220WDI_Status
15221WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015222(
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 WDI_ControlBlockType* pWDICtx,
15224 WDI_EventInfoType* pEventData
15225)
15226{
15227 WDI_Status wdiStatus;
15228 eHalStatus halStatus;
15229 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15231
15232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 -------------------------------------------------------------------------*/
15235 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15236 ( NULL == pEventData->pEventData))
15237 {
15238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 }
15243
15244 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15245
15246 /*-------------------------------------------------------------------------
15247 Extract response and send it to UMAC
15248 -------------------------------------------------------------------------*/
15249 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015250 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015251
15252 if ( eHAL_STATUS_SUCCESS != halStatus )
15253 {
15254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15255 "Remove STA Key failed with status %s (%d)",
15256 WDI_getHALStatusMsgString(halStatus),
15257 halStatus);
15258 /* send the status to UMAC, don't return from here*/
15259 }
15260
15261 /*Notify UMAC*/
15262 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15263
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015265}/*WDI_ProcessRemoveStaKeyRsp*/
15266
15267/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015270
15271 @param pWDICtx: pointer to the WLAN DAL context
15272 pEventData: pointer to the event information structure
15273
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 @see
15275 @return Result of the function call
15276*/
15277WDI_Status
15278WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015279(
Jeff Johnson295189b2012-06-20 16:38:30 -070015280 WDI_ControlBlockType* pWDICtx,
15281 WDI_EventInfoType* pEventData
15282)
15283{
15284 WDI_Status wdiStatus;
15285 eHalStatus halStatus;
15286 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15288
15289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 -------------------------------------------------------------------------*/
15292 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15293 ( NULL == pEventData->pEventData))
15294 {
15295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015299 }
15300
15301 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15302
15303 /*-------------------------------------------------------------------------
15304 Extract response and send it to UMAC
15305 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015306 wpalMemoryCopy( &halStatus,
15307 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 sizeof(halStatus));
15309
Jeff Johnsone7245742012-09-05 17:12:55 -070015310 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015311
15312 if ( eHAL_STATUS_SUCCESS != halStatus )
15313 {
15314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15315 "Set STA Key failed with status %s (%d)",
15316 WDI_getHALStatusMsgString(halStatus),
15317 halStatus);
15318 /* send the status to UMAC, don't return from here*/
15319 }
15320
15321 /*Notify UMAC*/
15322 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15323
Jeff Johnsone7245742012-09-05 17:12:55 -070015324 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015325}/*WDI_ProcessSetSTABcastKeyRsp*/
15326
15327/**
15328 @brief Process Remove STA Bcast Key Rsp function (called when a
15329 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015330
15331 @param pWDICtx: pointer to the WLAN DAL context
15332 pEventData: pointer to the event information structure
15333
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 @see
15335 @return Result of the function call
15336*/
15337WDI_Status
15338WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015339(
Jeff Johnson295189b2012-06-20 16:38:30 -070015340 WDI_ControlBlockType* pWDICtx,
15341 WDI_EventInfoType* pEventData
15342)
15343{
15344 WDI_Status wdiStatus;
15345 eHalStatus halStatus;
15346 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15348
15349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015351 -------------------------------------------------------------------------*/
15352 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15353 ( NULL == pEventData->pEventData))
15354 {
15355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015359 }
15360
15361 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15362
15363 /*-------------------------------------------------------------------------
15364 Extract response and send it to UMAC
15365 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 wpalMemoryCopy( &halStatus,
15367 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015368 sizeof(halStatus));
15369
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015371
15372 if ( eHAL_STATUS_SUCCESS != halStatus )
15373 {
15374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15375 "Remove STA Key failed with status %s (%d)",
15376 WDI_getHALStatusMsgString(halStatus),
15377 halStatus);
15378 /* send the status to UMAC, don't return from here*/
15379 }
15380
15381 /*Notify UMAC*/
15382 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15383
Jeff Johnsone7245742012-09-05 17:12:55 -070015384 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015385}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15386
15387
15388/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015390==========================================================================*/
15391
15392/**
15393 @brief Process Add TSpec Rsp function (called when a response
15394 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015395
15396 @param pWDICtx: pointer to the WLAN DAL context
15397 pEventData: pointer to the event information structure
15398
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 @see
15400 @return Result of the function call
15401*/
15402WDI_Status
15403WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015404(
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 WDI_ControlBlockType* pWDICtx,
15406 WDI_EventInfoType* pEventData
15407)
15408{
15409 WDI_Status wdiStatus;
15410 eHalStatus halStatus;
15411 WDI_AddTsRspCb wdiAddTsRspCb;
15412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15413
15414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015415 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 -------------------------------------------------------------------------*/
15417 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15418 ( NULL == pEventData->pEventData))
15419 {
15420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015421 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 }
15425
15426 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15427
15428 /*-------------------------------------------------------------------------
15429 Extract response and send it to UMAC
15430 -------------------------------------------------------------------------*/
15431 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015432 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015433
15434 /*Notify UMAC*/
15435 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15436
Jeff Johnsone7245742012-09-05 17:12:55 -070015437 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015438}/*WDI_ProcessAddTSpecRsp*/
15439
15440
15441/**
15442 @brief Process Del TSpec Rsp function (called when a response
15443 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015444
15445 @param pWDICtx: pointer to the WLAN DAL context
15446 pEventData: pointer to the event information structure
15447
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 @see
15449 @return Result of the function call
15450*/
15451WDI_Status
15452WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015453(
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 WDI_ControlBlockType* pWDICtx,
15455 WDI_EventInfoType* pEventData
15456)
15457{
15458 WDI_Status wdiStatus;
15459 eHalStatus halStatus;
15460 WDI_DelTsRspCb wdiDelTsRspCb;
15461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15462
15463 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015465 -------------------------------------------------------------------------*/
15466 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15467 ( NULL == pEventData->pEventData))
15468 {
15469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 }
15474
15475 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15476
15477 /*-------------------------------------------------------------------------
15478 Extract response and send it to UMAC
15479 -------------------------------------------------------------------------*/
15480 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015481 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015482
15483 /*Notify UMAC*/
15484 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15485
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015487}/*WDI_ProcessDelTSpecRsp*/
15488
15489/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015490 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015491 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015492
15493 @param pWDICtx: pointer to the WLAN DAL context
15494 pEventData: pointer to the event information structure
15495
Jeff Johnson295189b2012-06-20 16:38:30 -070015496 @see
15497 @return Result of the function call
15498*/
15499WDI_Status
15500WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015501(
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 WDI_ControlBlockType* pWDICtx,
15503 WDI_EventInfoType* pEventData
15504)
15505{
15506 WDI_Status wdiStatus;
15507 eHalStatus halStatus;
15508 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15510
15511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 -------------------------------------------------------------------------*/
15514 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15515 ( NULL == pEventData->pEventData))
15516 {
15517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015521 }
15522
15523 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15524
15525 /*-------------------------------------------------------------------------
15526 Extract response and send it to UMAC
15527 -------------------------------------------------------------------------*/
15528 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015529 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015530
15531 /*Notify UMAC*/
15532 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15533
Jeff Johnsone7245742012-09-05 17:12:55 -070015534 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015535}/*WDI_ProcessUpdateEDCAParamsRsp*/
15536
15537
15538/**
15539 @brief Process Add BA Rsp function (called when a response
15540 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015541
15542 @param pWDICtx: pointer to the WLAN DAL context
15543 pEventData: pointer to the event information structure
15544
Jeff Johnson295189b2012-06-20 16:38:30 -070015545 @see
15546 @return Result of the function call
15547*/
15548WDI_Status
15549WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015550(
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 WDI_ControlBlockType* pWDICtx,
15552 WDI_EventInfoType* pEventData
15553)
15554{
15555 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15556
15557 tAddBASessionRspParams halBASessionRsp;
15558 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15559
Jeff Johnsone7245742012-09-05 17:12:55 -070015560
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15562
15563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 -------------------------------------------------------------------------*/
15566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15567 ( NULL == pEventData->pEventData))
15568 {
15569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015573 }
15574
15575 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15576
15577 /*-------------------------------------------------------------------------
15578 Extract response and send it to UMAC
15579 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015580 wpalMemoryCopy( &halBASessionRsp,
15581 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 sizeof(halBASessionRsp));
15583
15584 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15585
Jeff Johnson43971f52012-07-17 12:26:56 -070015586 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 {
15588 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15589 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15590 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15591 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15592 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15593 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15594 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15595 }
15596
15597 /*Notify UMAC*/
15598 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15599
Jeff Johnsone7245742012-09-05 17:12:55 -070015600 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015601}/*WDI_ProcessAddSessionBARsp*/
15602
15603
15604/**
15605 @brief Process Del BA Rsp function (called when a response
15606 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015607
15608 @param pWDICtx: pointer to the WLAN DAL context
15609 pEventData: pointer to the event information structure
15610
Jeff Johnson295189b2012-06-20 16:38:30 -070015611 @see
15612 @return Result of the function call
15613*/
15614WDI_Status
15615WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015616(
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 WDI_ControlBlockType* pWDICtx,
15618 WDI_EventInfoType* pEventData
15619)
15620{
15621 WDI_Status wdiStatus;
15622 eHalStatus halStatus;
15623 WDI_DelBARspCb wdiDelBARspCb;
15624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15625
15626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015628 -------------------------------------------------------------------------*/
15629 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15630 ( NULL == pEventData->pEventData))
15631 {
15632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 }
15637
15638 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15639
15640 /*-------------------------------------------------------------------------
15641 Extract response and send it to UMAC
15642 -------------------------------------------------------------------------*/
15643 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015644 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015645
15646 if ( eHAL_STATUS_SUCCESS == halStatus )
15647 {
15648 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15649 }
15650
15651 /*Notify UMAC*/
15652 wdiDelBARspCb( 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_ProcessDelBARsp*/
15656
15657#ifdef FEATURE_WLAN_CCX
15658/**
15659 @brief Process TSM Stats Rsp function (called when a response
15660 is being received over the bus from HAL)
15661
15662 @param pWDICtx: pointer to the WLAN DAL context
15663 pEventData: pointer to the event information structure
15664
15665 @see
15666 @return Result of the function call
15667*/
15668WDI_Status
15669WDI_ProcessTsmStatsRsp
15670(
15671 WDI_ControlBlockType* pWDICtx,
15672 WDI_EventInfoType* pEventData
15673)
15674{
15675 WDI_TsmRspCb wdiTsmStatsRspCb;
15676 tTsmStatsRspMsg halTsmStatsRspMsg;
15677 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15679
15680 /*-------------------------------------------------------------------------
15681 Sanity check
15682 -------------------------------------------------------------------------*/
15683 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15684 ( NULL == pEventData->pEventData))
15685 {
15686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 WDI_ASSERT(0);
15689 return WDI_STATUS_E_FAILURE;
15690 }
15691
15692 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
15693
15694 /*-------------------------------------------------------------------------
15695 Unpack HAL Response Message - the header was already extracted by the
15696 main Response Handling procedure
15697 -------------------------------------------------------------------------*/
15698 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
15699 pEventData->pEventData,
15700 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
15701
15702 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
15703 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
15704 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
15705 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
15706 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
15707 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
15708 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
15709 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
15710 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
15711 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
15712 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15713 halTsmStatsRspMsg.tsmStatsRspParams.status);
15714
15715 /*Notify UMAC*/
15716 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
15717
15718 return WDI_STATUS_SUCCESS;
15719}/*WDI_ProcessTsmStatsRsp*/
15720
15721#endif
15722
15723
15724
15725/**
15726 @brief Process Flush AC Rsp function (called when a response
15727 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015728
15729 @param pWDICtx: pointer to the WLAN DAL context
15730 pEventData: pointer to the event information structure
15731
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 @see
15733 @return Result of the function call
15734*/
15735WDI_Status
15736WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015737(
Jeff Johnson295189b2012-06-20 16:38:30 -070015738 WDI_ControlBlockType* pWDICtx,
15739 WDI_EventInfoType* pEventData
15740)
15741{
15742 WDI_Status wdiStatus;
15743 eHalStatus halStatus;
15744 WDI_FlushAcRspCb wdiFlushAcRspCb;
15745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15746
15747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015749 -------------------------------------------------------------------------*/
15750 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15751 ( NULL == pEventData->pEventData))
15752 {
15753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015757 }
15758
15759 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
15760
15761 /*-------------------------------------------------------------------------
15762 Extract response and send it to UMAC
15763 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 wpalMemoryCopy( &halStatus,
15765 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015766 sizeof(halStatus));
15767
Jeff Johnsone7245742012-09-05 17:12:55 -070015768 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015769
15770 /*Notify UMAC*/
15771 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15772
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015774}/*WDI_ProcessFlushAcRsp*/
15775
15776/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015779
15780 @param pWDICtx: pointer to the WLAN DAL context
15781 pEventData: pointer to the event information structure
15782
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 @see
15784 @return Result of the function call
15785*/
15786WDI_Status
15787WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015788(
Jeff Johnson295189b2012-06-20 16:38:30 -070015789 WDI_ControlBlockType* pWDICtx,
15790 WDI_EventInfoType* pEventData
15791)
15792{
15793 WDI_Status wdiStatus;
15794 eHalStatus halStatus;
15795 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
15796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15797
15798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 -------------------------------------------------------------------------*/
15801 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15802 ( NULL == pEventData->pEventData))
15803 {
15804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015805 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 }
15809
15810 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
15811
15812 /*-------------------------------------------------------------------------
15813 Extract response and send it to UMAC
15814 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015815 wpalMemoryCopy( &halStatus,
15816 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 sizeof(halStatus));
15818
Jeff Johnsone7245742012-09-05 17:12:55 -070015819 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015820
15821 /*Notify UMAC*/
15822 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15823
Jeff Johnsone7245742012-09-05 17:12:55 -070015824 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015825}/*WDI_ProcessBtAmpEventRsp*/
15826
15827
15828/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015829 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015830 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015831
15832 @param pWDICtx: pointer to the WLAN DAL context
15833 pEventData: pointer to the event information structure
15834
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 @see
15836 @return Result of the function call
15837*/
15838WDI_Status
15839WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015840(
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 WDI_ControlBlockType* pWDICtx,
15842 WDI_EventInfoType* pEventData
15843)
15844{
15845 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
15846 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
15847 tAddStaSelfRspMsg halAddStaSelfRsp;
15848 WDI_AddStaParams wdiAddSTAParam = {0};
15849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15850
15851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 -------------------------------------------------------------------------*/
15854 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15855 ( NULL == pEventData->pEventData))
15856 {
15857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015858 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 }
15862
Jeff Johnsone7245742012-09-05 17:12:55 -070015863 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015864 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
15865
15866 /*-------------------------------------------------------------------------
15867 Extract response and send it to UMAC
15868 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015869 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
15870 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
15872
15873
Jeff Johnsone7245742012-09-05 17:12:55 -070015874 wdiAddSTASelfParams.wdiStatus =
15875 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015876
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015879 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015882 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
15883
15884 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
15885 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
15886 WDI_MAC_ADDR_LEN);
15887
15888
15889#ifdef HAL_SELF_STA_PER_BSS
15890
15891 /* At this point add the self-STA */
15892
15893 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15894 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15895 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15896
15897 //all DPU indices are the same for self STA
15898
15899 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015900 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015901 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
15902 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
15903 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
15904 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
15905 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
15906
15907 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
15908 WDI_MAC_ADDR_LEN);
15909
15910 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15911 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
15912
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
15915 {
15916 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15917 }
15918#endif
15919
15920 /*Notify UMAC*/
15921 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
15922
Jeff Johnsone7245742012-09-05 17:12:55 -070015923 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015924}/*WDI_ProcessAddSTASelfRsp*/
15925
15926
15927
15928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015929 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015931
15932 @param pWDICtx: pointer to the WLAN DAL context
15933 pEventData: pointer to the event information structure
15934
Jeff Johnson295189b2012-06-20 16:38:30 -070015935 @see
15936 @return Result of the function call
15937*/
15938WDI_Status
15939WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015940(
Jeff Johnson295189b2012-06-20 16:38:30 -070015941 WDI_ControlBlockType* pWDICtx,
15942 WDI_EventInfoType* pEventData
15943)
15944{
15945 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
15946 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
15947 tDelStaSelfRspParams delStaSelfRspParams;
15948 wpt_uint8 ucStaIdx;
15949
15950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15951
15952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 -------------------------------------------------------------------------*/
15955 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15956 ( NULL == pEventData->pEventData))
15957 {
15958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015962 }
15963
15964 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
15965
15966 /*-------------------------------------------------------------------------
15967 Extract response and send it to UMAC
15968 -------------------------------------------------------------------------*/
15969
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015971 (wpt_uint8*)pEventData->pEventData,
15972 sizeof(tDelStaSelfRspParams));
15973
Jeff Johnsone7245742012-09-05 17:12:55 -070015974 wdiDelStaSelfRspParams.wdiStatus =
15975 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015976
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
15979 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
15980 {
15981 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070015982 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015983 delStaSelfRspParams.selfMacAddr,
15984 &ucStaIdx);
15985 if(WDI_STATUS_E_FAILURE == wdiStatus)
15986 {
15987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015988 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015991 }
15992 WDI_STATableDelSta(pWDICtx, ucStaIdx);
15993 }
15994
15995 /*Notify UMAC*/
15996 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
15997
15998 return WDI_STATUS_SUCCESS;
15999}
16000
Jeff Johnsone7245742012-09-05 17:12:55 -070016001#ifdef FEATURE_OEM_DATA_SUPPORT
16002/**
16003 @brief Start Oem Data Rsp function (called when a
16004 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016005
Jeff Johnsone7245742012-09-05 17:12:55 -070016006 @param pWDICtx: pointer to the WLAN DAL context
16007 pEventData: pointer to the event information structure
16008
16009 @see
16010 @return Result of the function call
16011*/
16012#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16013
16014WDI_Status
16015WDI_ProcessStartOemDataRsp
16016(
16017 WDI_ControlBlockType* pWDICtx,
16018 WDI_EventInfoType* pEventData
16019)
16020{
16021 WDI_oemDataRspCb wdiOemDataRspCb;
16022 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16023 tStartOemDataRspParams* halStartOemDataRspParams;
16024
16025 /*-------------------------------------------------------------------------
16026 Sanity check
16027 -------------------------------------------------------------------------*/
16028 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16029 ( NULL == pEventData->pEventData))
16030 {
16031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016032 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016033 WDI_ASSERT(0);
16034 return WDI_STATUS_E_FAILURE;
16035 }
16036
16037 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16038
16039 /*-------------------------------------------------------------------------
16040 Extract response and send it to UMAC
16041 -------------------------------------------------------------------------*/
16042 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16043
16044
16045 //It is the responsibility of the application code to check for failure
16046 //conditions!
16047
16048 //Allocate memory for WDI OEM DATA RSP structure
16049 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16050
16051 if(NULL == wdiOemDataRspParams)
16052 {
16053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16054 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16055 pWDICtx, pEventData, pEventData->pEventData);
16056 WDI_ASSERT(0);
16057 return WDI_STATUS_E_FAILURE;
16058 }
16059
16060 /* Populate WDI structure members */
16061 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16062
16063 /*Notify UMAC*/
16064 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16065
16066 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16067 wpalMemoryFree(wdiOemDataRspParams);
16068
16069 return WDI_STATUS_SUCCESS;
16070}/*WDI_PrcoessStartOemDataRsp*/
16071#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016072
16073/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016074 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016075===========================================================================*/
16076
16077/**
16078 @brief Process Channel Switch Rsp function (called when a response
16079 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016080
16081 @param pWDICtx: pointer to the WLAN DAL context
16082 pEventData: pointer to the event information structure
16083
Jeff Johnson295189b2012-06-20 16:38:30 -070016084 @see
16085 @return Result of the function call
16086*/
16087WDI_Status
16088WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016089(
Jeff Johnson295189b2012-06-20 16:38:30 -070016090 WDI_ControlBlockType* pWDICtx,
16091 WDI_EventInfoType* pEventData
16092)
16093{
16094 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16095 WDI_SwitchChRspCb wdiChSwitchRspCb;
16096 tSwitchChannelRspParams halSwitchChannelRsp;
16097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16098
16099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 -------------------------------------------------------------------------*/
16102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16103 ( NULL == pEventData->pEventData))
16104 {
16105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 }
16110
16111 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16112
16113 /*-------------------------------------------------------------------------
16114 Extract response and send it to UMAC
16115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016117 (wpt_uint8*)pEventData->pEventData,
16118 sizeof(halSwitchChannelRsp));
16119
Jeff Johnsone7245742012-09-05 17:12:55 -070016120 wdiSwitchChRsp.wdiStatus =
16121 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16123
16124#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016125 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016126#endif
16127
16128 /*Notify UMAC*/
16129 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16130
Jeff Johnsone7245742012-09-05 17:12:55 -070016131 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016132}/*WDI_ProcessChannelSwitchRsp*/
16133
16134
16135/**
16136 @brief Process Config STA Rsp function (called when a response
16137 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016138
16139 @param pWDICtx: pointer to the WLAN DAL context
16140 pEventData: pointer to the event information structure
16141
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 @see
16143 @return Result of the function call
16144*/
16145WDI_Status
16146WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016147(
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 WDI_ControlBlockType* pWDICtx,
16149 WDI_EventInfoType* pEventData
16150)
16151{
16152 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16153 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16154 WDI_AddStaParams wdiAddSTAParam;
16155
16156 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016157 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016158
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16161
16162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 -------------------------------------------------------------------------*/
16165 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16166 ( NULL == pEventData->pEventData))
16167 {
16168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 }
16173
16174 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16175
16176 /*-------------------------------------------------------------------------
16177 Extract response and send it to UMAC
16178 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016179 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16180 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 sizeof(halConfigStaRsp.configStaRspParams));
16182
16183
16184 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16185 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16186 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16187 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16188 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16189
16190 /* MAC Address of STA - take from cache as it does not come back in the
16191 response*/
16192 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016195
16196 wdiCfgSTAParams.wdiStatus =
16197 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016198
16199 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16200 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16201 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16202
16203 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16204 {
16205 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16206 {
16207 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016208 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016209 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16210 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016211
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016214 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 wdiAddSTAParam.ucHTCapable =
16216 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16217 wdiAddSTAParam.ucStaType =
16218 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16219
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016221 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16222 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016224
16225 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16226 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16227 WDI_MAC_ADDR_LEN);
16228
16229 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16230 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16231 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016232
16233 if ( NULL == pBSSSes )
16234 {
16235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16236 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016237
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016239 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 }
16241
16242 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016243 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016244 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016249 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016250 halConfigStaRsp.configStaRspParams.ucBcastSig;
16251 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16252 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016253
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16255 }
16256 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16257 {
16258 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16259
Jeff Johnsone7245742012-09-05 17:12:55 -070016260 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016261 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016267 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016268 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016269 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016270 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016272 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016273 halConfigStaRsp.configStaRspParams.ucUcastSig;
16274 }
16275 }
16276
16277 /*Notify UMAC*/
16278 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16279
Jeff Johnsone7245742012-09-05 17:12:55 -070016280 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016281}/*WDI_ProcessConfigStaRsp*/
16282
16283
16284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016285 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016286 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016287
16288 @param pWDICtx: pointer to the WLAN DAL context
16289 pEventData: pointer to the event information structure
16290
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 @see
16292 @return Result of the function call
16293*/
16294WDI_Status
16295WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016296(
Jeff Johnson295189b2012-06-20 16:38:30 -070016297 WDI_ControlBlockType* pWDICtx,
16298 WDI_EventInfoType* pEventData
16299)
16300{
16301 WDI_Status wdiStatus;
16302 eHalStatus halStatus;
16303 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16304
16305 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016306 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16308
16309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016311 -------------------------------------------------------------------------*/
16312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16313 ( NULL == pEventData->pEventData))
16314 {
16315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016319 }
16320
16321 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16322
16323 wpalMutexAcquire(&pWDICtx->wptMutex);
16324
16325 /*If the link is being transitioned to idle - the BSS is to be deleted
16326 - this type of ending a session is possible when UMAC has failed an
16327 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016328 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016329 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16330 {
16331 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016332 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016333 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016334 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16335 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16336 &pBSSSes);
16337
Jeff Johnson295189b2012-06-20 16:38:30 -070016338 /*-----------------------------------------------------------------------
16339 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016340 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016341 -----------------------------------------------------------------------*/
16342 if ( NULL == pBSSSes )
16343 {
16344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16345 "Set link response received outside association session");
16346 }
16347 else
16348 {
16349 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16350 will be del BSS coming after this to stop the beaconing & cleaning up the
16351 sessions*/
16352 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16353 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16354 {
16355 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016356 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016357 -----------------------------------------------------------------------*/
16358 WDI_DeleteSession(pWDICtx, pBSSSes);
16359
16360 /*-----------------------------------------------------------------------
16361 Check to see if this association is in progress - if so disable the
16362 flag as this has ended
16363 -----------------------------------------------------------------------*/
16364 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016365 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016366 /*Association no longer in progress */
16367 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16368 /*Association no longer in progress - prepare pending assoc for processing*/
16369 WDI_DequeueAssocRequest(pWDICtx);
16370 }
16371 }
16372 }
16373 }
16374 /* If the link state has been set to POST ASSOC, reset the "association in
16375 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016376 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016377 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16378 {
16379 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16380 WDI_DequeueAssocRequest(pWDICtx);
16381 }
16382
16383 wpalMutexRelease(&pWDICtx->wptMutex);
16384
16385 /*-------------------------------------------------------------------------
16386 Extract response and send it to UMAC
16387 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016388 wpalMemoryCopy( &halStatus,
16389 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 sizeof(halStatus));
16391
Jeff Johnsone7245742012-09-05 17:12:55 -070016392 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016393
16394 /*Notify UMAC*/
16395 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16396
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016398}/*WDI_ProcessSetLinkStateRsp*/
16399
16400/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016401 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016402 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016403
16404 @param pWDICtx: pointer to the WLAN DAL context
16405 pEventData: pointer to the event information structure
16406
Jeff Johnson295189b2012-06-20 16:38:30 -070016407 @see
16408 @return Result of the function call
16409*/
16410WDI_Status
16411WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016412(
Jeff Johnson295189b2012-06-20 16:38:30 -070016413 WDI_ControlBlockType* pWDICtx,
16414 WDI_EventInfoType* pEventData
16415)
16416{
16417 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16418 WDI_GetStatsRspCb wdiGetStatsRspCb;
16419 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016420
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16422
16423 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016424 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016425 -------------------------------------------------------------------------*/
16426 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16427 ( NULL == pEventData->pEventData))
16428 {
16429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016430 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016433 }
16434
16435 /*-------------------------------------------------------------------------
16436 Extract response and send it to UMAC
16437 -------------------------------------------------------------------------*/
16438 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16439
16440 /*allocate the stats response buffer */
16441 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16442 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16443 + sizeof(WDI_GetStatsRspParamsType));
16444
16445 if(NULL == wdiGetStatsRsp)
16446 {
16447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16448 "Failed to allocate memory in Get Stats Response %x %x %x ",
16449 pWDICtx, pEventData, pEventData->pEventData);
16450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016452 }
16453
16454 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16455
16456 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16457 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16458 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16459 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16460 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16461 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16462
16463 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16464 wpalMemoryCopy(wdiGetStatsRsp + 1,
16465 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16466 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16467
16468 /*Notify UMAC*/
16469 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16470
16471 wpalMemoryFree(wdiGetStatsRsp);
16472
Jeff Johnsone7245742012-09-05 17:12:55 -070016473 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016474}/*WDI_ProcessGetStatsRsp*/
16475
16476
16477/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016478 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016479 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016480
16481 @param pWDICtx: pointer to the WLAN DAL context
16482 pEventData: pointer to the event information structure
16483
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 @see
16485 @return Result of the function call
16486*/
16487WDI_Status
16488WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016489(
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 WDI_ControlBlockType* pWDICtx,
16491 WDI_EventInfoType* pEventData
16492)
16493{
16494 WDI_Status wdiStatus;
16495 eHalStatus halStatus;
16496 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16498
16499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016501 -------------------------------------------------------------------------*/
16502 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16503 ( NULL == pEventData->pEventData))
16504 {
16505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016506 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016509 }
16510
16511 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16512
16513 /*-------------------------------------------------------------------------
16514 Extract response and send it to UMAC
16515 -------------------------------------------------------------------------*/
16516 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016517 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016518
16519 /*Notify UMAC*/
16520 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16521
Jeff Johnsone7245742012-09-05 17:12:55 -070016522 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016523}/*WDI_ProcessUpdateCfgRsp*/
16524
16525
16526
16527/**
16528 @brief Process Add BA Rsp function (called when a response
16529 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016530
16531 @param pWDICtx: pointer to the WLAN DAL context
16532 pEventData: pointer to the event information structure
16533
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 @see
16535 @return Result of the function call
16536*/
16537WDI_Status
16538WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016539(
Jeff Johnson295189b2012-06-20 16:38:30 -070016540 WDI_ControlBlockType* pWDICtx,
16541 WDI_EventInfoType* pEventData
16542)
16543{
16544 WDI_AddBARspCb wdiAddBARspCb;
16545
16546 tAddBARspParams halAddBARsp;
16547 WDI_AddBARspinfoType wdiAddBARsp;
16548
16549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16550
16551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 -------------------------------------------------------------------------*/
16554 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16555 ( NULL == pEventData->pEventData))
16556 {
16557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 }
16562
16563 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16564
16565 /*-------------------------------------------------------------------------
16566 Extract response and send it to UMAC
16567 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 wpalMemoryCopy( &halAddBARsp,
16569 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 sizeof(halAddBARsp));
16571
16572 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16573
Jeff Johnson43971f52012-07-17 12:26:56 -070016574 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016575 {
16576 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16577 }
16578
16579 /*Notify UMAC*/
16580 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16581
Jeff Johnsone7245742012-09-05 17:12:55 -070016582 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016583}/*WDI_ProcessAddSessionBARsp*/
16584
16585/**
16586 @brief Process Add BA Rsp function (called when a response
16587 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016588
16589 @param pWDICtx: pointer to the WLAN DAL context
16590 pEventData: pointer to the event information structure
16591
Jeff Johnson295189b2012-06-20 16:38:30 -070016592 @see
16593 @return Result of the function call
16594*/
16595WDI_Status
16596WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016597(
Jeff Johnson295189b2012-06-20 16:38:30 -070016598 WDI_ControlBlockType* pWDICtx,
16599 WDI_EventInfoType* pEventData
16600)
16601{
16602 WDI_TriggerBARspCb wdiTriggerBARspCb;
16603
16604 tTriggerBARspParams* halTriggerBARsp;
16605 tTriggerBaRspCandidate* halBaCandidate;
16606 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16607 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16608 wpt_uint16 index;
16609 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016610
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16612
16613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016614 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016615 -------------------------------------------------------------------------*/
16616 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16617 ( NULL == pEventData->pEventData))
16618 {
16619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016620 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016623 }
16624
16625 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16626
16627 /*-------------------------------------------------------------------------
16628 Extract response and send it to UMAC
16629 -------------------------------------------------------------------------*/
16630 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
16631
Jeff Johnsone7245742012-09-05 17:12:55 -070016632 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
16633 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 sizeof(WDI_TriggerBARspCandidateType));
16635 if(NULL == wdiTriggerBARsp)
16636 {
16637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16638 "Failed to allocate memory in Trigger BA Response %x %x %x ",
16639 pWDICtx, pEventData, pEventData->pEventData);
16640 wpalMemoryFree(halTriggerBARsp);
16641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016643 }
16644
16645 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
16646
16647 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
16648 {
16649 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070016650 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016651 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
16652
16653 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
16654 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
16655
16656 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
16657 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
16660 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
16661 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016664 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070016665 halBaCandidate->baInfo[TidIndex].startingSeqNum;
16666 }
16667 wdiTriggerBARspCandidate++;
16668 halBaCandidate++;
16669 }
16670 }
16671
16672 /*Notify UMAC*/
16673 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
16674
16675 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070016676 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016677}/*WDI_ProcessAddSessionBARsp*/
16678
16679/**
16680 @brief Process Update Beacon Params Rsp function (called when a response
16681 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016682
16683 @param pWDICtx: pointer to the WLAN DAL context
16684 pEventData: pointer to the event information structure
16685
Jeff Johnson295189b2012-06-20 16:38:30 -070016686 @see
16687 @return Result of the function call
16688*/
16689WDI_Status
16690WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016691(
Jeff Johnson295189b2012-06-20 16:38:30 -070016692 WDI_ControlBlockType* pWDICtx,
16693 WDI_EventInfoType* pEventData
16694)
16695{
16696 WDI_Status wdiStatus;
16697 eHalStatus halStatus;
16698 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
16699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16700
16701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016703 -------------------------------------------------------------------------*/
16704 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16705 ( NULL == pEventData->pEventData))
16706 {
16707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016711 }
16712
16713 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
16714
16715 /*-------------------------------------------------------------------------
16716 Extract response and send it to UMAC
16717 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016718 wpalMemoryCopy( &halStatus,
16719 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 sizeof(halStatus));
16721
Jeff Johnsone7245742012-09-05 17:12:55 -070016722 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016723
16724 /*Notify UMAC*/
16725 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16726
Jeff Johnsone7245742012-09-05 17:12:55 -070016727 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016728}/*WDI_ProcessUpdateBeaconParamsRsp*/
16729
16730/**
16731 @brief Process Send Beacon template Rsp function (called when a response
16732 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016733
16734 @param pWDICtx: pointer to the WLAN DAL context
16735 pEventData: pointer to the event information structure
16736
Jeff Johnson295189b2012-06-20 16:38:30 -070016737 @see
16738 @return Result of the function call
16739*/
16740WDI_Status
16741WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016742(
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 WDI_ControlBlockType* pWDICtx,
16744 WDI_EventInfoType* pEventData
16745)
16746{
16747 WDI_Status wdiStatus;
16748 eHalStatus halStatus;
16749 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
16750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16751
16752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 -------------------------------------------------------------------------*/
16755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16756 ( NULL == pEventData->pEventData))
16757 {
16758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 }
16763
16764 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
16765
16766 /*-------------------------------------------------------------------------
16767 Extract response and send it to UMAC
16768 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 wpalMemoryCopy( &halStatus,
16770 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016771 sizeof(halStatus));
16772
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016774
16775 /*Notify UMAC*/
16776 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16777
Jeff Johnsone7245742012-09-05 17:12:55 -070016778 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016779}/*WDI_ProcessSendBeaconParamsRsp*/
16780
Jeff Johnsone7245742012-09-05 17:12:55 -070016781
Jeff Johnson295189b2012-06-20 16:38:30 -070016782/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016785
16786 @param pWDICtx: pointer to the WLAN DAL context
16787 pEventData: pointer to the event information structure
16788
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 @see
16790 @return Result of the function call
16791*/
16792WDI_Status
16793WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016794(
Jeff Johnson295189b2012-06-20 16:38:30 -070016795 WDI_ControlBlockType* pWDICtx,
16796 WDI_EventInfoType* pEventData
16797)
16798{
16799 WDI_Status wdiStatus;
16800 eHalStatus halStatus;
16801 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
16802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16803
16804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016806 -------------------------------------------------------------------------*/
16807 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16808 ( NULL == pEventData->pEventData))
16809 {
16810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016814 }
16815
16816 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
16817
16818 /*-------------------------------------------------------------------------
16819 Extract response and send it to UMAC
16820 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016821 wpalMemoryCopy( &halStatus,
16822 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016823 sizeof(halStatus));
16824
Jeff Johnsone7245742012-09-05 17:12:55 -070016825 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016826
16827 /*Notify UMAC*/
16828 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16829
Jeff Johnsone7245742012-09-05 17:12:55 -070016830 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016831}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
16832
16833 /**
16834 @brief Process Set Max Tx Power Rsp function (called when a response
16835 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016836
16837 @param pWDICtx: pointer to the WLAN DAL context
16838 pEventData: pointer to the event information structure
16839
Jeff Johnson295189b2012-06-20 16:38:30 -070016840 @see
16841 @return Result of the function call
16842*/
16843WDI_Status
16844WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016845(
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 WDI_ControlBlockType* pWDICtx,
16847 WDI_EventInfoType* pEventData
16848)
16849{
16850 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070016851
Jeff Johnson295189b2012-06-20 16:38:30 -070016852 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070016853
Jeff Johnson295189b2012-06-20 16:38:30 -070016854 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
16855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16856
16857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016858 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016859 -------------------------------------------------------------------------*/
16860 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16861 ( NULL == pEventData->pEventData))
16862 {
16863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 }
16868
16869 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
16870
16871 /*-------------------------------------------------------------------------
16872 Extract response and send it to UMAC
16873 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016874 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
16875 pEventData->pEventData,
16876 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016877
16878 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
16879 {
16880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16881 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070016882 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016884 }
16885
Jeff Johnsone7245742012-09-05 17:12:55 -070016886 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070016888 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070016889
16890 /*Notify UMAC*/
16891 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
16892
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016894}
16895
16896#ifdef WLAN_FEATURE_P2P
16897/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016898 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016900
16901 @param pWDICtx: pointer to the WLAN DAL context
16902 pEventData: pointer to the event information structure
16903
Jeff Johnson295189b2012-06-20 16:38:30 -070016904 @see
16905 @return Result of the function call
16906*/
16907WDI_Status
16908WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016909(
Jeff Johnson295189b2012-06-20 16:38:30 -070016910 WDI_ControlBlockType* pWDICtx,
16911 WDI_EventInfoType* pEventData
16912)
16913{
16914 WDI_Status wdiStatus;
16915 eHalStatus halStatus;
16916 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
16917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16918
16919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016921 -------------------------------------------------------------------------*/
16922 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16923 ( NULL == pEventData->pEventData))
16924 {
16925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 }
16930
16931 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
16932
16933 /*-------------------------------------------------------------------------
16934 Extract response and send it to UMAC
16935 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016936 wpalMemoryCopy( &halStatus,
16937 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016938 sizeof(halStatus));
16939
Jeff Johnsone7245742012-09-05 17:12:55 -070016940 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016941
16942 /*Notify UMAC*/
16943 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16944
Jeff Johnsone7245742012-09-05 17:12:55 -070016945 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016946}/*WDI_ProcessP2PGONOARsp*/
16947#endif
16948/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016949 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016950 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016951
16952 @param pWDICtx: pointer to the WLAN DAL context
16953 pEventData: pointer to the event information structure
16954
Jeff Johnson295189b2012-06-20 16:38:30 -070016955 @see
16956 @return Result of the function call
16957*/
16958WDI_Status
16959WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016960(
Jeff Johnson295189b2012-06-20 16:38:30 -070016961 WDI_ControlBlockType* pWDICtx,
16962 WDI_EventInfoType* pEventData
16963)
16964{
16965 WDI_Status wdiStatus;
16966 eHalStatus halStatus;
16967 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016968 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16970
16971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016973 -------------------------------------------------------------------------*/
16974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16975 ( NULL == pEventData->pEventData))
16976 {
16977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016981 }
16982
16983 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
16984
16985 /*-------------------------------------------------------------------------
16986 Extract response and send it to UMAC
16987 -------------------------------------------------------------------------*/
16988 halStatus = *((eHalStatus*)pEventData->pEventData);
16989
Jeff Johnsone7245742012-09-05 17:12:55 -070016990 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016991
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016992 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
16993 * Other module states are taken care by PMC.
16994 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
16995 */
16996 if (wdiStatus != WDI_STATUS_SUCCESS) {
16997
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070016998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16999 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17000 halStatus);
17001 /* Call Back is not required as we are putting the DXE in FULL
17002 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017003 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17004
17005 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17007 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17008 WDI_ASSERT(0);
17009 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017010 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017011 /*Notify UMAC*/
17012 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17013
Jeff Johnsone7245742012-09-05 17:12:55 -070017014 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017015}/*WDI_ProcessEnterImpsRsp*/
17016
17017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017018 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017019 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017020
17021 @param pWDICtx: pointer to the WLAN DAL context
17022 pEventData: pointer to the event information structure
17023
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 @see
17025 @return Result of the function call
17026*/
17027WDI_Status
17028WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017029(
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 WDI_ControlBlockType* pWDICtx,
17031 WDI_EventInfoType* pEventData
17032)
17033{
17034 WDI_Status wdiStatus;
17035 eHalStatus halStatus;
17036 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017037 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17039
17040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017042 -------------------------------------------------------------------------*/
17043 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17044 ( NULL == pEventData->pEventData))
17045 {
17046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017047 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017050 }
17051
17052 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17053
17054 /*-------------------------------------------------------------------------
17055 Extract response and send it to UMAC
17056 -------------------------------------------------------------------------*/
17057 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017058 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017059
17060 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017061 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17062 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17063 {
17064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17065 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17066 WDI_ASSERT(0);
17067 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 /*Notify UMAC*/
17069 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17070
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017072}/*WDI_ProcessExitImpsRsp*/
17073
17074/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017075 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017076 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017077
17078 @param pWDICtx: pointer to the WLAN DAL context
17079 pEventData: pointer to the event information structure
17080
Jeff Johnson295189b2012-06-20 16:38:30 -070017081 @see
17082 @return Result of the function call
17083*/
17084WDI_Status
17085WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017086(
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 WDI_ControlBlockType* pWDICtx,
17088 WDI_EventInfoType* pEventData
17089)
17090{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017091 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17092 tHalEnterBmpsRspParams halEnterBmpsRsp;
17093 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17094 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017095 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17097
17098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017099 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 -------------------------------------------------------------------------*/
17101 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17102 ( NULL == pEventData->pEventData))
17103 {
17104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 }
17109
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017111 Extract response and send it to UMAC
17112 -------------------------------------------------------------------------*/
17113 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17114 {
17115 wpalMemoryCopy( &halEnterBmpsRsp,
17116 pEventData->pEventData,
17117 sizeof(halEnterBmpsRsp));
17118
17119 //Used to print debug message
17120 halStatus = halEnterBmpsRsp.status;
17121 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17122 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17123 }
17124 else
17125 {
17126 halStatus = *((eHalStatus*)pEventData->pEventData);
17127 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17128 }
17129
17130 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017131
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017132 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17133 * Other module states are taken care by PMC.
17134 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17135 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017136 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17137 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017138
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017140 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17141 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017142 /* Call Back is not required as we are putting the DXE in FULL
17143 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017144 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17145 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17146 {
17147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17148 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17149 WDI_ASSERT(0);
17150 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017151 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017152 }
17153
Jeff Johnson295189b2012-06-20 16:38:30 -070017154 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017155 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017156
Jeff Johnsone7245742012-09-05 17:12:55 -070017157 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017158}/*WDI_ProcessEnterBmpsRsp*/
17159
17160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017161 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017162 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017163
17164 @param pWDICtx: pointer to the WLAN DAL context
17165 pEventData: pointer to the event information structure
17166
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 @see
17168 @return Result of the function call
17169*/
17170WDI_Status
17171WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017172(
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 WDI_ControlBlockType* pWDICtx,
17174 WDI_EventInfoType* pEventData
17175)
17176{
Jeff Johnson295189b2012-06-20 16:38:30 -070017177 eHalStatus halStatus;
17178 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017179 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017180 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17181 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17183
17184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017185 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017186 -------------------------------------------------------------------------*/
17187 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17188 ( NULL == pEventData->pEventData))
17189 {
17190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017194 }
17195
17196 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17197
17198 /*-------------------------------------------------------------------------
17199 Extract response and send it to UMAC
17200 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017201
17202 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17203 {
17204 wpalMemoryCopy( &halExitBmpsRsp,
17205 pEventData->pEventData,
17206 sizeof(halExitBmpsRsp));
17207
17208 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17209 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17210 }
17211 else
17212 {
17213 halStatus = *((eHalStatus*)pEventData->pEventData);
17214 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17215 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017216
17217 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017218 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17219 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17220 {
17221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17222 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17223 WDI_ASSERT(0);
17224 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017225 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17226
17227 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017228 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017229
Jeff Johnsone7245742012-09-05 17:12:55 -070017230 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017231}/*WDI_ProcessExitBmpsRsp*/
17232
17233/**
17234 @brief Process Enter UAPSD Rsp function (called when a response
17235 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017236
17237 @param pWDICtx: pointer to the WLAN DAL context
17238 pEventData: pointer to the event information structure
17239
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 @see
17241 @return Result of the function call
17242*/
17243WDI_Status
17244WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017245(
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 WDI_ControlBlockType* pWDICtx,
17247 WDI_EventInfoType* pEventData
17248)
17249{
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017251 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017252 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017253 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17254
Jeff Johnson295189b2012-06-20 16:38:30 -070017255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17256
17257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017259 -------------------------------------------------------------------------*/
17260 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17261 ( NULL == pEventData->pEventData))
17262 {
17263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017264 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017267 }
17268
17269 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17270
17271 /*-------------------------------------------------------------------------
17272 Extract response and send it to UMAC
17273 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017274 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17275 {
17276 wpalMemoryCopy( &halEnterUapsdRsp,
17277 pEventData->pEventData,
17278 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017279
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017280 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17281 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17282 }
17283 else
17284 {
17285 halStatus = *((eHalStatus*)pEventData->pEventData);
17286 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17287 }
17288
17289 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017290 {
17291 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17292 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17293 // the traffic to decide when to suspend the trigger frames when there is no traffic
17294 // activity on the trigger enabled ACs
17295 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17296
17297#ifdef WLAN_PERF
17298 // Increment the BD signature to refresh the fast path BD utilization
17299 pWDICtx->uBdSigSerialNum++;
17300#endif
17301 }
17302
17303 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017304 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017305
Jeff Johnsone7245742012-09-05 17:12:55 -070017306 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017307}/*WDI_ProcessEnterUapsdRsp*/
17308
17309/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017310 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017311 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_ProcessExitUapsdRsp
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{
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 eHalStatus halStatus;
17327 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017328 tHalExitUapsdRspParams halExitUapsdRsp;
17329 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17331
17332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 -------------------------------------------------------------------------*/
17335 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17336 ( NULL == pEventData->pEventData))
17337 {
17338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017339 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 }
17343
17344 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17345
17346 /*-------------------------------------------------------------------------
17347 Extract response and send it to UMAC
17348 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017349 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17350 {
17351 wpalMemoryCopy( &halExitUapsdRsp,
17352 pEventData->pEventData,
17353 sizeof(halExitUapsdRsp));
17354
17355 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17356 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17357 }
17358 else
17359 {
17360 halStatus = *((eHalStatus*)pEventData->pEventData);
17361 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17362 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17364 // directly instead of the FW WQ.
17365 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17366
17367#ifdef WLAN_PERF
17368 // Increment the BD signature to refresh the fast path BD utilization
17369 pWDICtx->uBdSigSerialNum++;
17370#endif
17371
17372 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017373 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017374
Jeff Johnsone7245742012-09-05 17:12:55 -070017375 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017376}/*WDI_ProcessExitUapsdRsp*/
17377
17378/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017381
17382 @param pWDICtx: pointer to the WLAN DAL context
17383 pEventData: pointer to the event information structure
17384
Jeff Johnson295189b2012-06-20 16:38:30 -070017385 @see
17386 @return Result of the function call
17387*/
17388WDI_Status
17389WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017390(
Jeff Johnson295189b2012-06-20 16:38:30 -070017391 WDI_ControlBlockType* pWDICtx,
17392 WDI_EventInfoType* pEventData
17393)
17394{
17395 WDI_Status wdiStatus;
17396 eHalStatus halStatus;
17397 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17399
17400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017401 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017402 -------------------------------------------------------------------------*/
17403 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17404 ( NULL == pEventData->pEventData))
17405 {
17406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017407 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017410 }
17411
17412 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17413
17414 /*-------------------------------------------------------------------------
17415 Extract response and send it to UMAC
17416 -------------------------------------------------------------------------*/
17417 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017418 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017419
17420 /*Notify UMAC*/
17421 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17422
Jeff Johnsone7245742012-09-05 17:12:55 -070017423 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017424}/*WDI_ProcessSetUapsdAcParamsRsp*/
17425
17426/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017427 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017428 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017429
17430 @param pWDICtx: pointer to the WLAN DAL context
17431 pEventData: pointer to the event information structure
17432
Jeff Johnson295189b2012-06-20 16:38:30 -070017433 @see
17434 @return Result of the function call
17435*/
17436WDI_Status
17437WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017438(
Jeff Johnson295189b2012-06-20 16:38:30 -070017439 WDI_ControlBlockType* pWDICtx,
17440 WDI_EventInfoType* pEventData
17441)
17442{
17443 WDI_Status wdiStatus;
17444 eHalStatus halStatus;
17445 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17447
17448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017450 -------------------------------------------------------------------------*/
17451 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17452 ( NULL == pEventData->pEventData))
17453 {
17454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017458 }
17459
17460 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17461
17462 /*-------------------------------------------------------------------------
17463 Extract response and send it to UMAC
17464 -------------------------------------------------------------------------*/
17465 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017466 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017467
17468 /*Notify UMAC*/
17469 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17470
Jeff Johnsone7245742012-09-05 17:12:55 -070017471 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017472}/*WDI_ProcessUpdateUapsdParamsRsp*/
17473
17474/**
17475 @brief Process Configure RXP filter Rsp function (called when a
17476 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017477
17478 @param pWDICtx: pointer to the WLAN DAL context
17479 pEventData: pointer to the event information structure
17480
Jeff Johnson295189b2012-06-20 16:38:30 -070017481 @see
17482 @return Result of the function call
17483*/
17484WDI_Status
17485WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017486(
Jeff Johnson295189b2012-06-20 16:38:30 -070017487 WDI_ControlBlockType* pWDICtx,
17488 WDI_EventInfoType* pEventData
17489)
17490{
17491 WDI_Status wdiStatus;
17492 eHalStatus halStatus;
17493 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17495
17496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017498 -------------------------------------------------------------------------*/
17499 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17500 ( NULL == pEventData->pEventData))
17501 {
17502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017506 }
17507
17508 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17509
17510 /*-------------------------------------------------------------------------
17511 Extract response and send it to UMAC
17512 -------------------------------------------------------------------------*/
17513 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017514 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017515
17516 /*Notify UMAC*/
17517 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17518
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017520}/*WDI_ProcessConfigureRxpFilterRsp*/
17521
17522/**
17523 @brief Process Set beacon filter Rsp function (called when a
17524 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017525
17526 @param pWDICtx: pointer to the WLAN DAL context
17527 pEventData: pointer to the event information structure
17528
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 @see
17530 @return Result of the function call
17531*/
17532WDI_Status
17533WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017534(
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 WDI_ControlBlockType* pWDICtx,
17536 WDI_EventInfoType* pEventData
17537)
17538{
17539 WDI_Status wdiStatus;
17540 eHalStatus halStatus;
17541 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17543
17544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 -------------------------------------------------------------------------*/
17547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17548 ( NULL == pEventData->pEventData))
17549 {
17550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017554 }
17555
17556 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17557
17558 /*-------------------------------------------------------------------------
17559 Extract response and send it to UMAC
17560 -------------------------------------------------------------------------*/
17561 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017562 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017563
17564 /*Notify UMAC*/
17565 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17566
Jeff Johnsone7245742012-09-05 17:12:55 -070017567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017568}/*WDI_ProcessSetBeaconFilterRsp*/
17569
17570/**
17571 @brief Process remove beacon filter Rsp function (called when a
17572 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017573
17574 @param pWDICtx: pointer to the WLAN DAL context
17575 pEventData: pointer to the event information structure
17576
Jeff Johnson295189b2012-06-20 16:38:30 -070017577 @see
17578 @return Result of the function call
17579*/
17580WDI_Status
17581WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017582(
Jeff Johnson295189b2012-06-20 16:38:30 -070017583 WDI_ControlBlockType* pWDICtx,
17584 WDI_EventInfoType* pEventData
17585)
17586{
17587 WDI_Status wdiStatus;
17588 eHalStatus halStatus;
17589 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
17590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17591
17592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017594 -------------------------------------------------------------------------*/
17595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17596 ( NULL == pEventData->pEventData))
17597 {
17598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017602 }
17603
17604 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
17605
17606 /*-------------------------------------------------------------------------
17607 Extract response and send it to UMAC
17608 -------------------------------------------------------------------------*/
17609 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017611
17612 /*Notify UMAC*/
17613 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17614
Jeff Johnsone7245742012-09-05 17:12:55 -070017615 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017616}/*WDI_ProcessRemBeaconFilterRsp*/
17617
17618/**
17619 @brief Process set RSSI thresholds Rsp function (called when a
17620 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017621
17622 @param pWDICtx: pointer to the WLAN DAL context
17623 pEventData: pointer to the event information structure
17624
Jeff Johnson295189b2012-06-20 16:38:30 -070017625 @see
17626 @return Result of the function call
17627*/
17628WDI_Status
17629WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017630(
Jeff Johnson295189b2012-06-20 16:38:30 -070017631 WDI_ControlBlockType* pWDICtx,
17632 WDI_EventInfoType* pEventData
17633)
17634{
17635 WDI_Status wdiStatus;
17636 eHalStatus halStatus;
17637 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
17638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17639
17640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017642 -------------------------------------------------------------------------*/
17643 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17644 ( NULL == pEventData->pEventData))
17645 {
17646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017650 }
17651
17652 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
17653
17654 /*-------------------------------------------------------------------------
17655 Extract response and send it to UMAC
17656 -------------------------------------------------------------------------*/
17657 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017658 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017659
17660 /*Notify UMAC*/
17661 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
17662
Jeff Johnsone7245742012-09-05 17:12:55 -070017663 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017664}/*WDI_ProcessSetRSSIThresoldsRsp*/
17665
17666/**
17667 @brief Process host offload Rsp function (called when a
17668 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017669
17670 @param pWDICtx: pointer to the WLAN DAL context
17671 pEventData: pointer to the event information structure
17672
Jeff Johnson295189b2012-06-20 16:38:30 -070017673 @see
17674 @return Result of the function call
17675*/
17676WDI_Status
17677WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017678(
Jeff Johnson295189b2012-06-20 16:38:30 -070017679 WDI_ControlBlockType* pWDICtx,
17680 WDI_EventInfoType* pEventData
17681)
17682{
17683 WDI_Status wdiStatus;
17684 eHalStatus halStatus;
17685 WDI_HostOffloadCb wdiHostOffloadCb;
17686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17687
17688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017690 -------------------------------------------------------------------------*/
17691 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17692 ( NULL == pEventData->pEventData))
17693 {
17694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017695 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017698 }
17699
17700 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
17701
17702 /*-------------------------------------------------------------------------
17703 Extract response and send it to UMAC
17704 -------------------------------------------------------------------------*/
17705 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017706 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017707
17708 /*Notify UMAC*/
17709 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
17710
Jeff Johnsone7245742012-09-05 17:12:55 -070017711 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017712}/*WDI_ProcessHostOffloadRsp*/
17713
17714/**
17715 @brief Process keep alive Rsp function (called when a
17716 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017717
17718 @param pWDICtx: pointer to the WLAN DAL context
17719 pEventData: pointer to the event information structure
17720
Jeff Johnson295189b2012-06-20 16:38:30 -070017721 @see
17722 @return Result of the function call
17723*/
17724WDI_Status
17725WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017726(
Jeff Johnson295189b2012-06-20 16:38:30 -070017727 WDI_ControlBlockType* pWDICtx,
17728 WDI_EventInfoType* pEventData
17729)
17730{
17731 WDI_Status wdiStatus;
17732 eHalStatus halStatus;
17733 WDI_KeepAliveCb wdiKeepAliveCb;
17734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17736 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
17737
17738
17739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017741 -------------------------------------------------------------------------*/
17742 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17743 ( NULL == pEventData->pEventData))
17744 {
17745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 }
17750
Jeff Johnsone7245742012-09-05 17:12:55 -070017751 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
17752
Jeff Johnson295189b2012-06-20 16:38:30 -070017753 /*-------------------------------------------------------------------------
17754 Extract response and send it to UMAC
17755 -------------------------------------------------------------------------*/
17756 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017757 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017758
17759 /*Notify UMAC*/
17760 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
17761
Jeff Johnsone7245742012-09-05 17:12:55 -070017762 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017763}/*WDI_ProcessKeepAliveRsp*/
17764
17765/**
17766 @brief Process wowl add ptrn Rsp function (called when a
17767 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017768
17769 @param pWDICtx: pointer to the WLAN DAL context
17770 pEventData: pointer to the event information structure
17771
Jeff Johnson295189b2012-06-20 16:38:30 -070017772 @see
17773 @return Result of the function call
17774*/
17775WDI_Status
17776WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017777(
Jeff Johnson295189b2012-06-20 16:38:30 -070017778 WDI_ControlBlockType* pWDICtx,
17779 WDI_EventInfoType* pEventData
17780)
17781{
Jeff Johnson295189b2012-06-20 16:38:30 -070017782 eHalStatus halStatus;
17783 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017784 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
17785 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
17786
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17788
17789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017791 -------------------------------------------------------------------------*/
17792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17793 ( NULL == pEventData->pEventData))
17794 {
17795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017799 }
17800
17801 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
17802
17803 /*-------------------------------------------------------------------------
17804 Extract response and send it to UMAC
17805 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017806 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17807 {
17808 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
17809 pEventData->pEventData,
17810 sizeof(halAddWowlBcastPtrRsp));
17811
17812 wdiWowlAddBcPtrRsp.wdiStatus =
17813 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
17814 }
17815 else
17816 {
17817 halStatus = *((eHalStatus*)pEventData->pEventData);
17818 wdiWowlAddBcPtrRsp.wdiStatus =
17819 WDI_HAL_2_WDI_STATUS(halStatus);
17820 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017821
17822 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017823 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017824
Jeff Johnsone7245742012-09-05 17:12:55 -070017825 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017826}/*WDI_ProcessWowlAddBcPtrnRsp*/
17827
17828/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017829 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017831
17832 @param pWDICtx: pointer to the WLAN DAL context
17833 pEventData: pointer to the event information structure
17834
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 @see
17836 @return Result of the function call
17837*/
17838WDI_Status
17839WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017840(
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 WDI_ControlBlockType* pWDICtx,
17842 WDI_EventInfoType* pEventData
17843)
17844{
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 eHalStatus halStatus;
17846 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017847 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
17848 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17850
17851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017852 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017853 -------------------------------------------------------------------------*/
17854 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17855 ( NULL == pEventData->pEventData))
17856 {
17857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017858 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017861 }
17862
17863 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
17864
17865 /*-------------------------------------------------------------------------
17866 Extract response and send it to UMAC
17867 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017868 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17869 {
17870 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
17871 pEventData->pEventData,
17872 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017873
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017874 wdiWowlDelBcstPtrRsp.wdiStatus =
17875 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
17876 }
17877 else
17878 {
17879 halStatus = *((eHalStatus*)pEventData->pEventData);
17880 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17881 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017882 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017883 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017884
Jeff Johnsone7245742012-09-05 17:12:55 -070017885 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017886}/*WDI_ProcessWowlDelBcPtrnRsp*/
17887
17888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017889 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017890 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017891
17892 @param pWDICtx: pointer to the WLAN DAL context
17893 pEventData: pointer to the event information structure
17894
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 @see
17896 @return Result of the function call
17897*/
17898WDI_Status
17899WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017900(
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 WDI_ControlBlockType* pWDICtx,
17902 WDI_EventInfoType* pEventData
17903)
17904{
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 eHalStatus halStatus;
17906 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017907 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
17908 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17910
17911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017912 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017913 -------------------------------------------------------------------------*/
17914 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17915 ( NULL == pEventData->pEventData))
17916 {
17917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 }
17922
17923 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
17924
17925 /*-------------------------------------------------------------------------
17926 Extract response and send it to UMAC
17927 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017928 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17929 {
17930 wpalMemoryCopy( &halEnterWowlRspParams,
17931 (wpt_uint8*)pEventData->pEventData,
17932 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017933
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017934 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
17935 wdiwowlEnterRsp.status =
17936 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
17937 }
17938 else
17939 {
17940 halStatus = *((eHalStatus*)pEventData->pEventData);
17941 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17942 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017943 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017944 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017945
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017947}/*WDI_ProcessWowlEnterRsp*/
17948
17949/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017950 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017952
17953 @param pWDICtx: pointer to the WLAN DAL context
17954 pEventData: pointer to the event information structure
17955
Jeff Johnson295189b2012-06-20 16:38:30 -070017956 @see
17957 @return Result of the function call
17958*/
17959WDI_Status
17960WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017961(
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 WDI_ControlBlockType* pWDICtx,
17963 WDI_EventInfoType* pEventData
17964)
17965{
Jeff Johnson295189b2012-06-20 16:38:30 -070017966 eHalStatus halStatus;
17967 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017968 tHalExitWowlRspParams halExitWowlRspParams;
17969 WDI_WowlExitRspParamsType wdiWowlExitRsp;
17970
Jeff Johnson295189b2012-06-20 16:38:30 -070017971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17972
17973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017974 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017975 -------------------------------------------------------------------------*/
17976 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17977 ( NULL == pEventData->pEventData))
17978 {
17979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017983 }
17984
17985 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
17986
17987 /*-------------------------------------------------------------------------
17988 Extract response and send it to UMAC
17989 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017990 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17991 {
17992 wpalMemoryCopy( &halExitWowlRspParams,
17993 pEventData->pEventData,
17994 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017995
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017996 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
17997 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
17998
17999 }
18000 else
18001 {
18002 halStatus = *((eHalStatus*)pEventData->pEventData);
18003 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18004 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018006 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018007
Jeff Johnsone7245742012-09-05 17:12:55 -070018008 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018009}/*WDI_ProcessWowlExitRsp*/
18010
18011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018012 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 (called when a response is being received over the bus
18014 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018015
18016 @param pWDICtx: pointer to the WLAN DAL context
18017 pEventData: pointer to the event information structure
18018
Jeff Johnson295189b2012-06-20 16:38:30 -070018019 @see
18020 @return Result of the function call
18021*/
18022WDI_Status
18023WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018024(
Jeff Johnson295189b2012-06-20 16:38:30 -070018025 WDI_ControlBlockType* pWDICtx,
18026 WDI_EventInfoType* pEventData
18027)
18028{
18029 WDI_Status wdiStatus;
18030 eHalStatus halStatus;
18031 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18033
18034 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018035 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018036 -------------------------------------------------------------------------*/
18037 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18038 ( NULL == pEventData->pEventData))
18039 {
18040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 }
18045
18046 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18047
18048 /*-------------------------------------------------------------------------
18049 Extract response and send it to UMAC
18050 -------------------------------------------------------------------------*/
18051 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018052 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018053
18054 /*Notify UMAC*/
18055 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18056
Jeff Johnsone7245742012-09-05 17:12:55 -070018057 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018058}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18059
18060
18061/**
18062 @brief Process Nv download(called when a response
18063 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018064
18065 @param pWDICtx: pointer to the WLAN DAL context
18066 pEventData: pointer to the event information structure
18067
Jeff Johnson295189b2012-06-20 16:38:30 -070018068 @see
18069 @return Result of the function call
18070*/
18071WDI_Status
18072WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018073(
Jeff Johnson295189b2012-06-20 16:38:30 -070018074 WDI_ControlBlockType* pWDICtx,
18075 WDI_EventInfoType* pEventData
18076)
18077{
18078
18079 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18080 tHalNvImgDownloadRspParams halNvDownloadRsp;
18081 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18082
18083 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018084 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018085 -------------------------------------------------------------------------*/
18086 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18087 ( NULL == pEventData->pEventData))
18088 {
18089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018093 }
18094
18095 /*-------------------------------------------------------------------------
18096 Extract response and send it to UMAC
18097 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018098 wpalMemoryCopy( &halNvDownloadRsp,
18099 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018100 sizeof(halNvDownloadRsp));
18101
18102 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18103
18104 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018105 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18106 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 {
18108 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018109 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018110 }
18111 else
18112 {
18113 /*Reset the Nv related global information in WDI context information */
18114 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18115 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18116 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18117 /*call WDA callback function for last fragment */
18118 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18119 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18120 }
18121
Jeff Johnsone7245742012-09-05 17:12:55 -070018122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018123}
18124#ifdef WLAN_FEATURE_VOWIFI_11R
18125/**
18126 @brief Process Add TSpec Rsp function (called when a response
18127 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018128
18129 @param pWDICtx: pointer to the WLAN DAL context
18130 pEventData: pointer to the event information structure
18131
Jeff Johnson295189b2012-06-20 16:38:30 -070018132 @see
18133 @return Result of the function call
18134*/
18135WDI_Status
18136WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018137(
Jeff Johnson295189b2012-06-20 16:38:30 -070018138 WDI_ControlBlockType* pWDICtx,
18139 WDI_EventInfoType* pEventData
18140)
18141{
18142 WDI_Status wdiStatus;
18143 tAggrAddTsRspParams aggrAddTsRsp;
18144 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18146
18147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018149 -------------------------------------------------------------------------*/
18150 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18151 ( NULL == pEventData->pEventData))
18152 {
18153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018157 }
18158
18159 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18160
18161 /*-------------------------------------------------------------------------
18162 Extract response and send it to UMAC
18163 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018164 wpalMemoryCopy( &aggrAddTsRsp,
18165 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 sizeof(aggrAddTsRsp));
18167
18168 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018169 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018170
18171 /*Notify UMAC*/
18172 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18173
Jeff Johnsone7245742012-09-05 17:12:55 -070018174 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018175}/*WDI_ProcessAddTSpecRsp*/
18176#endif /* WLAN_FEATURE_VOWIFI_11R */
18177
18178/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018179 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018180 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018181
18182 @param pWDICtx: pointer to the WLAN DAL context
18183 pEventData: pointer to the event information structure
18184
Jeff Johnson295189b2012-06-20 16:38:30 -070018185 @see
18186 @return Result of the function call
18187*/
18188WDI_Status
18189WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018190(
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 WDI_ControlBlockType* pWDICtx,
18192 WDI_EventInfoType* pEventData
18193)
18194{
18195 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18196 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18197 tHalHostResumeRspParams hostResumeRspMsg;
18198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18199
18200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018202 -------------------------------------------------------------------------*/
18203 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18204 ( NULL == pEventData->pEventData))
18205 {
18206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 }
18211
18212 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18213
18214 /*-------------------------------------------------------------------------
18215 Extract response and send it to UMAC
18216 -------------------------------------------------------------------------*/
18217
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 (wpt_uint8*)pEventData->pEventData,
18220 sizeof(hostResumeRspMsg));
18221
Jeff Johnsone7245742012-09-05 17:12:55 -070018222 wdiResumeRspParams.wdiStatus =
18223 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018224
18225 /*Notify UMAC*/
18226 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18227
18228 return WDI_STATUS_SUCCESS;
18229}
18230
18231/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018232 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018233 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018234
18235 @param pWDICtx: pointer to the WLAN DAL context
18236 pEventData: pointer to the event information structure
18237
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 @see
18239 @return Result of the function call
18240*/
18241WDI_Status
18242WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018243(
Jeff Johnson295189b2012-06-20 16:38:30 -070018244 WDI_ControlBlockType* pWDICtx,
18245 WDI_EventInfoType* pEventData
18246)
18247{
18248 WDI_Status wdiStatus;
18249 eHalStatus halStatus;
18250 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18252
18253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018255 -------------------------------------------------------------------------*/
18256 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18257 ( NULL == pEventData->pEventData))
18258 {
18259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018263 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018264
18265 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018266
18267 /*-------------------------------------------------------------------------
18268 Extract response and send it to UMAC
18269 -------------------------------------------------------------------------*/
18270 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018271 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018272
18273 /*Notify UMAC*/
18274 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18275
Jeff Johnsone7245742012-09-05 17:12:55 -070018276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018277}/*WDI_ProcessSetTxPerTrackingRsp*/
18278
18279/*==========================================================================
18280 Indications from HAL
18281 ==========================================================================*/
18282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018283 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018284 indication of this kind is being received over the bus
18285 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018286
18287 @param pWDICtx: pointer to the WLAN DAL context
18288 pEventData: pointer to the event information structure
18289
Jeff Johnson295189b2012-06-20 16:38:30 -070018290 @see
18291 @return Result of the function call
18292*/
18293WDI_Status
18294WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018295(
Jeff Johnson295189b2012-06-20 16:38:30 -070018296 WDI_ControlBlockType* pWDICtx,
18297 WDI_EventInfoType* pEventData
18298)
18299{
18300 WDI_LowLevelIndType wdiInd;
18301 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18303
18304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018306 -------------------------------------------------------------------------*/
18307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18308 ( NULL == pEventData->pEventData))
18309 {
18310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018314 }
18315
18316 /*-------------------------------------------------------------------------
18317 Extract indication and send it to UMAC
18318 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018319 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18320 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018321 sizeof(tHalRSSINotification));
18322
18323 /*Fill in the indication parameters*/
18324 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18325 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18326 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18327 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18328 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18329 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18330 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18331 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18332 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18333 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18334 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18335 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18336 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018337 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18338 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018339
ltimariu034f7d62013-01-24 18:54:33 -080018340 if ( pWDICtx->wdiLowLevelIndCB )
18341 {
18342 /*Notify UMAC of indication*/
18343 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18344 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018345
18346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018347}/*WDI_ProcessLowRSSIInd*/
18348
18349
18350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018351 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018352 an indication of this kind is being received over the
18353 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018354
18355 @param pWDICtx: pointer to the WLAN DAL context
18356 pEventData: pointer to the event information structure
18357
Jeff Johnson295189b2012-06-20 16:38:30 -070018358 @see
18359 @return Result of the function call
18360*/
18361WDI_Status
18362WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018363(
Jeff Johnson295189b2012-06-20 16:38:30 -070018364 WDI_ControlBlockType* pWDICtx,
18365 WDI_EventInfoType* pEventData
18366)
18367{
18368 WDI_Status wdiStatus;
18369 eHalStatus halStatus;
18370 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018371 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
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 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018385 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018386 /*-------------------------------------------------------------------------
18387 Extract indication and send it to UMAC
18388 -------------------------------------------------------------------------*/
18389 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18390 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018391 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018392
18393 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018394 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018395 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
18396 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080018397 if ( pWDICtx->wdiLowLevelIndCB )
18398 {
18399 /*Notify UMAC*/
18400 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18401 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018402
18403 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018404}/*WDI_ProcessMissedBeaconInd*/
18405
18406
18407/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 an indication of this kind is being received over the
18410 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018411
18412 @param pWDICtx: pointer to the WLAN DAL context
18413 pEventData: pointer to the event information structure
18414
Jeff Johnson295189b2012-06-20 16:38:30 -070018415 @see
18416 @return Result of the function call
18417*/
18418WDI_Status
18419WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018420(
Jeff Johnson295189b2012-06-20 16:38:30 -070018421 WDI_ControlBlockType* pWDICtx,
18422 WDI_EventInfoType* pEventData
18423)
18424{
18425 WDI_Status wdiStatus;
18426 eHalStatus halStatus;
18427 WDI_LowLevelIndType wdiInd;
18428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18429
18430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018431 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 -------------------------------------------------------------------------*/
18433 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18434 ( NULL == pEventData->pEventData))
18435 {
18436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 }
18441
18442 /*-------------------------------------------------------------------------
18443 Extract indication and send it to UMAC
18444 -------------------------------------------------------------------------*/
18445 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18446 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018447 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018448
18449 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018450 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018451 /* ! TO DO - fill in from HAL struct:
18452 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18453
ltimariu034f7d62013-01-24 18:54:33 -080018454 if ( pWDICtx->wdiLowLevelIndCB )
18455 {
18456 /*Notify UMAC*/
18457 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18458 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018459
18460 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018461}/*WDI_ProcessUnkAddrFrameInd*/
18462
18463
18464/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018465 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 indication of this kind is being received over the bus
18467 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018468
18469 @param pWDICtx: pointer to the WLAN DAL context
18470 pEventData: pointer to the event information structure
18471
Jeff Johnson295189b2012-06-20 16:38:30 -070018472 @see
18473 @return Result of the function call
18474*/
18475WDI_Status
18476WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018477(
Jeff Johnson295189b2012-06-20 16:38:30 -070018478 WDI_ControlBlockType* pWDICtx,
18479 WDI_EventInfoType* pEventData
18480)
18481{
18482 WDI_LowLevelIndType wdiInd;
18483 tpSirMicFailureInd pHalMicFailureInd;
18484
18485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18486
18487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018489 -------------------------------------------------------------------------*/
18490 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18491 ( NULL == pEventData->pEventData))
18492 {
18493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018497 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018498
Jeff Johnson295189b2012-06-20 16:38:30 -070018499 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18500 /*-------------------------------------------------------------------------
18501 Extract indication and send it to UMAC
18502 -------------------------------------------------------------------------*/
18503
18504 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018505 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018506 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18507 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18508 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18509 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18510 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18511 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18512 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18513 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018514 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018516 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018517 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018518 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 pHalMicFailureInd->info.keyId;
18520 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18521 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18522 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18523 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080018524
18525 if ( pWDICtx->wdiLowLevelIndCB )
18526 {
18527 /*Notify UMAC*/
18528 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18529 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018530
18531 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018532}/*WDI_ProcessMicFailureInd*/
18533
18534
18535/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018536 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018537 an indication of this kind is being received over the
18538 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018539
18540 @param pWDICtx: pointer to the WLAN DAL context
18541 pEventData: pointer to the event information structure
18542
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 @see
18544 @return Result of the function call
18545*/
18546WDI_Status
18547WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018548(
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 WDI_ControlBlockType* pWDICtx,
18550 WDI_EventInfoType* pEventData
18551)
18552{
18553 WDI_Status wdiStatus;
18554 eHalStatus halStatus;
18555 WDI_LowLevelIndType wdiInd;
18556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 /*-------------------------------------------------------------------------
18571 Extract indication and send it to UMAC
18572 -------------------------------------------------------------------------*/
18573
18574 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18575 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018576 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018577
18578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18579 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070018580
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018582 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
18583 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018584
ltimariu034f7d62013-01-24 18:54:33 -080018585 if ( pWDICtx->wdiLowLevelIndCB )
18586 {
18587 /*Notify UMAC*/
18588 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18589 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018590
18591 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018592}/*WDI_ProcessFatalErrorInd*/
18593
18594/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018595 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 an indication of this kind is being received over the
18597 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018598
18599 @param pWDICtx: pointer to the WLAN DAL context
18600 pEventData: pointer to the event information structure
18601
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 @see
18603 @return Result of the function call
18604*/
18605WDI_Status
18606WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018607(
Jeff Johnson295189b2012-06-20 16:38:30 -070018608 WDI_ControlBlockType* pWDICtx,
18609 WDI_EventInfoType* pEventData
18610)
18611{
18612 tDeleteStaContextParams halDelSTACtx;
18613 WDI_LowLevelIndType wdiInd;
18614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18615
18616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018618 -------------------------------------------------------------------------*/
18619 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18620 ( NULL == pEventData->pEventData))
18621 {
18622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018623 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018626 }
18627
18628 /*-------------------------------------------------------------------------
18629 Extract indication and send it to UMAC
18630 -------------------------------------------------------------------------*/
18631
18632 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018633 wpalMemoryCopy( &halDelSTACtx,
18634 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018635 sizeof(halDelSTACtx));
18636
18637 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018638 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018639
18640 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
18641 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
18642 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
18643 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
18644
Jeff Johnsone7245742012-09-05 17:12:55 -070018645 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018647 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018648 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018649 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
18650 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070018651
ltimariu034f7d62013-01-24 18:54:33 -080018652 if ( pWDICtx->wdiLowLevelIndCB )
18653 {
18654 /*Notify UMAC*/
18655 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18656 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018657
18658 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018659}/*WDI_ProcessDelSTAInd*/
18660
18661/**
18662*@brief Process Coex Indication function (called when
18663 an indication of this kind is being received over the
18664 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018665
18666 @param pWDICtx: pointer to the WLAN DAL context
18667 pEventData: pointer to the event information structure
18668
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 @see
18670 @return Result of the function call
18671*/
18672WDI_Status
18673WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018674(
Jeff Johnson295189b2012-06-20 16:38:30 -070018675 WDI_ControlBlockType* pWDICtx,
18676 WDI_EventInfoType* pEventData
18677)
18678{
18679 WDI_LowLevelIndType wdiInd;
18680 tCoexIndMsg halCoexIndMsg;
18681 wpt_uint32 index;
18682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18683
18684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018685 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018686 -------------------------------------------------------------------------*/
18687 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18688 ( NULL == pEventData->pEventData ))
18689 {
18690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070018693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018694 }
18695
18696 /*-------------------------------------------------------------------------
18697 Extract indication and send it to UMAC
18698 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018699 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
18700 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018701 sizeof(halCoexIndMsg.coexIndParams) );
18702
18703 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018704 wdiInd.wdiIndicationType = WDI_COEX_IND;
18705 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070018706 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
18707 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018708 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070018709 }
18710
18711 // DEBUG
18712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18713 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070018714 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
18715 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
18716 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
18717 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
18718 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070018719
ltimariu034f7d62013-01-24 18:54:33 -080018720 if ( pWDICtx->wdiLowLevelIndCB )
18721 {
18722 /*Notify UMAC*/
18723 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18724 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018725
18726 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018727}/*WDI_ProcessCoexInd*/
18728
18729/**
18730*@brief Process Tx Complete Indication function (called when
18731 an indication of this kind is being received over the
18732 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018733
18734 @param pWDICtx: pointer to the WLAN DAL context
18735 pEventData: pointer to the event information structure
18736
Jeff Johnson295189b2012-06-20 16:38:30 -070018737 @see
18738 @return Result of the function call
18739*/
18740WDI_Status
18741WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018742(
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 WDI_ControlBlockType* pWDICtx,
18744 WDI_EventInfoType* pEventData
18745)
18746{
18747 WDI_LowLevelIndType wdiInd;
18748 tTxComplIndMsg halTxComplIndMsg;
18749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18750
18751 /*-------------------------------------------------------------------------
18752 Sanity check
18753 -------------------------------------------------------------------------*/
18754 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18755 ( NULL == pEventData->pEventData ))
18756 {
18757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018759 WDI_ASSERT( 0 );
18760 return WDI_STATUS_E_FAILURE;
18761 }
18762
18763 /*-------------------------------------------------------------------------
18764 Extract indication and send it to UMAC
18765 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018766 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
18767 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018768 sizeof(halTxComplIndMsg.txComplParams) );
18769
18770 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018771 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
18772 wdiInd.wdiIndicationData.tx_complete_status
18773 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070018774
ltimariu034f7d62013-01-24 18:54:33 -080018775 if ( pWDICtx->wdiLowLevelIndCB )
18776 {
18777 /*Notify UMAC*/
18778 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18779 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018780
18781 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018782}/*WDI_ProcessTxCompleteInd*/
18783
18784#ifdef WLAN_FEATURE_P2P
18785/**
Viral Modi9dc288a2012-12-10 13:09:21 -080018786*@brief Process Noa Start Indication function (called when
18787 an indication of this kind is being received over the
18788 bus from HAL)
18789
18790 @param pWDICtx: pointer to the WLAN DAL context
18791 pEventData: pointer to the event information structure
18792
18793 @see
18794 @return Result of the function call
18795*/
18796WDI_Status
18797WDI_ProcessP2pNoaStartInd
18798(
18799 WDI_ControlBlockType* pWDICtx,
18800 WDI_EventInfoType* pEventData
18801)
18802{
18803 WDI_LowLevelIndType wdiInd;
18804 tNoaStartIndMsg halNoaStartIndMsg;
18805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18806
18807 /*-------------------------------------------------------------------------
18808 Sanity check
18809 -------------------------------------------------------------------------*/
18810 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18811 ( NULL == pEventData->pEventData ))
18812 {
18813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18814 "%s: Invalid parameters", __func__);
18815 WDI_ASSERT( 0 );
18816 return WDI_STATUS_E_FAILURE;
18817 }
18818
18819 /*-------------------------------------------------------------------------
18820 Extract indication and send it to UMAC
18821 -------------------------------------------------------------------------*/
18822 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
18823 pEventData->pEventData,
18824 sizeof(halNoaStartIndMsg.noaStartIndParams) );
18825
18826 /*Fill in the indication parameters*/
18827 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
18828
18829 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
18830 = halNoaStartIndMsg.noaStartIndParams.status;
18831
18832 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
18833 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
18834
18835 /*Notify UMAC*/
18836 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18837
18838 return WDI_STATUS_SUCCESS;
18839}/*WDI_ProcessNoaAttrInd*/
18840
18841/**
Jeff Johnson295189b2012-06-20 16:38:30 -070018842*@brief Process Noa Attr Indication function (called when
18843 an indication of this kind is being received over the
18844 bus from HAL)
18845
18846 @param pWDICtx: pointer to the WLAN DAL context
18847 pEventData: pointer to the event information structure
18848
18849 @see
18850 @return Result of the function call
18851*/
18852WDI_Status
18853WDI_ProcessP2pNoaAttrInd
18854(
18855 WDI_ControlBlockType* pWDICtx,
18856 WDI_EventInfoType* pEventData
18857)
18858{
18859 WDI_LowLevelIndType wdiInd;
18860 tNoaAttrIndMsg halNoaAttrIndMsg;
18861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18862
18863 /*-------------------------------------------------------------------------
18864 Sanity check
18865 -------------------------------------------------------------------------*/
18866 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18867 ( NULL == pEventData->pEventData ))
18868 {
18869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 WDI_ASSERT( 0 );
18872 return WDI_STATUS_E_FAILURE;
18873 }
18874
18875 /*-------------------------------------------------------------------------
18876 Extract indication and send it to UMAC
18877 -------------------------------------------------------------------------*/
18878 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
18879 pEventData->pEventData,
18880 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
18881
18882 /*Fill in the indication parameters*/
18883 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070018884
Jeff Johnson295189b2012-06-20 16:38:30 -070018885 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
18886 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070018887
Jeff Johnson295189b2012-06-20 16:38:30 -070018888 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
18889 = halNoaAttrIndMsg.noaAttrIndParams.index;
18890 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
18891 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
18892 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
18893 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070018894
Jeff Johnson295189b2012-06-20 16:38:30 -070018895 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
18896 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
18897 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
18898 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
18899 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
18900 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
18901 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
18902 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070018903
Jeff Johnson295189b2012-06-20 16:38:30 -070018904 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
18905 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
18906 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
18907 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
18908 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
18909 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
18910 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
18911 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
18912
ltimariu034f7d62013-01-24 18:54:33 -080018913 if ( pWDICtx->wdiLowLevelIndCB )
18914 {
18915 /*Notify UMAC*/
18916 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18917 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018918
18919 return WDI_STATUS_SUCCESS;
18920}/*WDI_ProcessNoaAttrInd*/
18921#endif
18922
18923/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018924 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 an indication of this kind is being received over the
18926 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018927
18928 @param pWDICtx: pointer to the WLAN DAL context
18929 pEventData: pointer to the event information structure
18930
Jeff Johnson295189b2012-06-20 16:38:30 -070018931 @see
18932 @return Result of the function call
18933*/
18934WDI_Status
18935WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018936(
Jeff Johnson295189b2012-06-20 16:38:30 -070018937 WDI_ControlBlockType* pWDICtx,
18938 WDI_EventInfoType* pEventData
18939)
18940{
18941 WDI_LowLevelIndType wdiInd;
18942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070018943
Jeff Johnson295189b2012-06-20 16:38:30 -070018944 /*-------------------------------------------------------------------------
18945 Extract indication and send it to UMAC
18946 -------------------------------------------------------------------------*/
18947 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018948 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
18949
ltimariu034f7d62013-01-24 18:54:33 -080018950 if ( pWDICtx->wdiLowLevelIndCB )
18951 {
18952 /*Notify UMAC*/
18953 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18954 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018955
Jeff Johnsone7245742012-09-05 17:12:55 -070018956 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018957}/*WDI_ProcessTxPerHitInd*/
18958
Jeff Johnson295189b2012-06-20 16:38:30 -070018959/**
18960 @brief WDI_ProcessFTMCommandReq
18961 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018962
18963 @param pWDICtx: pointer to the WLAN DAL context
18964 pEventData: pointer to the event information structure
18965
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 @see
18967 @return Result of the function call
18968*/
18969WDI_Status
18970WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018971(
Jeff Johnson295189b2012-06-20 16:38:30 -070018972 WDI_ControlBlockType* pWDICtx,
18973 WDI_EventInfoType* pEventData
18974)
18975{
18976 WDI_FTMCommandReqType *ftmCommandReq = NULL;
18977 wpt_uint8 *ftmCommandBuffer = NULL;
18978 wpt_uint16 dataOffset;
18979 wpt_uint16 bufferSize;
18980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 -------------------------------------------------------------------------*/
18983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18984 ( NULL == pEventData->pEventData))
18985
18986 {
18987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018988 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 }
18992
18993 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
18994
18995 /* Get MSG Buffer */
18996 WDI_GetMessageBuffer(pWDICtx,
18997 WDI_FTM_CMD_REQ,
18998 ftmCommandReq->bodyLength,
18999 &ftmCommandBuffer,
19000 &dataOffset,
19001 &bufferSize);
19002
19003 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19004 ftmCommandReq->FTMCommandBody,
19005 ftmCommandReq->bodyLength);
19006
19007 /* Send MSG */
19008 return WDI_SendMsg(pWDICtx,
19009 ftmCommandBuffer,
19010 bufferSize,
19011 pEventData->pCBfnc,
19012 pEventData->pUserData,
19013 WDI_FTM_CMD_RESP);
19014}
19015
19016/**
19017 @brief WDI_ProcessFTMCommandRsp
19018 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019019
19020 @param pWDICtx: pointer to the WLAN DAL context
19021 pEventData: pointer to the event information structure
19022
Jeff Johnson295189b2012-06-20 16:38:30 -070019023 @see
19024 @return Result of the function call
19025*/
19026WDI_Status
19027WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019028(
Jeff Johnson295189b2012-06-20 16:38:30 -070019029 WDI_ControlBlockType* pWDICtx,
19030 WDI_EventInfoType* pEventData
19031)
19032{
19033 WDI_FTMCommandRspCb ftmCMDRspCb;
19034 tProcessPttRspParams *ftmCMDRspData = NULL;
19035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19036
19037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019039 -------------------------------------------------------------------------*/
19040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19041 ( NULL == pEventData->pEventData))
19042 {
19043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019047 }
19048
19049 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19050
19051 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19052
Jeff Johnsone7245742012-09-05 17:12:55 -070019053 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19054 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19056
19057 /*Notify UMAC*/
19058 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19059
Jeff Johnsone7245742012-09-05 17:12:55 -070019060 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019061}
Jeff Johnson295189b2012-06-20 16:38:30 -070019062/**
19063 @brief WDI_ProcessHalDumpCmdReq
19064 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019065
19066 @param pWDICtx: pointer to the WLAN DAL context
19067 pEventData: pointer to the event information structure
19068
Jeff Johnson295189b2012-06-20 16:38:30 -070019069 @see
19070 @return Result of the function call
19071*/
19072WDI_Status
19073WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019074(
Jeff Johnson295189b2012-06-20 16:38:30 -070019075 WDI_ControlBlockType* pWDICtx,
19076 WDI_EventInfoType* pEventData
19077)
19078{
19079 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19080 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19081 wpt_uint16 usDataOffset = 0;
19082 wpt_uint16 usSendSize = 0;
19083 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019084 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019085
19086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019087 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019088 -------------------------------------------------------------------------*/
19089 if (( NULL == pEventData ) ||
19090 ( NULL == pEventData->pEventData) ||
19091 ( NULL == pEventData->pCBfnc ))
19092 {
19093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019097 }
19098
19099 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19100 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19101
19102 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019103 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019107 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019108 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019109 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019110 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019111 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019112 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019113
Jeff Johnson295189b2012-06-20 16:38:30 -070019114 /*-----------------------------------------------------------------------
19115 Get message buffer
19116 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019117 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019118 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19119 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019120 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19122 {
19123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19124 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19125 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19126 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019127 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019128 }
19129
Jeff Johnsone7245742012-09-05 17:12:55 -070019130 wpalMemoryCopy( pSendBuffer+usDataOffset,
19131 &halDumpCmdReqMsg.dumpCmdReqParams,
19132 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019133
19134 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019135 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019136
19137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019138 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19141 wdiHALDumpCmdRspCb, pEventData->pUserData,
19142 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019143}
19144
19145/**
19146 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019147 Process hal Dump Command Response from HAL, simply route to HDD
19148
19149 @param pWDICtx: pointer to the WLAN DAL context
19150 pEventData: pointer to the event information structure
19151
Jeff Johnson295189b2012-06-20 16:38:30 -070019152 @see
19153 @return Result of the function call
19154*/
19155WDI_Status
19156WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019157(
Jeff Johnson295189b2012-06-20 16:38:30 -070019158 WDI_ControlBlockType* pWDICtx,
19159 WDI_EventInfoType* pEventData
19160)
19161{
19162 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019163 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019164 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19165
19166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 -------------------------------------------------------------------------*/
19169 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19170 ( NULL == pEventData->pEventData))
19171 {
19172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019176 }
19177
Jeff Johnsone7245742012-09-05 17:12:55 -070019178 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019179
19180 /*Initialize the WDI Response structure */
19181 wdiHALDumpCmdRsp.usBufferLen = 0;
19182 wdiHALDumpCmdRsp.pBuffer = NULL;
19183
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019184 wpalMemoryCopy( &halDumpCmdRspParams,
19185 pEventData->pEventData,
19186 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019187
19188 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019189 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019190
19191 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019192 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019193 {
19194 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019195 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19196 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19197
19198 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19199 &halDumpCmdRspParams.rspBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019200 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19201 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019202
Jeff Johnson295189b2012-06-20 16:38:30 -070019203 /*Notify UMAC*/
19204 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19205
19206 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19207 {
19208 /* Free the allocated buffer */
19209 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19210 }
19211 return WDI_STATUS_SUCCESS;
19212}
19213
19214/*==========================================================================
19215 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019216
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019219==========================================================================*/
19220/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019221 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019222 when it wishes to send up a notification like the ones
19223 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019224
Jeff Johnson295189b2012-06-20 16:38:30 -070019225 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019226
19227 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019228 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019229 wctsNotifyCBData: the callback data of the user
19230
Jeff Johnson295189b2012-06-20 16:38:30 -070019231 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019232
19233 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019234*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019235void
Jeff Johnson295189b2012-06-20 16:38:30 -070019236WDI_NotifyMsgCTSCB
19237(
Jeff Johnsone7245742012-09-05 17:12:55 -070019238 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019239 WCTS_NotifyEventType wctsEvent,
19240 void* wctsNotifyCBData
19241)
19242{
Jeff Johnsone7245742012-09-05 17:12:55 -070019243 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19245
19246 if (NULL == pWDICtx )
19247 {
19248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019251 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019252 }
19253
19254 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19255 {
19256 /* callback presumably occurred after close */
19257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019258 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019259 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 }
19261
19262 if ( WCTS_EVENT_OPEN == wctsEvent )
19263 {
19264 /*Flag must be set atomically as it is checked from incoming request
19265 functions*/
19266 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019267 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019268
19269 /*Nothing to do - so try to dequeue any pending request that may have
19270 occurred while we were trying to establish this*/
19271 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019272 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019273 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019274 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 {
19276 /*Flag must be set atomically as it is checked from incoming request
19277 functions*/
19278 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019279 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019280
19281 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019283 wpalMutexRelease(&pWDICtx->wptMutex);
19284
19285 /*Notify that the Control Channel is closed */
19286 wpalEventSet(&pWDICtx->wctsActionEvent);
19287 }
19288
19289}/*WDI_NotifyMsgCTSCB*/
19290
19291
19292/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019293 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019294 when it wishes to send up a packet received over the
19295 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019296
Jeff Johnson295189b2012-06-20 16:38:30 -070019297 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019298
19299 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019300 pMsg: the packet
19301 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019302 wctsRxMsgCBData: the callback data of the user
19303
Jeff Johnson295189b2012-06-20 16:38:30 -070019304 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019305
19306 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019307*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019308void
19309WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019310(
Jeff Johnsone7245742012-09-05 17:12:55 -070019311 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019312 void* pMsg,
19313 wpt_uint32 uLen,
19314 void* wctsRxMsgCBData
19315)
19316{
Jeff Johnsone7245742012-09-05 17:12:55 -070019317 tHalMsgHeader *pHalMsgHeader;
19318 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19321
19322 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019324 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019325 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019326 ( uLen < sizeof(tHalMsgHeader)))
19327 {
19328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019331 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019332 }
19333
19334 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19335 {
19336 /* callback presumably occurred after close */
19337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019338 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019339 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019340 }
19341
Jeff Johnsone7245742012-09-05 17:12:55 -070019342 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019343 context - so no serialization is necessary here
19344 ! - revisit this assumption */
19345
19346 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19347
19348 if ( uLen != pHalMsgHeader->msgLen )
19349 {
19350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19351 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019352 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19353 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019354 }
19355
19356 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19357
19358 /*The message itself starts after the header*/
19359 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19360 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19361 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19362 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19363
19364
19365 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19366 {
19367 /*Stop the timer as the response was received */
19368 /*!UT - check for potential race conditions between stop and response */
19369 wpalTimerStop(&pWDICtx->wptResponseTimer);
19370 }
19371 /* Check if we receive a response message which is not expected */
19372 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19373 {
19374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19375 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19376 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019377 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19379 pWDICtx->wdiExpectedResponse);
19380 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19381 return;
19382 }
19383
19384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19385 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19386
19387 /*Post response event to the state machine*/
19388 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19389
19390}/*WDI_RXMsgCTSCB*/
19391
19392
19393/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019394 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019395========================================================================*/
19396
19397/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019398 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019400
Jeff Johnson295189b2012-06-20 16:38:30 -070019401 @param pWDICtx - pointer to the control block
19402
19403 @return Result of the function call
19404*/
19405WPT_INLINE WDI_Status
19406WDI_CleanCB
19407(
19408 WDI_ControlBlockType* pWDICtx
19409)
19410{
19411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19412
19413 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019414 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019415
Jeff Johnsone7245742012-09-05 17:12:55 -070019416 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019417 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19418 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19419
19420 WDI_ResetAssocSessions( pWDICtx );
19421
19422 return WDI_STATUS_SUCCESS;
19423}/*WDI_CleanCB*/
19424
19425
19426/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019427 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019428
Jeff Johnsone7245742012-09-05 17:12:55 -070019429
19430 @param pWDICtx: pointer to the WLAN DAL context
19431 pEventData: pointer to the event information structure
19432
Jeff Johnson295189b2012-06-20 16:38:30 -070019433 @see
19434 @return Result of the function call
19435*/
19436WPT_INLINE WDI_Status
19437WDI_ProcessRequest
19438(
19439 WDI_ControlBlockType* pWDICtx,
19440 WDI_EventInfoType* pEventData
19441)
19442{
19443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19444
Jeff Johnsone7245742012-09-05 17:12:55 -070019445 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019446 already checked these pointers*/
19447
19448 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19449 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019450 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19452 "Calling request processing function for req %s (%d) %x",
19453 WDI_getReqMsgString(pEventData->wdiRequest),
19454 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19455 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19456 }
19457 else
19458 {
19459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019460 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019461 pEventData->wdiRequest);
19462 return WDI_STATUS_E_NOT_IMPLEMENT;
19463 }
19464}/*WDI_ProcessRequest*/
19465
19466
19467/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019468 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019470 prefixes it with a send message header
19471
19472 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019473 wdiReqType: type of the request being sent
19474 uBufferLen: message buffer len
19475 pMsgBuffer: resulting allocated buffer
19476 pusDataOffset: offset in the buffer where the caller
19477 can start copying its message data
19478 puBufferSize: the resulting buffer size (offset+buff
19479 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019480
Jeff Johnson295189b2012-06-20 16:38:30 -070019481 @see
19482 @return Result of the function call
19483*/
19484WDI_Status
19485WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019486(
19487 WDI_ControlBlockType* pWDICtx,
19488 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019490 wpt_uint8** pMsgBuffer,
19491 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019492 wpt_uint16* pusBufferSize
19493)
19494{
19495 tHalMsgHeader halMsgHeader;
19496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19497
Jeff Johnsone7245742012-09-05 17:12:55 -070019498 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 again*/
19500
19501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019502 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019504 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019505 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19506 if ( NULL == *pMsgBuffer )
19507 {
19508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19509 "Unable to allocate message buffer for req %s (%d)",
19510 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019511 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019513 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019514 }
19515
19516 /*-------------------------------------------------------------------------
19517 Fill in the message header
19518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019519 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19520 /* Fill msgVersion */
19521#ifdef WLAN_FEATURE_11AC
19522 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019523 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019524 else
19525#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019526 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019527
Jeff Johnsone7245742012-09-05 17:12:55 -070019528 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19529 *pusDataOffset = sizeof(halMsgHeader);
19530 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19531
19532 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019533}/*WDI_GetMessageBuffer*/
19534
19535
19536/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019537 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019538 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019539 the CB
19540
19541 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019542 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019543
Jeff Johnson295189b2012-06-20 16:38:30 -070019544 usSendSize size of the buffer to be sent
19545 pRspCb: response callback - save in the WDI
19546 CB
19547 pUserData: user data associated with the
19548 callback
19549 wdiExpectedResponse: the code of the response that is
19550 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019551
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 @see
19553 @return Result of the function call
19554*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019555WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019556WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019557(
19558 WDI_ControlBlockType* pWDICtx,
19559 wpt_uint8* pSendBuffer,
19560 wpt_uint32 usSendSize,
19561 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019562 void* pUserData,
19563 WDI_ResponseEnumType wdiExpectedResponse
19564)
19565{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019566 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019567 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19569
19570 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019571 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019572 ------------------------------------------------------------------------*/
19573 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019574 pWDICtx->pfncRspCB = pRspCb;
19575 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019576
19577 /*-----------------------------------------------------------------------
19578 Call the CTS to send this message over - free message afterwards
19579 - notify transport failure
19580 Note: CTS is reponsible for freeing the message buffer.
19581 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019582 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
19583 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
19584 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070019585 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 "Failed to send message over the bus - catastrophic failure");
19588
Jeff Johnsond13512a2012-07-17 11:42:19 -070019589 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019590 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019591 else
19592 {
19593 /* even when message was placed in CTS deferred Q, we will treat it
19594 success but log this info
19595 */
19596 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
19597 {
19598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19599 "WDI_SendMsg: message placed in CTS deferred Q, expected "
19600 "response %s (%d)",
19601 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19602 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080019603 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019604 }
19605 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019606
Jeff Johnsond13512a2012-07-17 11:42:19 -070019607 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019608 if ( NULL != pWDICtx->wdiReqStatusCB )
19609 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019610 /*Inform originator whether request went through or not*/
19611 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
19612 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019613 pWDICtx->wdiReqStatusCB = NULL;
19614 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070019615 callback(wdiStatus, callbackContext);
19616
19617 /*For WDI requests which have registered a request callback,
19618 inform the WDA caller of the same via setting the return value
19619 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
19620 end up repeating the functonality in the req callback for the
19621 WDI_STATUS_E_FAILURE case*/
19622 if (wdiStatus == WDI_STATUS_E_FAILURE)
19623 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070019624 }
19625
Jeff Johnsond13512a2012-07-17 11:42:19 -070019626 if ( wdiStatus == WDI_STATUS_SUCCESS )
19627 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019628 /*Start timer for the expected response */
19629 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019630
19631 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080019632 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070019633 }
19634 else
19635 {
Jeff Johnson1920a722012-12-10 14:28:09 -080019636 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070019637 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19638 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019639
Jeff Johnsond13512a2012-07-17 11:42:19 -070019640 return wdiStatus;
19641
Jeff Johnson295189b2012-06-20 16:38:30 -070019642}/*WDI_SendMsg*/
19643
19644
19645
19646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019647 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 the bus using the control transport and saves some info
19649 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070019650
19651 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019652 pSendBuffer: buffer to be sent
19653 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019654
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 @see
19656 @return Result of the function call
19657*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019658WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019659WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070019660(
19661 WDI_ControlBlockType* pWDICtx,
19662 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 wpt_uint32 usSendSize
19664)
19665{
19666 wpt_uint32 uStatus ;
19667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19668
19669 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019670 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019671 Note: CTS is reponsible for freeing the message buffer.
19672 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019673 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019674 (void*)pSendBuffer, usSendSize );
19675
19676 /*Inform Upper MAC about the outcome of the request*/
19677 if ( NULL != pWDICtx->wdiReqStatusCB )
19678 {
19679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19680 "Send indication status : %d", uStatus);
19681
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019682 /* even if CTS placed indication into its deferred Q, we treat it
19683 * as success and let CTS drain its queue as per smd interrupt to CTS
19684 */
19685 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 -070019686 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019687 }
19688
19689 /*If sending of the message failed - it is considered catastrophic and
19690 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019691 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
19692 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
19693
Jeff Johnson295189b2012-06-20 16:38:30 -070019694 {
19695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070019697
19698 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19699 return WDI_STATUS_E_FAILURE;
19700 }
19701
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019703}/*WDI_SendIndication*/
19704
19705
19706/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019707 @brief WDI_DetectedDeviceError - called internally by DAL when
19708 it has detected a failure in the device
19709
19710 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019711 usErrorCode: error code detected by WDI or received
19712 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019713
Jeff Johnson295189b2012-06-20 16:38:30 -070019714 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070019715 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019716*/
19717void
19718WDI_DetectedDeviceError
19719(
19720 WDI_ControlBlockType* pWDICtx,
19721 wpt_uint16 usErrorCode
19722)
19723{
19724 WDI_LowLevelIndType wdiInd;
19725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19726
19727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19728 "Device Error detected code: %d - transitioning to stopped state",
19729 usErrorCode);
19730
19731 wpalMutexAcquire(&pWDICtx->wptMutex);
19732
19733 WDI_STATableStop(pWDICtx);
19734
19735 WDI_ResetAssocSessions(pWDICtx);
19736
19737 /*Set the expected state transition to stopped - because the device
19738 experienced a failure*/
19739 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
19740
19741 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019742 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070019743
Jeff Johnsone7245742012-09-05 17:12:55 -070019744 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019745
19746 /*TO DO: - there should be an attempt to reset the device here*/
19747
19748 wpalMutexRelease(&pWDICtx->wptMutex);
19749
19750 /*------------------------------------------------------------------------
19751 Notify UMAC if a handler is registered
19752 ------------------------------------------------------------------------*/
19753 if (pWDICtx->wdiLowLevelIndCB)
19754 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019755 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19756 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019757
19758 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
19759 }
19760}/*WDI_DetectedDeviceError*/
19761
19762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019763 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070019764 we started on send message has expire - this should
19765 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070019766 reply - trigger catastrophic failure
19767 @param
19768
Jeff Johnson295189b2012-06-20 16:38:30 -070019769 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070019770
19771 @see
19772 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019773*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019774void
Jeff Johnson295189b2012-06-20 16:38:30 -070019775WDI_ResponseTimerCB
19776(
19777 void *pUserData
19778)
19779{
19780 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
19781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19782
19783 if (NULL == pWDICtx )
19784 {
19785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019788 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 }
19790
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019791 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080019792 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019793
19794 /* If response timer is running at this time that means this timer
19795 * event is not for the last request but rather last-to-last request and
19796 * this timer event has come after we recevied respone for last-to-last
19797 * message
19798 */
19799 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
19800 {
19801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19802 "WDI_ResponseTimerCB: timer in running state on timer event, "
19803 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19804 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
19805 return;
19806 }
19807
Jeff Johnson295189b2012-06-20 16:38:30 -070019808 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
19809 {
19810
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053019811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019812 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019813 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070019814 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019815 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19816 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019817 /* WDI timeout means Riva is not responding or SMD communication to Riva
19818 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019819 * is to initiate SSR from APPS
19820 * There is also an option to re-enable wifi, which will eventually
19821 * trigger SSR
19822 */
19823#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070019824 wpalWcnssResetIntr();
19825 /* if this timer fires, it means Riva did not receive the FIQ */
19826 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019827#else
19828 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19829 wpalWlanReload();
19830#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019831 }
19832 else
19833 {
19834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019835 "Timeout occurred but not waiting for any response %d "
19836 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19837 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19838 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019839 }
19840
19841 return;
19842
19843}/*WDI_ResponseTimerCB*/
19844
19845
19846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019848
Jeff Johnsone7245742012-09-05 17:12:55 -070019849
19850 @param pWDICtx: pointer to the WLAN DAL context
19851 pEventData: pointer to the event information structure
19852
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 @see
19854 @return Result of the function call
19855*/
19856WPT_INLINE WDI_Status
19857WDI_ProcessResponse
19858(
19859 WDI_ControlBlockType* pWDICtx,
19860 WDI_EventInfoType* pEventData
19861)
19862{
19863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19864
Jeff Johnsone7245742012-09-05 17:12:55 -070019865 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070019866 already checked these pointers
19867 ! - revisit this assumption */
19868 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
19869 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019870 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070019872 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070019873 WDI_getRespMsgString(pEventData->wdiResponse),
19874 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
19875 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
19876 }
19877 else
19878 {
19879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019880 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019881 pEventData->wdiResponse);
19882 return WDI_STATUS_E_NOT_IMPLEMENT;
19883 }
19884}/*WDI_ProcessResponse*/
19885
19886
19887/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019888 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070019889=========================================================================*/
19890
19891/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019892 @brief Utility function used by the DAL Core to help queue a
19893 request that cannot be processed right away.
19894 @param
19895
Jeff Johnson295189b2012-06-20 16:38:30 -070019896 pWDICtx: - pointer to the WDI control block
19897 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019898 queued
19899
19900 @see
19901 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019902*/
19903WDI_Status
19904WDI_QueuePendingReq
19905(
19906 WDI_ControlBlockType* pWDICtx,
19907 WDI_EventInfoType* pEventData
19908)
19909{
Jeff Johnsone7245742012-09-05 17:12:55 -070019910 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019911 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070019912 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19914
19915 if ( NULL == pEventDataQueue )
19916 {
19917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019918 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 WDI_ASSERT(0);
19920 return WDI_STATUS_MEM_FAILURE;
19921 }
19922
19923 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19924 pEventDataQueue->pUserData = pEventData->pUserData;
19925 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19926 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019927 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019928
19929 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
19930 {
19931 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019932
Jeff Johnson295189b2012-06-20 16:38:30 -070019933 if ( NULL == pEventInfo )
19934 {
19935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019936 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 WDI_ASSERT(0);
19938 wpalMemoryFree(pEventDataQueue);
19939 return WDI_STATUS_MEM_FAILURE;
19940 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019941
Jeff Johnson295189b2012-06-20 16:38:30 -070019942 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19943
19944 }
19945 pEventDataQueue->pEventData = pEventInfo;
19946
19947 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019948 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019949
Jeff Johnsone7245742012-09-05 17:12:55 -070019950 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019951
19952 return WDI_STATUS_SUCCESS;
19953}/*WDI_QueuePendingReq*/
19954
19955/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019956 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070019957 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070019958 @param
19959
19960 pMsg - pointer to the message
19961
19962 @see
19963 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019964*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019965void
Jeff Johnson295189b2012-06-20 16:38:30 -070019966WDI_PALCtrlMsgCB
19967(
19968 wpt_msg *pMsg
19969)
19970{
19971 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019972 WDI_ControlBlockType* pWDICtx = NULL;
19973 WDI_Status wdiStatus;
19974 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019975 void* pUserData;
19976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19977
19978 if (( NULL == pMsg )||
19979 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
19980 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
19981 {
19982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019983 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070019984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019985 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019986 }
19987
19988 /*Transition back to the state that we had before serialization
19989 - serialization transitions us to BUSY to stop any incomming requests
19990 ! TO DO L: possible race condition here if a request comes in between the
19991 state transition and the post function*/
19992
Jeff Johnsone7245742012-09-05 17:12:55 -070019993 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070019994
19995 /*-----------------------------------------------------------------------
19996 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070019997 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070019998 -----------------------------------------------------------------------*/
19999 switch ( pEventData->wdiRequest )
20000 {
20001
Jeff Johnsone7245742012-09-05 17:12:55 -070020002 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020003 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20004 break;
20005
Jeff Johnson295189b2012-06-20 16:38:30 -070020006 case WDI_NV_DOWNLOAD_REQ:
20007 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20008 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20009 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20010 {
20011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020012 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020013 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20014 }
20015 else
20016 {
20017 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20018 }
20019
20020 break;
20021
20022 default:
20023 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20024 break;
20025 }/*switch ( pEventData->wdiRequest )*/
20026
20027 if ( WDI_STATUS_SUCCESS != wdiStatus )
20028 {
20029 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20030
20031 if ( NULL != pfnReqStatusCB )
20032 {
20033 /*Fail the request*/
20034 pfnReqStatusCB( wdiStatus, pUserData);
20035 }
20036 }
20037
20038 /* Free data - that was allocated when queueing*/
20039 if( pEventData != NULL )
20040 {
20041 if( pEventData->pEventData != NULL )
20042 {
20043 wpalMemoryFree(pEventData->pEventData);
20044 }
20045 wpalMemoryFree(pEventData);
20046 }
20047
20048 if( pMsg != NULL )
20049 {
20050 wpalMemoryFree(pMsg);
20051 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020052
Jeff Johnson295189b2012-06-20 16:38:30 -070020053}/*WDI_PALCtrlMsgCB*/
20054
20055/**
20056 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020057 and schedule for execution a pending request
20058 @param
20059
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 pWDICtx: - pointer to the WDI control block
20061 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020062 queued
20063
20064 @see
20065 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020066*/
20067WDI_Status
20068WDI_DequeuePendingReq
20069(
20070 WDI_ControlBlockType* pWDICtx
20071)
20072{
Jeff Johnsone7245742012-09-05 17:12:55 -070020073 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020074 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020075 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20077
Jeff Johnsone7245742012-09-05 17:12:55 -070020078 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020079
20080 if ( NULL == pNode )
20081 {
20082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020083 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 return WDI_STATUS_SUCCESS;
20085 }
20086
20087 /*The node actually points to the 1st element inside the Event Data struct -
20088 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020089 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020090
20091 /*Serialize processing in the control thread
20092 !TO DO: - check to see if these are all the messages params that need
20093 to be filled in*/
20094 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20095
20096 if ( NULL == palMsg )
20097 {
20098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020099 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020101 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020102 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020103 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020104 palMsg->callback = WDI_PALCtrlMsgCB;
20105 palMsg->ptr = pEventData;
20106
20107 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020108 palMsg->val = pWDICtx->uGlobalState;
20109
Jeff Johnson295189b2012-06-20 16:38:30 -070020110 /*Transition back to BUSY as we need to handle a queued request*/
20111 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020112
Jeff Johnson295189b2012-06-20 16:38:30 -070020113 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20114
20115 return WDI_STATUS_PENDING;
20116}/*WDI_DequeuePendingReq*/
20117
20118
20119/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020120 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 away.- The assoc requests will be queued by BSSID
20123 @param
20124
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 pWDICtx: - pointer to the WDI control block
20126 pEventData: pointer to the evnt info that needs to be queued
20127 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020128
20129 @see
20130 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020131*/
20132WDI_Status
20133WDI_QueueNewAssocRequest
20134(
20135 WDI_ControlBlockType* pWDICtx,
20136 WDI_EventInfoType* pEventData,
20137 wpt_macAddr macBSSID
20138)
20139{
Jeff Johnsone7245742012-09-05 17:12:55 -070020140 wpt_uint8 i;
20141 WDI_BSSSessionType* pSession = NULL;
20142 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020143 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020144 void* pEventInfo;
20145 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020147
Jeff Johnsone7245742012-09-05 17:12:55 -070020148
20149 /*------------------------------------------------------------------------
20150 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020151 ------------------------------------------------------------------------*/
20152 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20153 {
20154 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20155 {
20156 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020157 pSession = &pWDICtx->aBSSSessions[i];
20158 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020159 }
20160 }
20161
20162 if ( i >= WDI_MAX_BSS_SESSIONS )
20163 {
20164 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020166 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020167
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 /*------------------------------------------------------------------------
20169 Fill in the BSSID for this session and set the usage flag
20170 ------------------------------------------------------------------------*/
20171 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020172 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020173
20174 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020175 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 ------------------------------------------------------------------------*/
20177 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20178 if ( NULL == pEventDataQueue )
20179 {
20180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020181 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020182 WDI_ASSERT(0);
20183 return WDI_STATUS_MEM_FAILURE;
20184 }
20185
20186 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20187 if ( NULL == pSessionIdElement )
20188 {
20189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020190 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 WDI_ASSERT(0);
20192 wpalMemoryFree(pEventDataQueue);
20193 return WDI_STATUS_MEM_FAILURE;
20194 }
20195
20196 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20197 if ( NULL == pEventInfo )
20198 {
20199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020200 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020201 WDI_ASSERT(0);
20202 wpalMemoryFree(pSessionIdElement);
20203 wpalMemoryFree(pEventDataQueue);
20204 return WDI_STATUS_MEM_FAILURE;
20205 }
20206
20207 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20208 pEventDataQueue->pUserData = pEventData->pUserData;
20209 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20210 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020211 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020212
20213 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20214 pEventDataQueue->pEventData = pEventInfo;
20215
20216 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020217 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020218
20219 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020220 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020221
Jeff Johnsone7245742012-09-05 17:12:55 -070020222 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020223
20224 /*We need to maintain a separate list that keeps track of the order in which
20225 the new assoc requests are being queued such that we can start processing
20226 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020227 pSessionIdElement->ucIndex = i;
20228 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020229
20230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20231 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020232 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020233
20234 /*Return pending as this is what the status of the request is since it has
20235 been queued*/
20236 return WDI_STATUS_PENDING;
20237}/*WDI_QueueNewAssocRequest*/
20238
20239/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020240 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020241 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020242 away.- The assoc requests will be queued by BSSID
20243 @param
20244
Jeff Johnson295189b2012-06-20 16:38:30 -070020245 pWDICtx: - pointer to the WDI control block
20246 pSession: - session in which to queue
20247 pEventData: pointer to the event info that needs to be
20248 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020249
20250 @see
20251 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020252*/
20253WDI_Status
20254WDI_QueueAssocRequest
20255(
20256 WDI_ControlBlockType* pWDICtx,
20257 WDI_BSSSessionType* pSession,
20258 WDI_EventInfoType* pEventData
20259)
20260{
Jeff Johnsone7245742012-09-05 17:12:55 -070020261 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020262 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020263 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020265
20266 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020267 Sanity check
20268 ------------------------------------------------------------------------*/
20269 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20270 {
20271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020272 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020273
Jeff Johnsone7245742012-09-05 17:12:55 -070020274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 }
20276
20277 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020278 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020279 ------------------------------------------------------------------------*/
20280 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20281 if ( NULL == pEventDataQueue )
20282 {
20283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020284 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020285 WDI_ASSERT(0);
20286 return WDI_STATUS_MEM_FAILURE;
20287 }
20288
20289 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20290 if ( NULL == pEventInfo )
20291 {
20292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20293 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020294 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 WDI_ASSERT(0);
20296 wpalMemoryFree(pEventDataQueue);
20297 return WDI_STATUS_MEM_FAILURE;
20298 }
20299
20300 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20301 pEventDataQueue->pUserData = pEventData->pUserData;
20302 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20303 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020304 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 pEventDataQueue->pEventData = pEventInfo;
20306
20307 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20308
20309 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020310 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020311
20312 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020313 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020314
Jeff Johnsone7245742012-09-05 17:12:55 -070020315 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020316
20317 /*The result of this operation is pending because the request has been
20318 queued and it will be processed at a later moment in time */
20319 return WDI_STATUS_PENDING;
20320}/*WDI_QueueAssocRequest*/
20321
20322/**
20323 @brief Utility function used by the DAL Core to help dequeue
20324 an association request that was pending
20325 The request will be queued up in front of the main
20326 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 @param
20328
Jeff Johnson295189b2012-06-20 16:38:30 -070020329 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020330
20331
20332 @see
20333 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020334*/
20335WDI_Status
20336WDI_DequeueAssocRequest
20337(
20338 WDI_ControlBlockType* pWDICtx
20339)
20340{
Jeff Johnsone7245742012-09-05 17:12:55 -070020341 wpt_list_node* pNode = NULL;
20342 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020343 WDI_BSSSessionType* pSession;
20344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020345
20346 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020347 Sanity check
20348 ------------------------------------------------------------------------*/
20349 if ( NULL == pWDICtx )
20350 {
20351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020353
Jeff Johnsone7245742012-09-05 17:12:55 -070020354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020355 }
20356
20357 /*------------------------------------------------------------------------
20358 An association has been completed => a new association can occur
20359 Check to see if there are any pending associations ->
20360 If so , transfer all the pending requests into the busy queue for
20361 processing
20362 These requests have arrived prior to the requests in the busy queue
20363 (bc they needed to be processed in order to be placed in this queue)
20364 => they will be placed at the front of the busy queue
20365 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020366 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020367
20368 if ( NULL == pNode )
20369 {
20370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020371 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020372 return WDI_STATUS_SUCCESS;
20373 }
20374
20375 /*The node actually points to the 1st element inside the Session Id struct -
20376 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020377 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020378
20379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20380 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20381
20382 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20383 {
20384 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020385
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020387 the front of the main waiting queue for subsequent execution*/
20388 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020389 while ( NULL != pNode )
20390 {
20391 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020392 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20393 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020395 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020396 }
20397 else
20398 {
20399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020400 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020401 WPAL_ASSERT(0);
20402 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020404 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020405
Jeff Johnson295189b2012-06-20 16:38:30 -070020406 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20407 wpalMemoryFree(pSessionIdElement);
20408 return WDI_STATUS_SUCCESS;
20409}/*WDI_DequeueAssocRequest*/
20410
20411/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020412 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 pending requests - all req cb will be called with
20414 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020415 @param
20416
Jeff Johnson295189b2012-06-20 16:38:30 -070020417 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020418
20419 @see
20420 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020421*/
20422WDI_Status
20423WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020424(
Jeff Johnson295189b2012-06-20 16:38:30 -070020425 WDI_ControlBlockType* pWDICtx
20426)
20427{
Jeff Johnsone7245742012-09-05 17:12:55 -070020428 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020429 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020430 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 void* pUserData;
20432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20433
Jeff Johnsone7245742012-09-05 17:12:55 -070020434 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020435
20436 /*------------------------------------------------------------------------
20437 Go through all the requests and fail them - this will only be called
20438 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020439 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020440 ------------------------------------------------------------------------*/
20441 while( pNode )
20442 {
20443 /*The node actually points to the 1st element inside the Event Data struct -
20444 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020445 pEventDataQueue = (WDI_EventInfoType*)pNode;
20446
Jeff Johnson295189b2012-06-20 16:38:30 -070020447 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20448 if ( NULL != pfnReqStatusCB )
20449 {
20450 /*Fail the request*/
20451 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20452 }
20453 /* Free data - that was allocated when queueing */
20454 if ( pEventDataQueue->pEventData != NULL )
20455 {
20456 wpalMemoryFree(pEventDataQueue->pEventData);
20457 }
20458 wpalMemoryFree(pEventDataQueue);
20459
20460 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20461 {
20462 break;
20463 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020464 }
20465
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 return WDI_STATUS_SUCCESS;
20467}/*WDI_ClearPendingRequests*/
20468
20469/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020470 @brief Helper routine used to init the BSS Sessions in the WDI control block
20471
20472
20473 @param pWDICtx: pointer to the WLAN DAL context
20474
Jeff Johnson295189b2012-06-20 16:38:30 -070020475 @see
20476*/
20477void
20478WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020479(
Jeff Johnson295189b2012-06-20 16:38:30 -070020480 WDI_ControlBlockType* pWDICtx
20481)
20482{
Jeff Johnsone7245742012-09-05 17:12:55 -070020483 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20485
20486 /*-------------------------------------------------------------------------
20487 No Sanity check
20488 -------------------------------------------------------------------------*/
20489 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20490 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020491 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20493 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20494 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20495 }
20496}/*WDI_ResetAssocSessions*/
20497
20498/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020499 @brief Helper routine used to find a session based on the BSSID
20500
20501
20502 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020503 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020504 pSession: pointer to the session (if found)
20505
Jeff Johnson295189b2012-06-20 16:38:30 -070020506 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020507 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020508*/
20509wpt_uint8
20510WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020511(
Jeff Johnson295189b2012-06-20 16:38:30 -070020512 WDI_ControlBlockType* pWDICtx,
20513 wpt_macAddr macBSSID,
20514 WDI_BSSSessionType** ppSession
20515)
20516{
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20519
20520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 -------------------------------------------------------------------------*/
20523 if ( NULL == ppSession )
20524 {
20525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020526 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020527 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020528 }
20529
Jeff Johnsone7245742012-09-05 17:12:55 -070020530 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020531
Jeff Johnsone7245742012-09-05 17:12:55 -070020532 /*------------------------------------------------------------------------
20533 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020534 ------------------------------------------------------------------------*/
20535 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20536 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020537 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20538 (eWLAN_PAL_TRUE ==
20539 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20540 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 {
20542 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020543 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 return i;
20545 }
20546 }
20547
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020549}/*WDI_FindAssocSession*/
20550
20551/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020552 @brief Helper routine used to find a session based on the BSSID
20553
20554
20555 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020556 ucBSSIdx: BSS Index of the session
20557 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020558
Jeff Johnson295189b2012-06-20 16:38:30 -070020559 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020560 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020561*/
20562wpt_uint8
20563WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020564(
Jeff Johnson295189b2012-06-20 16:38:30 -070020565 WDI_ControlBlockType* pWDICtx,
20566 wpt_uint16 ucBSSIdx,
20567 WDI_BSSSessionType** ppSession
20568)
20569{
Jeff Johnsone7245742012-09-05 17:12:55 -070020570 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20572
20573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020575 -------------------------------------------------------------------------*/
20576 if ( NULL == ppSession )
20577 {
20578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020579 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020580 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 }
20582
Jeff Johnsone7245742012-09-05 17:12:55 -070020583 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020584
Jeff Johnsone7245742012-09-05 17:12:55 -070020585 /*------------------------------------------------------------------------
20586 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020587 ------------------------------------------------------------------------*/
20588 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20589 {
20590 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
20591 {
20592 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020593 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020594 return i;
20595 }
20596 }
20597
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020599}/*WDI_FindAssocSessionByBSSIdx*/
20600
20601/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020602 @brief Helper routine used to find a session based on the BSSID
20603
20604
20605 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 ucBSSIdx: BSS Index of the session
20607 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020608
Jeff Johnson295189b2012-06-20 16:38:30 -070020609 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020610 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020611*/
20612wpt_uint8
20613WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020614(
Jeff Johnson295189b2012-06-20 16:38:30 -070020615 WDI_ControlBlockType* pWDICtx,
20616 wpt_uint16 usIdx,
20617 WDI_BSSSessionType** ppSession
20618)
20619{
20620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20621
20622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020624 -------------------------------------------------------------------------*/
20625 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
20626 {
20627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020628 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020629 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020630 }
20631
20632 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020633 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070020634
20635 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020636
Jeff Johnson295189b2012-06-20 16:38:30 -070020637}/*WDI_FindAssocSessionByBSSIdx*/
20638
20639/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020640 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020641 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020642
20643
20644 @param pWDICtx: pointer to the WLAN DAL context
20645 pSession: pointer to the session (if found)
20646
Jeff Johnson295189b2012-06-20 16:38:30 -070020647 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020648 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020649*/
20650wpt_uint8
20651WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070020652(
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 WDI_ControlBlockType* pWDICtx,
20654 WDI_BSSSessionType** ppSession
20655)
20656{
Jeff Johnsone7245742012-09-05 17:12:55 -070020657 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 -------------------------------------------------------------------------*/
20662 if ( NULL == ppSession )
20663 {
20664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020665 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020666 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 }
20668
Jeff Johnsone7245742012-09-05 17:12:55 -070020669 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020670
Jeff Johnsone7245742012-09-05 17:12:55 -070020671 /*------------------------------------------------------------------------
20672 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070020673 ------------------------------------------------------------------------*/
20674 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20675 {
20676 if ( ! pWDICtx->aBSSSessions[i].bInUse )
20677 {
20678 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020679 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020680 return i;
20681 }
20682 }
20683
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020685}/*WDI_FindEmptySession*/
20686
20687
20688/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020691
20692
20693 @param pWDICtx: pointer to the WLAN DAL context
20694
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 @see
20696 @return Number of sessions in use
20697*/
20698wpt_uint8
20699WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070020700(
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 WDI_ControlBlockType* pWDICtx
20702)
20703{
Jeff Johnsone7245742012-09-05 17:12:55 -070020704 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020706
20707 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020708 Count all sessions in use
20709 ------------------------------------------------------------------------*/
20710 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20711 {
20712 if ( pWDICtx->aBSSSessions[i].bInUse )
20713 {
20714 ucCount++;
20715 }
20716 }
20717
Jeff Johnsone7245742012-09-05 17:12:55 -070020718 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070020719}/*WDI_GetActiveSessionsCount*/
20720
20721/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020722 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020723 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020724
20725
20726 @param pWDICtx: pointer to the WLAN DAL context
20727 pSession: pointer to the session (if found)
20728
Jeff Johnson295189b2012-06-20 16:38:30 -070020729 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020730 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020731*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020732void
Jeff Johnson295189b2012-06-20 16:38:30 -070020733WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020734(
Jeff Johnson295189b2012-06-20 16:38:30 -070020735 WDI_ControlBlockType* pWDICtx,
20736 WDI_BSSSessionType* ppSession
20737)
20738{
20739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020741 -------------------------------------------------------------------------*/
20742 if ( NULL == ppSession )
20743 {
20744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020745 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020746 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020747 }
20748
Jeff Johnsone7245742012-09-05 17:12:55 -070020749 /*------------------------------------------------------------------------
20750 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070020751 ------------------------------------------------------------------------*/
20752 wpal_list_destroy(&ppSession->wptPendingQueue);
20753 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070020754 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
20755 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020756 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
20757 wpal_list_init(&ppSession->wptPendingQueue);
20758
20759}/*WDI_DeleteSession*/
20760
20761/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020762 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070020763 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070020764 @param
20765
Jeff Johnson295189b2012-06-20 16:38:30 -070020766 WDI_AddStaParams: - pointer to the WDI Add STA params
20767 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020768
20769 @see
20770 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070020771*/
20772void
20773WDI_AddBcastSTAtoSTATable
20774(
20775 WDI_ControlBlockType* pWDICtx,
20776 WDI_AddStaParams * staParams,
20777 wpt_uint16 usBcastStaIdx
20778)
20779{
20780 WDI_AddStaParams wdiAddSTAParam = {0};
20781 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
20782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20783
20784 /*---------------------------------------------------------------------
20785 Sanity check
20786 ---------------------------------------------------------------------*/
20787 if ( NULL == staParams )
20788 {
20789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020791
Jeff Johnsone7245742012-09-05 17:12:55 -070020792 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 }
20794
20795 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
20796 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
20797 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
20798 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
20799 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
20800 wdiAddSTAParam.dpuSig = staParams->dpuSig;
20801 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
20802 WDI_MAC_ADDR_LEN );
20803 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
20804 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
20805 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
20806 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
20807 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
20808 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
20809 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020810
Jeff Johnson295189b2012-06-20 16:38:30 -070020811 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
20812}
20813
20814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020815 @brief NV blob will be divided into fragments of size 4kb and
20816 Sent to HAL
20817
20818 @param pWDICtx: pointer to the WLAN DAL context
20819 pEventData: pointer to the event information structure
20820
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 @see
20822 @return Result of the function call
20823 */
20824
20825WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020826(
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 WDI_ControlBlockType* pWDICtx,
20828 WDI_EventInfoType* pEventData
20829)
20830{
20831
20832 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
20833 wpt_uint8* pSendBuffer = NULL;
20834 wpt_uint16 usDataOffset = 0;
20835 wpt_uint16 usSendSize = 0;
20836 wpt_uint16 usCurrentFragmentSize =0;
20837 wpt_uint8* pSrcBuffer = NULL;
20838 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
20839 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20840
20841 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
20842 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
20843 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
20844
Jeff Johnsone7245742012-09-05 17:12:55 -070020845 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070020846 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
20847
20848 /* Update the current Fragment Number */
20849 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
20850
20851 /*Update the HAL REQ structure */
20852 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
20853 halNvImgDownloadParam.nvImageReqParams.fragNumber =
20854 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
20855
20856 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 image will be sent to HAL*/
20859
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070020865 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
20866 usCurrentFragmentSize = FRAGMENT_SIZE;
20867
20868 /*Update the HAL REQ structure */
20869 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
20870 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
20871
20872 }
20873 else
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 usCurrentFragmentSize = FRAGMENT_SIZE;
20876
20877 /*Update the HAL REQ structure */
20878 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
20879 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
20880 }
20881
20882 /*-----------------------------------------------------------------------
20883 Get message buffer
20884 -----------------------------------------------------------------------*/
20885 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
20886 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
20887 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020888 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020889 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
20890 {
20891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20892 "Unable to get send buffer in NV Download req %x %x ",
20893 pEventData, pwdiNvDownloadReqParams);
20894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 }
20897
20898 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070020899 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
20901
20902 /* Appending the NV image fragment */
20903 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
20904 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
20905 usCurrentFragmentSize);
20906
20907 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020908 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020909
Jeff Johnsone7245742012-09-05 17:12:55 -070020910 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20911 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 WDI_NV_DOWNLOAD_RESP);
20913
20914}
Jeff Johnsone7245742012-09-05 17:12:55 -070020915/*============================================================================
20916 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070020917 ============================================================================*/
20918/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 @brief Helper routine used to find a session based on the BSSID
20920 @param pContext: pointer to the WLAN DAL context
20921 @param pDPContext: pointer to the Datapath context
20922
Jeff Johnson295189b2012-06-20 16:38:30 -070020923 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020924 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070020925*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020926WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020927WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
20928{
20929 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20930
20931 pCB->pDPContext = pDPContext;
20932 return;
20933}
20934
20935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020936 @brief Helper routine used to find a session based on the BSSID
20937
20938
20939 @param pContext: pointer to the WLAN DAL context
20940
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 @see
20942 @return pointer to Datapath context
20943*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020944WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020945WDI_DS_GetDatapathContext (void *pContext)
20946{
20947 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20948 return pCB->pDPContext;
20949}
20950/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020951 @brief Helper routine used to find a session based on the BSSID
20952
20953
20954 @param pContext: pointer to the WLAN DAL context
20955 @param pDTDriverContext: pointer to the Transport Driver context
20956
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 @see
20958 @return void
20959*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020960WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020961WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
20962{
20963 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20964
20965 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020966 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020967}
20968
20969/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020970 @brief Helper routine used to find a session based on the BSSID
20971
20972
20973 @param pWDICtx: pointer to the WLAN DAL context
20974
Jeff Johnson295189b2012-06-20 16:38:30 -070020975 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020976 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070020977*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020978WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020979WDT_GetTransportDriverContext (void *pContext)
20980{
20981 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020982 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070020983}
20984
Jeff Johnsone7245742012-09-05 17:12:55 -070020985/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070020986 Helper inline converters
20987 ============================================================================*/
20988/*Convert WDI driver type into HAL driver type*/
20989WPT_STATIC WPT_INLINE WDI_Status
20990WDI_HAL_2_WDI_STATUS
20991(
20992 eHalStatus halStatus
20993)
20994{
Jeff Johnsone7245742012-09-05 17:12:55 -070020995 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 the chances of getting inlined*/
20997 switch( halStatus )
20998 {
20999 case eHAL_STATUS_SUCCESS:
21000 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21001 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21002 return WDI_STATUS_SUCCESS;
21003 case eHAL_STATUS_FAILURE:
21004 return WDI_STATUS_E_FAILURE;
21005 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021006 return WDI_STATUS_MEM_FAILURE;
21007 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021008 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021009 default:
21010 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21011 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021012
Jeff Johnsone7245742012-09-05 17:12:55 -070021013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021014}/*WDI_HAL_2_WDI_STATUS*/
21015
21016/*Convert WDI request type into HAL request type*/
21017WPT_STATIC WPT_INLINE tHalHostMsgType
21018WDI_2_HAL_REQ_TYPE
21019(
21020 WDI_RequestEnumType wdiReqType
21021)
21022{
Jeff Johnsone7245742012-09-05 17:12:55 -070021023 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 the chances of getting inlined*/
21025 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021026 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021027 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021029 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021030 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021031 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021032 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021033 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021034 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021036 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021038 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021039 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021040 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021042 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021043 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021044 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021046 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021047 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021048 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021049 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021050 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021052 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021054 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021055 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021056 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021057 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021058 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021059 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 return WLAN_HAL_RMV_STAKEY_REQ;
21062 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021063 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021064 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021065 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021066 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021067 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021069 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 case WDI_DEL_BA_REQ:
21071 return WLAN_HAL_DEL_BA_REQ;
21072#ifdef FEATURE_WLAN_CCX
21073 case WDI_TSM_STATS_REQ:
21074 return WLAN_HAL_TSM_STATS_REQ;
21075#endif
21076 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021077 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021078 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021079 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021080 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021081 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021082 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021083 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021084 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021085 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021086 case WDI_ADD_BA_SESSION_REQ:
21087 return WLAN_HAL_ADD_BA_SESSION_REQ;
21088 case WDI_TRIGGER_BA_REQ:
21089 return WLAN_HAL_TRIGGER_BA_REQ;
21090 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021091 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021092 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021093 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021094 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21095 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21096 case WDI_SET_MAX_TX_POWER_REQ:
21097 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
21098#ifdef WLAN_FEATURE_P2P
21099 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21100 return WLAN_HAL_SET_P2P_GONOA_REQ;
21101#endif
21102 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021103 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021104 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021105 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021106 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021107 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021109 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021110 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021111 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021112 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021114 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021116 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021119 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021120 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021121 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021122 case WDI_REM_BEACON_FILTER_REQ:
21123 return WLAN_HAL_REM_BCN_FILTER_REQ;
21124 case WDI_SET_RSSI_THRESHOLDS_REQ:
21125 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21126 case WDI_HOST_OFFLOAD_REQ:
21127 return WLAN_HAL_HOST_OFFLOAD_REQ;
21128 case WDI_WOWL_ADD_BC_PTRN_REQ:
21129 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21130 case WDI_WOWL_DEL_BC_PTRN_REQ:
21131 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21132 case WDI_WOWL_ENTER_REQ:
21133 return WLAN_HAL_ENTER_WOWL_REQ;
21134 case WDI_WOWL_EXIT_REQ:
21135 return WLAN_HAL_EXIT_WOWL_REQ;
21136 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21137 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21138 case WDI_NV_DOWNLOAD_REQ:
21139 return WLAN_HAL_DOWNLOAD_NV_REQ;
21140 case WDI_FLUSH_AC_REQ:
21141 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21142 case WDI_BTAMP_EVENT_REQ:
21143 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21144#ifdef WLAN_FEATURE_VOWIFI_11R
21145 case WDI_AGGR_ADD_TS_REQ:
21146 return WLAN_HAL_AGGR_ADD_TS_REQ;
21147#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070021148 case WDI_FTM_CMD_REQ:
21149 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021150 case WDI_ADD_STA_SELF_REQ:
21151 return WLAN_HAL_ADD_STA_SELF_REQ;
21152 case WDI_DEL_STA_SELF_REQ:
21153 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021154#ifdef FEATURE_OEM_DATA_SUPPORT
21155 case WDI_START_OEM_DATA_REQ:
21156 return WLAN_HAL_START_OEM_DATA_REQ;
21157#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021158 case WDI_HOST_RESUME_REQ:
21159 return WLAN_HAL_HOST_RESUME_REQ;
21160 case WDI_HOST_SUSPEND_IND:
21161 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021162 case WDI_TRAFFIC_STATS_IND:
21163 return WLAN_HAL_CLASS_B_STATS_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 case WDI_KEEP_ALIVE_REQ:
21165 return WLAN_HAL_KEEP_ALIVE_REQ;
21166
21167#ifdef FEATURE_WLAN_SCAN_PNO
21168 case WDI_SET_PREF_NETWORK_REQ:
21169 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21170 case WDI_SET_RSSI_FILTER_REQ:
21171 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21172 case WDI_UPDATE_SCAN_PARAMS_REQ:
21173 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21174#endif // FEATURE_WLAN_SCAN_PNO
21175 case WDI_SET_TX_PER_TRACKING_REQ:
21176 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21177#ifdef WLAN_FEATURE_PACKET_FILTERING
21178 case WDI_8023_MULTICAST_LIST_REQ:
21179 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21180 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021182 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21183 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21184 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21185 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21186#endif // WLAN_FEATURE_PACKET_FILTERING
21187 case WDI_HAL_DUMP_CMD_REQ:
21188 return WLAN_HAL_DUMP_COMMAND_REQ;
21189#ifdef WLAN_FEATURE_GTK_OFFLOAD
21190 case WDI_GTK_OFFLOAD_REQ:
21191 return WLAN_HAL_GTK_OFFLOAD_REQ;
21192 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21193 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21194#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21195
21196 case WDI_INIT_SCAN_CON_REQ:
21197 return WLAN_HAL_INIT_SCAN_CON_REQ;
21198 case WDI_SET_POWER_PARAMS_REQ:
21199 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21200 case WDI_SET_TM_LEVEL_REQ:
21201 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21202 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21203 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021204#ifdef WLAN_FEATURE_11AC
21205 case WDI_UPDATE_VHT_OP_MODE_REQ:
21206 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21207#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021208 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021209 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021210 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021211
Jeff Johnson295189b2012-06-20 16:38:30 -070021212}/*WDI_2_HAL_REQ_TYPE*/
21213
21214/*Convert WDI response type into HAL response type*/
21215WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21216HAL_2_WDI_RSP_TYPE
21217(
21218 tHalHostMsgType halMsg
21219)
21220{
Jeff Johnsone7245742012-09-05 17:12:55 -070021221 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021222 the chances of getting inlined*/
21223 switch( halMsg )
21224 {
21225 case WLAN_HAL_START_RSP:
21226 return WDI_START_RESP;
21227 case WLAN_HAL_STOP_RSP:
21228 return WDI_STOP_RESP;
21229 case WLAN_HAL_INIT_SCAN_RSP:
21230 return WDI_INIT_SCAN_RESP;
21231 case WLAN_HAL_START_SCAN_RSP:
21232 return WDI_START_SCAN_RESP;
21233 case WLAN_HAL_END_SCAN_RSP:
21234 return WDI_END_SCAN_RESP;
21235 case WLAN_HAL_FINISH_SCAN_RSP:
21236 return WDI_FINISH_SCAN_RESP;
21237 case WLAN_HAL_CONFIG_STA_RSP:
21238 return WDI_CONFIG_STA_RESP;
21239 case WLAN_HAL_DELETE_STA_RSP:
21240 return WDI_DEL_STA_RESP;
21241 case WLAN_HAL_CONFIG_BSS_RSP:
21242 return WDI_CONFIG_BSS_RESP;
21243 case WLAN_HAL_DELETE_BSS_RSP:
21244 return WDI_DEL_BSS_RESP;
21245 case WLAN_HAL_JOIN_RSP:
21246 return WDI_JOIN_RESP;
21247 case WLAN_HAL_POST_ASSOC_RSP:
21248 return WDI_POST_ASSOC_RESP;
21249 case WLAN_HAL_SET_BSSKEY_RSP:
21250 return WDI_SET_BSS_KEY_RESP;
21251 case WLAN_HAL_SET_STAKEY_RSP:
21252 return WDI_SET_STA_KEY_RESP;
21253 case WLAN_HAL_RMV_BSSKEY_RSP:
21254 return WDI_RMV_BSS_KEY_RESP;
21255 case WLAN_HAL_RMV_STAKEY_RSP:
21256 return WDI_RMV_STA_KEY_RESP;
21257 case WLAN_HAL_SET_BCASTKEY_RSP:
21258 return WDI_SET_STA_BCAST_KEY_RESP;
21259 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21260 // return WDI_RMV_STA_BCAST_KEY_RESP;
21261 case WLAN_HAL_ADD_TS_RSP:
21262 return WDI_ADD_TS_RESP;
21263 case WLAN_HAL_DEL_TS_RSP:
21264 return WDI_DEL_TS_RESP;
21265 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21266 return WDI_UPD_EDCA_PRMS_RESP;
21267 case WLAN_HAL_ADD_BA_RSP:
21268 return WDI_ADD_BA_RESP;
21269 case WLAN_HAL_DEL_BA_RSP:
21270 return WDI_DEL_BA_RESP;
21271#ifdef FEATURE_WLAN_CCX
21272 case WLAN_HAL_TSM_STATS_RSP:
21273 return WDI_TSM_STATS_RESP;
21274#endif
21275 case WLAN_HAL_CH_SWITCH_RSP:
21276 return WDI_CH_SWITCH_RESP;
21277 case WLAN_HAL_SET_LINK_ST_RSP:
21278 return WDI_SET_LINK_ST_RESP;
21279 case WLAN_HAL_GET_STATS_RSP:
21280 return WDI_GET_STATS_RESP;
21281 case WLAN_HAL_UPDATE_CFG_RSP:
21282 return WDI_UPDATE_CFG_RESP;
21283 case WLAN_HAL_ADD_BA_SESSION_RSP:
21284 return WDI_ADD_BA_SESSION_RESP;
21285 case WLAN_HAL_TRIGGER_BA_RSP:
21286 return WDI_TRIGGER_BA_RESP;
21287 case WLAN_HAL_UPDATE_BEACON_RSP:
21288 return WDI_UPD_BCON_PRMS_RESP;
21289 case WLAN_HAL_SEND_BEACON_RSP:
21290 return WDI_SND_BCON_RESP;
21291 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21292 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21293 /*Indications*/
21294 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21295 return WDI_HAL_RSSI_NOTIFICATION_IND;
21296 case WLAN_HAL_MISSED_BEACON_IND:
21297 return WDI_HAL_MISSED_BEACON_IND;
21298 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21299 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21300 case WLAN_HAL_MIC_FAILURE_IND:
21301 return WDI_HAL_MIC_FAILURE_IND;
21302 case WLAN_HAL_FATAL_ERROR_IND:
21303 return WDI_HAL_FATAL_ERROR_IND;
21304 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21305 return WDI_HAL_DEL_STA_IND;
21306 case WLAN_HAL_COEX_IND:
21307 return WDI_HAL_COEX_IND;
21308 case WLAN_HAL_OTA_TX_COMPL_IND:
21309 return WDI_HAL_TX_COMPLETE_IND;
21310#ifdef WLAN_FEATURE_P2P
21311 case WLAN_HAL_P2P_NOA_ATTR_IND:
21312 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021313 case WLAN_HAL_P2P_NOA_START_IND:
21314 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021315#endif
21316 case WLAN_HAL_TX_PER_HIT_IND:
21317 return WDI_HAL_TX_PER_HIT_IND;
21318 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21319 return WDI_SET_MAX_TX_POWER_RESP;
21320#ifdef WLAN_FEATURE_P2P
21321 case WLAN_HAL_SET_P2P_GONOA_RSP:
21322 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
21323#endif
21324 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021325 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021326 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021327 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021328 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021329 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021330 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021338 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021339 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021340 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021341 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021342 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21343 return WDI_SET_BEACON_FILTER_RESP;
21344 case WLAN_HAL_REM_BCN_FILTER_RSP:
21345 return WDI_REM_BEACON_FILTER_RESP;
21346 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21347 return WDI_SET_RSSI_THRESHOLDS_RESP;
21348 case WLAN_HAL_HOST_OFFLOAD_RSP:
21349 return WDI_HOST_OFFLOAD_RESP;
21350 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21351 return WDI_WOWL_ADD_BC_PTRN_RESP;
21352 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21353 return WDI_WOWL_DEL_BC_PTRN_RESP;
21354 case WLAN_HAL_ENTER_WOWL_RSP:
21355 return WDI_WOWL_ENTER_RESP;
21356 case WLAN_HAL_EXIT_WOWL_RSP:
21357 return WDI_WOWL_EXIT_RESP;
21358 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21359 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21360 case WLAN_HAL_DOWNLOAD_NV_RSP:
21361 return WDI_NV_DOWNLOAD_RESP;
21362 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21363 return WDI_FLUSH_AC_RESP;
21364 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21365 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021366 case WLAN_HAL_PROCESS_PTT_RSP:
21367 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021368 case WLAN_HAL_ADD_STA_SELF_RSP:
21369 return WDI_ADD_STA_SELF_RESP;
21370case WLAN_HAL_DEL_STA_SELF_RSP:
21371 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021372#ifdef FEATURE_OEM_DATA_SUPPORT
21373 case WLAN_HAL_START_OEM_DATA_RSP:
21374 return WDI_START_OEM_DATA_RESP;
21375#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021376 case WLAN_HAL_HOST_RESUME_RSP:
21377 return WDI_HOST_RESUME_RESP;
21378 case WLAN_HAL_KEEP_ALIVE_RSP:
21379 return WDI_KEEP_ALIVE_RESP;
21380#ifdef FEATURE_WLAN_SCAN_PNO
21381 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21382 return WDI_SET_PREF_NETWORK_RESP;
21383 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021384 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021385 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21386 return WDI_UPDATE_SCAN_PARAMS_RESP;
21387 case WLAN_HAL_PREF_NETW_FOUND_IND:
21388 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21389#endif // FEATURE_WLAN_SCAN_PNO
21390 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21391 return WDI_SET_TX_PER_TRACKING_RESP;
21392#ifdef WLAN_FEATURE_PACKET_FILTERING
21393 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21394 return WDI_8023_MULTICAST_LIST_RESP;
21395 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21396 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21397 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21398 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21399 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21400 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21401#endif // WLAN_FEATURE_PACKET_FILTERING
21402
21403 case WLAN_HAL_DUMP_COMMAND_RSP:
21404 return WDI_HAL_DUMP_CMD_RESP;
21405 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21406 return WDI_SET_POWER_PARAMS_RESP;
21407#ifdef WLAN_FEATURE_VOWIFI_11R
21408 case WLAN_HAL_AGGR_ADD_TS_RSP:
21409 return WDI_AGGR_ADD_TS_RESP;
21410#endif
21411
21412#ifdef WLAN_FEATURE_GTK_OFFLOAD
21413 case WLAN_HAL_GTK_OFFLOAD_RSP:
21414 return WDI_GTK_OFFLOAD_RESP;
21415 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21416 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21417#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21418#ifdef WLAN_WAKEUP_EVENTS
21419 case WLAN_HAL_WAKE_REASON_IND:
21420 return WDI_HAL_WAKE_REASON_IND;
21421#endif // WLAN_WAKEUP_EVENTS
21422
21423 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21424 return WDI_SET_TM_LEVEL_RESP;
21425 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21426 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021427#ifdef WLAN_FEATURE_11AC
21428 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21429 return WDI_UPDATE_VHT_OP_MODE_RESP;
21430#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021431 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021432 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021433 }
21434
21435}/*HAL_2_WDI_RSP_TYPE*/
21436
21437
21438/*Convert WDI driver type into HAL driver type*/
21439WPT_STATIC WPT_INLINE tDriverType
21440WDI_2_HAL_DRV_TYPE
21441(
21442 WDI_DriverType wdiDriverType
21443)
21444{
Jeff Johnsone7245742012-09-05 17:12:55 -070021445 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021446 the chances of getting inlined*/
21447 switch( wdiDriverType )
21448 {
21449 case WDI_DRIVER_TYPE_PRODUCTION:
21450 return eDRIVER_TYPE_PRODUCTION;
21451 case WDI_DRIVER_TYPE_MFG:
21452 return eDRIVER_TYPE_MFG;
21453 case WDI_DRIVER_TYPE_DVT:
21454 return eDRIVER_TYPE_DVT;
21455 }
21456
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021458}/*WDI_2_HAL_DRV_TYPE*/
21459
21460
21461/*Convert WDI stop reason into HAL stop reason*/
21462WPT_STATIC WPT_INLINE tHalStopType
21463WDI_2_HAL_STOP_REASON
21464(
21465 WDI_StopType wdiDriverType
21466)
21467{
Jeff Johnsone7245742012-09-05 17:12:55 -070021468 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021469 the chances of getting inlined*/
21470 switch( wdiDriverType )
21471 {
21472 case WDI_STOP_TYPE_SYS_RESET:
21473 return HAL_STOP_TYPE_SYS_RESET;
21474 case WDI_DRIVER_TYPE_MFG:
21475 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21476 case WDI_STOP_TYPE_RF_KILL:
21477 return HAL_STOP_TYPE_RF_KILL;
21478 }
21479
Jeff Johnsone7245742012-09-05 17:12:55 -070021480 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021481}/*WDI_2_HAL_STOP_REASON*/
21482
21483
21484/*Convert WDI scan mode type into HAL scan mode type*/
21485WPT_STATIC WPT_INLINE eHalSysMode
21486WDI_2_HAL_SCAN_MODE
21487(
21488 WDI_ScanMode wdiScanMode
21489)
21490{
Jeff Johnsone7245742012-09-05 17:12:55 -070021491 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021492 the chances of getting inlined*/
21493 switch( wdiScanMode )
21494 {
21495 case WDI_SCAN_MODE_NORMAL:
21496 return eHAL_SYS_MODE_NORMAL;
21497 case WDI_SCAN_MODE_LEARN:
21498 return eHAL_SYS_MODE_LEARN;
21499 case WDI_SCAN_MODE_SCAN:
21500 return eHAL_SYS_MODE_SCAN;
21501 case WDI_SCAN_MODE_PROMISC:
21502 return eHAL_SYS_MODE_PROMISC;
21503 case WDI_SCAN_MODE_SUSPEND_LINK:
21504 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021505 case WDI_SCAN_MODE_ROAM_SCAN:
21506 return eHAL_SYS_MODE_ROAM_SCAN;
21507 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21508 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021509 }
21510
Jeff Johnsone7245742012-09-05 17:12:55 -070021511 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021512}/*WDI_2_HAL_SCAN_MODE*/
21513
21514/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021515WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021516WDI_2_HAL_SEC_CH_OFFSET
21517(
21518 WDI_HTSecondaryChannelOffset wdiSecChOffset
21519)
21520{
Jeff Johnsone7245742012-09-05 17:12:55 -070021521 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021522 the chances of getting inlined*/
21523 switch( wdiSecChOffset )
21524 {
21525 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021527 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021528 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021530 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21531#ifdef WLAN_FEATURE_11AC
21532 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21533 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21534 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21535 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21536 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21537 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21538 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21539 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21540 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21541 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21542 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21543 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21544 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21545 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21546#endif
21547 default:
21548 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 }
21550
Jeff Johnsone7245742012-09-05 17:12:55 -070021551 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021552}/*WDI_2_HAL_SEC_CH_OFFSET*/
21553
21554/*Convert WDI BSS type into HAL BSS type*/
21555WPT_STATIC WPT_INLINE tSirBssType
21556WDI_2_HAL_BSS_TYPE
21557(
21558 WDI_BssType wdiBSSType
21559)
21560{
Jeff Johnsone7245742012-09-05 17:12:55 -070021561 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021562 the chances of getting inlined*/
21563 switch( wdiBSSType )
21564 {
21565 case WDI_INFRASTRUCTURE_MODE:
21566 return eSIR_INFRASTRUCTURE_MODE;
21567 case WDI_INFRA_AP_MODE:
21568 return eSIR_INFRA_AP_MODE;
21569 case WDI_IBSS_MODE:
21570 return eSIR_IBSS_MODE;
21571 case WDI_BTAMP_STA_MODE:
21572 return eSIR_BTAMP_STA_MODE;
21573 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021574 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021575 case WDI_BSS_AUTO_MODE:
21576 return eSIR_AUTO_MODE;
21577 }
21578
Jeff Johnsone7245742012-09-05 17:12:55 -070021579 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021580}/*WDI_2_HAL_BSS_TYPE*/
21581
21582/*Convert WDI NW type into HAL NW type*/
21583WPT_STATIC WPT_INLINE tSirNwType
21584WDI_2_HAL_NW_TYPE
21585(
21586 WDI_NwType wdiNWType
21587)
21588{
Jeff Johnsone7245742012-09-05 17:12:55 -070021589 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021590 the chances of getting inlined*/
21591 switch( wdiNWType )
21592 {
21593 case WDI_11A_NW_TYPE:
21594 return eSIR_11A_NW_TYPE;
21595 case WDI_11B_NW_TYPE:
21596 return eSIR_11B_NW_TYPE;
21597 case WDI_11G_NW_TYPE:
21598 return eSIR_11G_NW_TYPE;
21599 case WDI_11N_NW_TYPE:
21600 return eSIR_11N_NW_TYPE;
21601 }
21602
Jeff Johnsone7245742012-09-05 17:12:55 -070021603 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021604}/*WDI_2_HAL_NW_TYPE*/
21605
21606/*Convert WDI chanel bonding type into HAL cb type*/
21607WPT_STATIC WPT_INLINE ePhyChanBondState
21608WDI_2_HAL_CB_STATE
21609(
21610 WDI_PhyChanBondState wdiCbState
21611)
21612{
Jeff Johnsone7245742012-09-05 17:12:55 -070021613 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 the chances of getting inlined*/
21615 switch ( wdiCbState )
21616 {
21617 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
21618 return PHY_SINGLE_CHANNEL_CENTERED;
21619 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
21620 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
21621 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
21622 return PHY_DOUBLE_CHANNEL_CENTERED;
21623 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
21624 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070021625#ifdef WLAN_FEATURE_11AC
21626 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21627 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21628 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21629 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
21630 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21631 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21632 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21633 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21634 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21635 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
21636 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21637 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21638 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21639 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21640#endif
21641 case WDI_MAX_CB_STATE:
21642 default:
21643 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021644 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021645
Jeff Johnson295189b2012-06-20 16:38:30 -070021646 return PHY_CHANNEL_BONDING_STATE_MAX;
21647}/*WDI_2_HAL_CB_STATE*/
21648
21649/*Convert WDI chanel bonding type into HAL cb type*/
21650WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
21651WDI_2_HAL_HT_OPER_MODE
21652(
21653 WDI_HTOperatingMode wdiHTOperMode
21654)
21655{
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 the chances of getting inlined*/
21658 switch ( wdiHTOperMode )
21659 {
21660 case WDI_HT_OP_MODE_PURE:
21661 return eSIR_HT_OP_MODE_PURE;
21662 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
21663 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
21664 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
21665 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
21666 case WDI_HT_OP_MODE_MIXED:
21667 return eSIR_HT_OP_MODE_MIXED;
21668 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021669
Jeff Johnson295189b2012-06-20 16:38:30 -070021670 return eSIR_HT_OP_MODE_MAX;
21671}/*WDI_2_HAL_HT_OPER_MODE*/
21672
21673/*Convert WDI mimo PS type into HAL mimo PS type*/
21674WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
21675WDI_2_HAL_MIMO_PS
21676(
21677 WDI_HTMIMOPowerSaveState wdiHTOperMode
21678)
21679{
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 the chances of getting inlined*/
21682 switch ( wdiHTOperMode )
21683 {
21684 case WDI_HT_MIMO_PS_STATIC:
21685 return eSIR_HT_MIMO_PS_STATIC;
21686 case WDI_HT_MIMO_PS_DYNAMIC:
21687 return eSIR_HT_MIMO_PS_DYNAMIC;
21688 case WDI_HT_MIMO_PS_NA:
21689 return eSIR_HT_MIMO_PS_NA;
21690 case WDI_HT_MIMO_PS_NO_LIMIT:
21691 return eSIR_HT_MIMO_PS_NO_LIMIT;
21692 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021693
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 return eSIR_HT_MIMO_PS_MAX;
21695}/*WDI_2_HAL_MIMO_PS*/
21696
21697/*Convert WDI ENC type into HAL ENC type*/
21698WPT_STATIC WPT_INLINE tAniEdType
21699WDI_2_HAL_ENC_TYPE
21700(
21701 WDI_EncryptType wdiEncType
21702)
21703{
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 the chances of getting inlined*/
21706 switch ( wdiEncType )
21707 {
21708 case WDI_ENCR_NONE:
21709 return eSIR_ED_NONE;
21710
21711 case WDI_ENCR_WEP40:
21712 return eSIR_ED_WEP40;
21713
21714 case WDI_ENCR_WEP104:
21715 return eSIR_ED_WEP104;
21716
21717 case WDI_ENCR_TKIP:
21718 return eSIR_ED_TKIP;
21719
21720 case WDI_ENCR_CCMP:
21721 return eSIR_ED_CCMP;
21722
21723 case WDI_ENCR_AES_128_CMAC:
21724 return eSIR_ED_AES_128_CMAC;
21725#if defined(FEATURE_WLAN_WAPI)
21726 case WDI_ENCR_WPI:
21727 return eSIR_ED_WPI;
21728#endif
21729 default:
21730 return eSIR_ED_NOT_IMPLEMENTED;
21731 }
21732
21733}/*WDI_2_HAL_ENC_TYPE*/
21734
21735/*Convert WDI WEP type into HAL WEP type*/
21736WPT_STATIC WPT_INLINE tAniWepType
21737WDI_2_HAL_WEP_TYPE
21738(
21739 WDI_WepType wdiWEPType
21740)
21741{
Jeff Johnsone7245742012-09-05 17:12:55 -070021742 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021743 the chances of getting inlined*/
21744 switch ( wdiWEPType )
21745 {
21746 case WDI_WEP_STATIC:
21747 return eSIR_WEP_STATIC;
21748
21749 case WDI_WEP_DYNAMIC:
21750 return eSIR_WEP_DYNAMIC;
21751 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021752
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 return eSIR_WEP_MAX;
21754}/*WDI_2_HAL_WEP_TYPE*/
21755
21756WPT_STATIC WPT_INLINE tSirLinkState
21757WDI_2_HAL_LINK_STATE
21758(
21759 WDI_LinkStateType wdiLinkState
21760)
21761{
Jeff Johnsone7245742012-09-05 17:12:55 -070021762 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 the chances of getting inlined*/
21764 switch ( wdiLinkState )
21765 {
21766 case WDI_LINK_IDLE_STATE:
21767 return eSIR_LINK_IDLE_STATE;
21768
21769 case WDI_LINK_PREASSOC_STATE:
21770 return eSIR_LINK_PREASSOC_STATE;
21771
21772 case WDI_LINK_POSTASSOC_STATE:
21773 return eSIR_LINK_POSTASSOC_STATE;
21774
21775 case WDI_LINK_AP_STATE:
21776 return eSIR_LINK_AP_STATE;
21777
21778 case WDI_LINK_IBSS_STATE:
21779 return eSIR_LINK_IBSS_STATE;
21780
21781 case WDI_LINK_BTAMP_PREASSOC_STATE:
21782 return eSIR_LINK_BTAMP_PREASSOC_STATE;
21783
21784 case WDI_LINK_BTAMP_POSTASSOC_STATE:
21785 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
21786
21787 case WDI_LINK_BTAMP_AP_STATE:
21788 return eSIR_LINK_BTAMP_AP_STATE;
21789
21790 case WDI_LINK_BTAMP_STA_STATE:
21791 return eSIR_LINK_BTAMP_STA_STATE;
21792
21793 case WDI_LINK_LEARN_STATE:
21794 return eSIR_LINK_LEARN_STATE;
21795
21796 case WDI_LINK_SCAN_STATE:
21797 return eSIR_LINK_SCAN_STATE;
21798
21799 case WDI_LINK_FINISH_SCAN_STATE:
21800 return eSIR_LINK_FINISH_SCAN_STATE;
21801
21802 case WDI_LINK_INIT_CAL_STATE:
21803 return eSIR_LINK_INIT_CAL_STATE;
21804
21805 case WDI_LINK_FINISH_CAL_STATE:
21806 return eSIR_LINK_FINISH_CAL_STATE;
21807
21808#ifdef WLAN_FEATURE_P2P
21809 case WDI_LINK_LISTEN_STATE:
21810 return eSIR_LINK_LISTEN_STATE;
21811#endif
21812
21813 default:
21814 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070021815 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021816}
21817
Jeff Johnsone7245742012-09-05 17:12:55 -070021818/*Translate a STA Context from WDI into HAL*/
21819WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070021820void
21821WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070021822(
Jeff Johnson295189b2012-06-20 16:38:30 -070021823 tConfigStaParams* phalConfigSta,
21824 WDI_ConfigStaReqInfoType* pwdiConfigSta
21825)
21826{
21827 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070021828#ifdef WLAN_FEATURE_11AC
21829 /* Get the Version 1 Handler */
21830 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
21831 if (WDI_getFwWlanFeatCaps(DOT11AC))
21832 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021833 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070021834 }
21835#endif
21836 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021837 the chances of getting inlined*/
21838
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 wpalMemoryCopy(phalConfigSta->bssId,
21840 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
21841
21842 wpalMemoryCopy(phalConfigSta->staMac,
21843 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070021844
21845 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
21846 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
21847 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
21848 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
21849 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
21850 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
21851 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
21852 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
21853 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
21854 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
21855 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
21856 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
21857 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
21858 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
21859 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
21860 phalConfigSta->action = pwdiConfigSta->wdiAction;
21861 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
21862 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
21863 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
21864 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
21865 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
21866 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
21867 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070021868
Jeff Johnson295189b2012-06-20 16:38:30 -070021869 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
21870
Jeff Johnsone7245742012-09-05 17:12:55 -070021871 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070021872 pwdiConfigSta->wdiSupportedRates.opRateMode;
21873 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
21874 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021875 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021876 pwdiConfigSta->wdiSupportedRates.llbRates[i];
21877 }
21878 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
21879 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021880 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 pwdiConfigSta->wdiSupportedRates.llaRates[i];
21882 }
21883 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
21884 {
21885 phalConfigSta->supportedRates.aniLegacyRates[i] =
21886 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
21887 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021888 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070021889 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
21890 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
21891 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021892 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
21894 }
21895 phalConfigSta->supportedRates.rxHighestDataRate =
21896 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
21897
Jeff Johnsone7245742012-09-05 17:12:55 -070021898#ifdef WLAN_FEATURE_11AC
21899 if(phalConfigSta_V1 != NULL)
21900 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021901 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
21902 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
21903 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
21904 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070021905 }
21906#endif
21907
Jeff Johnson295189b2012-06-20 16:38:30 -070021908#ifdef WLAN_FEATURE_P2P
21909 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
21910#endif
21911
Jeff Johnsone7245742012-09-05 17:12:55 -070021912#ifdef WLAN_FEATURE_11AC
21913 if(phalConfigSta_V1 != NULL)
21914 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021915 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
21916 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080021917 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080021918 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
21919 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
21920
Jeff Johnsone7245742012-09-05 17:12:55 -070021921 }
21922#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021923}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070021924
21925/*Translate a Rate set info from WDI into HAL*/
21926WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021927WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070021928(
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 tSirMacRateSet* pHalRateSet,
21930 WDI_RateSet* pwdiRateSet
21931)
21932{
Jeff Johnsone7245742012-09-05 17:12:55 -070021933 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21935
21936 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
21937 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
21938
21939 for ( i = 0; i < pHalRateSet->numRates; i++ )
21940 {
21941 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
21942 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021943
Jeff Johnson295189b2012-06-20 16:38:30 -070021944}/*WDI_CopyWDIRateSetToHALRateSet*/
21945
21946
21947/*Translate an EDCA Parameter Record from WDI into HAL*/
21948WPT_STATIC WPT_INLINE void
21949WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070021950(
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 tSirMacEdcaParamRecord* phalEdcaParam,
21952 WDI_EdcaParamRecord* pWDIEdcaParam
21953)
21954{
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021956 the chances of getting inlined*/
21957
21958 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
21959 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
21960 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
21961 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
21962
21963 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
21964 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
21965 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
21966}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
21967
21968
21969/*Copy a management frame header from WDI fmt into HAL fmt*/
21970WPT_STATIC WPT_INLINE void
21971WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
21972(
21973 tSirMacMgmtHdr* pmacMgmtHdr,
21974 WDI_MacMgmtHdr* pwdiMacMgmtHdr
21975)
21976{
21977 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
21978 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
21979 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
21980 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
21981 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
21982 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
21983 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
21984 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
21985 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
21986 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
21987 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
21988
21989 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
21990 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
21991
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021996 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070021997 pwdiMacMgmtHdr->bssId, 6);
21998
21999 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22000 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22001 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22002
22003}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22004
22005
22006/*Copy config bss parameters from WDI fmt into HAL fmt*/
22007WPT_STATIC WPT_INLINE void
22008WDI_CopyWDIConfigBSSToHALConfigBSS
22009(
22010 tConfigBssParams* phalConfigBSS,
22011 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22012)
22013{
22014
22015 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022016#ifdef WLAN_FEATURE_11AC
22017 /* Get the Version 1 Handler */
22018 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22019 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022020 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022021#endif
22022
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 wpalMemoryCopy( phalConfigBSS->bssId,
22024 pwdiConfigBSS->macBSSID,
22025 WDI_MAC_ADDR_LEN);
22026
22027#ifdef HAL_SELF_STA_PER_BSS
22028 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22029 pwdiConfigBSS->macSelfAddr,
22030 WDI_MAC_ADDR_LEN);
22031#endif
22032
22033 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22034
22035 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22036 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22037
Jeff Johnsone7245742012-09-05 17:12:55 -070022038 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022039 pwdiConfigBSS->ucShortSlotTimeSupported;
22040 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22041 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22042 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22043 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22044 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022045 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22047 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22048 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22049 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22050 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22051 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22052 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22053 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22054 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22055 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22056 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22057
Jeff Johnsone7245742012-09-05 17:12:55 -070022058 phalConfigBSS->htOperMode =
22059 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022060
22061 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22062 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22063 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22064 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22065
22066#ifdef WLAN_FEATURE_VOWIFI
22067 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22068#endif
22069
22070 /*! Used 32 as magic number because that is how the ssid is declared inside the
22071 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022072 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022073 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22074 pwdiConfigBSS->wdiSSID.ucLength : 32;
22075 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022076 pwdiConfigBSS->wdiSSID.sSSID,
22077 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022078
22079 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22080 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022081
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22083 &pwdiConfigBSS->wdiRateSet);
22084
22085 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22086
22087 if(phalConfigBSS->edcaParamsValid)
22088 {
22089 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22090 &pwdiConfigBSS->wdiBEEDCAParams);
22091 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22092 &pwdiConfigBSS->wdiBKEDCAParams);
22093 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22094 &pwdiConfigBSS->wdiVIEDCAParams);
22095 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22096 &pwdiConfigBSS->wdiVOEDCAParams);
22097 }
22098
Jeff Johnsone7245742012-09-05 17:12:55 -070022099 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022100
22101 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22102
22103#ifdef WLAN_FEATURE_VOWIFI_11R
22104
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022107
Jeff Johnson295189b2012-06-20 16:38:30 -070022108 if( phalConfigBSS->extSetStaKeyParamValid )
22109 {
22110 /*-----------------------------------------------------------------------
22111 Copy the STA Key parameters into the HAL message
22112 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022113 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22115
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22118
22119 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22120
22121 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22122
22123 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22124
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22126 keyIndex++)
22127 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22130 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22131 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22132 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22133 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22134 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022135 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022136 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022137 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022138 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022139 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022140 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22141 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 WDI_MAX_KEY_LENGTH);
22144 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 }
22146 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22147 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022148 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022149 sizeof(phalConfigBSS->extSetStaKeyParam) );
22150 }
22151
22152#endif /*WLAN_FEATURE_VOWIFI_11R*/
22153
Jeff Johnsone7245742012-09-05 17:12:55 -070022154#ifdef WLAN_FEATURE_11AC
22155 if(phalConfigBSS_V1 != NULL)
22156 {
22157 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22158 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22159 }
22160#endif
22161
Jeff Johnson295189b2012-06-20 16:38:30 -070022162}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22163
22164
Jeff Johnsone7245742012-09-05 17:12:55 -070022165/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 pointed to by user data */
22167WPT_STATIC WPT_INLINE void
22168WDI_ExtractRequestCBFromEvent
22169(
22170 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022171 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022172 void** ppUserData
22173)
22174{
22175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22176 switch ( pEvent->wdiRequest )
22177 {
22178 case WDI_START_REQ:
22179 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22180 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22181 break;
22182 case WDI_STOP_REQ:
22183 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22184 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22185 break;
22186 case WDI_INIT_SCAN_REQ:
22187 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22188 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22189 break;
22190 case WDI_START_SCAN_REQ:
22191 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22192 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22193 break;
22194 case WDI_END_SCAN_REQ:
22195 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22196 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22197 break;
22198 case WDI_FINISH_SCAN_REQ:
22199 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22200 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22201 break;
22202 case WDI_JOIN_REQ:
22203 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22204 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22205 break;
22206 case WDI_CONFIG_BSS_REQ:
22207 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22208 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22209 break;
22210 case WDI_DEL_BSS_REQ:
22211 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22212 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22213 break;
22214 case WDI_POST_ASSOC_REQ:
22215 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22216 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22217 break;
22218 case WDI_DEL_STA_REQ:
22219 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22220 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22221 break;
22222 case WDI_DEL_STA_SELF_REQ:
22223 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22224 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22225 break;
22226
22227 case WDI_SET_BSS_KEY_REQ:
22228 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22229 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22230 break;
22231 case WDI_RMV_BSS_KEY_REQ:
22232 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22233 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22234 break;
22235 case WDI_SET_STA_KEY_REQ:
22236 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22237 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22238 break;
22239 case WDI_RMV_STA_KEY_REQ:
22240 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22241 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22242 break;
22243 case WDI_ADD_TS_REQ:
22244 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22245 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22246 break;
22247 case WDI_DEL_TS_REQ:
22248 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22249 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22250 break;
22251 case WDI_UPD_EDCA_PRMS_REQ:
22252 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22253 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22254 break;
22255 case WDI_ADD_BA_SESSION_REQ:
22256 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22257 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22258 break;
22259 case WDI_DEL_BA_REQ:
22260 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22261 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22262 break;
22263#ifdef FEATURE_WLAN_CCX
22264 case WDI_TSM_STATS_REQ:
22265 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22266 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22267 break;
22268#endif
22269 case WDI_CH_SWITCH_REQ:
22270 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22271 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22272 break;
22273 case WDI_CONFIG_STA_REQ:
22274 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22275 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22276 break;
22277 case WDI_SET_LINK_ST_REQ:
22278 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22279 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22280 break;
22281 case WDI_GET_STATS_REQ:
22282 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22283 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22284 break;
22285 case WDI_UPDATE_CFG_REQ:
22286 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22287 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22288 break;
22289 case WDI_ADD_BA_REQ:
22290 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22291 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22292 break;
22293 case WDI_TRIGGER_BA_REQ:
22294 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22295 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22296 break;
22297 case WDI_UPD_BCON_PRMS_REQ:
22298 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22299 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22300 break;
22301 case WDI_SND_BCON_REQ:
22302 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22303 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22304 break;
22305 case WDI_ENTER_BMPS_REQ:
22306 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22307 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22308 break;
22309 case WDI_EXIT_BMPS_REQ:
22310 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22311 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22312 break;
22313 case WDI_ENTER_UAPSD_REQ:
22314 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22315 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22316 break;
22317 case WDI_UPDATE_UAPSD_PARAM_REQ:
22318 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22319 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22320 break;
22321 case WDI_CONFIGURE_RXP_FILTER_REQ:
22322 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22323 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22324 break;
22325 case WDI_SET_BEACON_FILTER_REQ:
22326 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22327 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22328 break;
22329 case WDI_REM_BEACON_FILTER_REQ:
22330 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22331 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022333 case WDI_SET_RSSI_THRESHOLDS_REQ:
22334 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22335 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22336 break;
22337 case WDI_HOST_OFFLOAD_REQ:
22338 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22339 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22340 break;
22341 case WDI_WOWL_ADD_BC_PTRN_REQ:
22342 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22343 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22344 break;
22345 case WDI_WOWL_DEL_BC_PTRN_REQ:
22346 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22347 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22348 break;
22349 case WDI_WOWL_ENTER_REQ:
22350 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22351 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22352 break;
22353 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22354 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22355 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22356 break;
22357 case WDI_FLUSH_AC_REQ:
22358 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22359 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22360 break;
22361 case WDI_BTAMP_EVENT_REQ:
22362 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22363 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22364 break;
22365 case WDI_KEEP_ALIVE_REQ:
22366 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22367 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22368 break;
22369 case WDI_SET_TX_PER_TRACKING_REQ:
22370 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22371 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
22372 default:
22373 *ppfnReqCB = NULL;
22374 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 }
22377}/*WDI_ExtractRequestCBFromEvent*/
22378
22379
22380/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022381 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022382 frame xtl is enabled for a particular STA.
22383
22384 WDI_PostAssocReq must have been called.
22385
Jeff Johnsone7245742012-09-05 17:12:55 -070022386 @param uSTAIdx: STA index
22387
Jeff Johnson295189b2012-06-20 16:38:30 -070022388 @see WDI_PostAssocReq
22389 @return Result of the function call
22390*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022391wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022392WDI_IsHwFrameTxTranslationCapable
22393(
22394 wpt_uint8 uSTAIdx
22395)
22396{
Jeff Johnsone7245742012-09-05 17:12:55 -070022397 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 uma value*/
22399 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022400 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022401 ------------------------------------------------------------------------*/
22402 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22403 {
22404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22405 "WDI API call before module is initialized - Fail request");
22406
Jeff Johnsone7245742012-09-05 17:12:55 -070022407 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022408 }
22409
Gopichand Nakkalaba261272013-01-03 15:45:56 -080022410#ifdef WLAN_SOFTAP_VSTA_FEATURE
22411 if (IS_VSTA_IDX(uSTAIdx))
22412 {
22413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22414 "STA %d is a Virtual STA, "
22415 "HW frame translation disabled", uSTAIdx);
22416 return eWLAN_PAL_FALSE;
22417 }
22418#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070022419
Jeff Johnson295189b2012-06-20 16:38:30 -070022420 return gWDICb.bFrameTransEnabled;
22421}/*WDI_IsHwFrameTxTranslationCapable*/
22422
22423#ifdef FEATURE_WLAN_SCAN_PNO
22424/**
22425 @brief WDI_SetPreferredNetworkList
22426
Jeff Johnsone7245742012-09-05 17:12:55 -070022427 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022428 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022429
Jeff Johnson295189b2012-06-20 16:38:30 -070022430 wdiPNOScanCb: callback for passing back the response
22431 of the Set PNO operation received from the
22432 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022433
Jeff Johnson295189b2012-06-20 16:38:30 -070022434 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022435 callback
22436
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 @return Result of the function call
22438*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022439WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022440WDI_SetPreferredNetworkReq
22441(
22442 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22443 WDI_PNOScanCb wdiPNOScanCb,
22444 void* pUserData
22445)
22446{
22447 WDI_EventInfoType wdiEventData = {{0}};
22448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22449
22450 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022451 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022452 ------------------------------------------------------------------------*/
22453 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22454 {
22455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22456 "WDI API call before module is initialized - Fail request");
22457
Jeff Johnsone7245742012-09-05 17:12:55 -070022458 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 }
22460
22461 /*------------------------------------------------------------------------
22462 Fill in Event data and post to the Main FSM
22463 ------------------------------------------------------------------------*/
22464 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022465 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022467 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 wdiEventData.pUserData = pUserData;
22469
22470 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22471}
22472
22473
22474/**
22475 @brief WDI_SetRssiFilterReq
22476
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022479
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 wdiRssiFilterCb: callback for passing back the response
22481 of the Set RSSI Filter operation received from the
22482 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022483
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 callback
22486
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 @return Result of the function call
22488*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022489WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022490WDI_SetRssiFilterReq
22491(
22492 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22493 WDI_RssiFilterCb wdiRssiFilterCb,
22494 void* pUserData
22495)
22496{
22497 WDI_EventInfoType wdiEventData = {{0}};
22498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22499
22500 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022501 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 ------------------------------------------------------------------------*/
22503 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22504 {
22505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22506 "WDI API call before module is initialized - Fail request");
22507
Jeff Johnsone7245742012-09-05 17:12:55 -070022508 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022509 }
22510
22511 /*------------------------------------------------------------------------
22512 Fill in Event data and post to the Main FSM
22513 ------------------------------------------------------------------------*/
22514 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 wdiEventData.pUserData = pUserData;
22519
22520 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22521}/*WDI_SetRssiFilterReq*/
22522
22523/**
22524 @brief WDI_UpdateScanParamsReq
22525
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022528
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 wdiUpdateScanParamsCb: callback for passing back the response
22530 of the Set PNO operation received from the
22531 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022532
Jeff Johnson295189b2012-06-20 16:38:30 -070022533 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022534 callback
22535
Jeff Johnson295189b2012-06-20 16:38:30 -070022536 @return Result of the function call
22537*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022538WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022539WDI_UpdateScanParamsReq
22540(
22541 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22542 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22543 void* pUserData
22544)
22545{
22546 WDI_EventInfoType wdiEventData = {{0}};
22547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22548
22549 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022550 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 ------------------------------------------------------------------------*/
22552 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22553 {
22554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22555 "WDI API call before module is initialized - Fail request");
22556
Jeff Johnsone7245742012-09-05 17:12:55 -070022557 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022558 }
22559
22560 /*------------------------------------------------------------------------
22561 Fill in Event data and post to the Main FSM
22562 ------------------------------------------------------------------------*/
22563 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022564 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022565 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 wdiEventData.pUserData = pUserData;
22568
22569 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22570}
22571
22572/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022573 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022574 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022575
22576 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 pwdiPNOScanReqParams: pointer to the info received
22578 from upper layers
22579 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022580 and its size
22581
Jeff Johnson295189b2012-06-20 16:38:30 -070022582 @return Result of the function call
22583*/
22584
22585WDI_Status
22586WDI_PackPreferredNetworkList
22587(
22588 WDI_ControlBlockType* pWDICtx,
22589 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22590 wpt_uint8** ppSendBuffer,
22591 wpt_uint16* pSize
22592)
22593{
Jeff Johnsone7245742012-09-05 17:12:55 -070022594 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022595 wpt_uint16 usDataOffset = 0;
22596 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022597 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022598 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 /*-----------------------------------------------------------------------
22600 Get message buffer
22601 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022603 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022605 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022606 {
22607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22608 "Unable to get send buffer in Set PNO req %x ",
22609 pwdiPNOScanReqParams);
22610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022612 }
22613
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022614 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
22615
Jeff Johnson295189b2012-06-20 16:38:30 -070022616 /*-------------------------------------------------------------------------
22617 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22618 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022619 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022620 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022621 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022622 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22623
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022624 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022625 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022626 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022627 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022628 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22629
22630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022631 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022632 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22633 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22634 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22635
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022636 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 {
22638 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022639 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22641
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022642 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022644 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022645
22646 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022647 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022648 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022649
22650 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022651 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022652 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022653
Jeff Johnsone7245742012-09-05 17:12:55 -070022654 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022655 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022656 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070022657 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
22658 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22659 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
22660 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022661
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022662 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022663 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022664 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022665
22666 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022667 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22669
22670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022671 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022672 pPrefNetwListParams->aNetworks[i].ssId.length,
22673 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 }
22675
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022676 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022677 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022678 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22679 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22680 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22681
22682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022683 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022684 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022685 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22686 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22687
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022688 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022689 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022690 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022691 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022692 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22694 }
22695
22696 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022697 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022698 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22699 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22700 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022701 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022702
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022703 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022704 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022705 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022706
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022707 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022708 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22709 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22710 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022711 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022712
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022713 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022714 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022715 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022716
22717 /*Set the output values*/
22718 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022719 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022720
22721 return WDI_STATUS_SUCCESS;
22722}/*WDI_PackPreferredNetworkList*/
22723
22724/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022725 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022726 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022727
22728 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 pwdiPNOScanReqParams: pointer to the info received
22730 from upper layers
22731 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 and its size
22733
Jeff Johnson295189b2012-06-20 16:38:30 -070022734 @return Result of the function call
22735*/
22736
22737WDI_Status
22738WDI_PackPreferredNetworkListNew
22739(
22740 WDI_ControlBlockType* pWDICtx,
22741 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22742 wpt_uint8** ppSendBuffer,
22743 wpt_uint16* pSize
22744)
22745{
Jeff Johnsone7245742012-09-05 17:12:55 -070022746 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 wpt_uint16 usDataOffset = 0;
22748 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022749 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022750 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022751
22752 /*-----------------------------------------------------------------------
22753 Get message buffer
22754 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022756 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070022757 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022758 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 {
22760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22761 "Unable to get send buffer in Set PNO req %x ",
22762 pwdiPNOScanReqParams);
22763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022765 }
22766
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022767 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
22768
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 /*-------------------------------------------------------------------------
22770 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22771 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022772 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022773 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022774 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022775 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22776
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022777 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022778 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022779 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022780 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022781 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22782
22783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022784 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022785 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22786 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22787 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22788
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022789 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022790 {
22791 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022792 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22794
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022795 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022796 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022797 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022798
22799 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022800 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022801 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022802
22803 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022804 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022806
22807 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022808 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070022809 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022810
Jeff Johnsone7245742012-09-05 17:12:55 -070022811 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022813 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
22815
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022816 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022817 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022818 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022819
22820 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022821 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22823
22824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022825 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022826 pPrefNetwListParams->aNetworks[i].ssId.length,
22827 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022828 }
22829
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022830 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022831 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22833 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22834 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22835
22836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022837 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022838 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22840 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22841
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022842 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022843 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022844 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022845 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022846 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22848 }
22849
22850 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022851 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022852 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22853 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22854 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022855 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022856
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022857 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022858 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022859 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022860
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022861 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022862 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22863 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22864 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022865 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022866
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022867 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022868 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022869 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022870
Jeff Johnson295189b2012-06-20 16:38:30 -070022871
22872 /*Set the output values*/
22873 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022874 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022875
22876 return WDI_STATUS_SUCCESS;
22877}/*WDI_PackPreferredNetworkListNew*/
22878
22879/**
22880 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022881
22882 @param pWDICtx: pointer to the WLAN DAL context
22883 pEventData: pointer to the event information structure
22884
Jeff Johnson295189b2012-06-20 16:38:30 -070022885 @return Result of the function call
22886*/
22887WDI_Status
22888WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022889(
Jeff Johnson295189b2012-06-20 16:38:30 -070022890 WDI_ControlBlockType* pWDICtx,
22891 WDI_EventInfoType* pEventData
22892)
22893{
22894 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
22895 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022896 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022897 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022898 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022899
22900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022901 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022902 -------------------------------------------------------------------------*/
22903 if (( NULL == pEventData ) ||
22904 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
22905 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
22906 {
22907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022908 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022911 }
22912
22913 /*-------------------------------------------------------------------------
22914 Pack the PNO request structure based on version
22915 -------------------------------------------------------------------------*/
22916 if ( pWDICtx->wdiPNOVersion > 0 )
22917 {
22918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022919 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022920 pWDICtx->wdiPNOVersion);
22921
22922 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
22923 &pSendBuffer, &usSendSize);
22924 }
22925 else
22926 {
22927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022928 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022929 pWDICtx->wdiPNOVersion);
22930
22931 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
22932 &pSendBuffer, &usSendSize);
22933 }
22934
22935 if (( WDI_STATUS_SUCCESS != wdiStatus )||
22936 ( NULL == pSendBuffer )||( 0 == usSendSize ))
22937 {
22938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022939 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022941 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022942 }
22943
22944 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022945 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022946
22947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022948 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022949 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022950 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22951 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022952}
22953
22954/**
22955 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022956
22957 @param pWDICtx: pointer to the WLAN DAL context
22958 pEventData: pointer to the event information structure
22959
Jeff Johnson295189b2012-06-20 16:38:30 -070022960 @see
22961 @return Result of the function call
22962*/
22963WDI_Status
22964WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022965(
Jeff Johnson295189b2012-06-20 16:38:30 -070022966 WDI_ControlBlockType* pWDICtx,
22967 WDI_EventInfoType* pEventData
22968)
22969{
22970 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
22971 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022972 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022973 wpt_uint16 usDataOffset = 0;
22974 wpt_uint16 usSendSize = 0;
22975 wpt_uint8 ucRssiThreshold;
22976
22977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022979 -------------------------------------------------------------------------*/
22980 if (( NULL == pEventData ) ||
22981 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
22982 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
22983 {
22984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022988 }
22989
22990 /*-----------------------------------------------------------------------
22991 Get message buffer
22992 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022993 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022994 sizeof(ucRssiThreshold),
22995 &pSendBuffer, &usDataOffset, &usSendSize))||
22996 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
22997 {
22998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22999 "Unable to get send buffer in Set PNO req %x %x %x",
23000 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 }
23004
23005 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23006
Jeff Johnsone7245742012-09-05 17:12:55 -070023007 wpalMemoryCopy( pSendBuffer+usDataOffset,
23008 &ucRssiThreshold,
23009 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023010
23011 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023012 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023013
23014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023015 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023016 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023017 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23018 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023019}
23020
23021
23022/**
23023 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070023024
23025 @param pWDICtx: pointer to the WLAN DAL context
23026 pEventData: pointer to the event information structure
23027
Jeff Johnson295189b2012-06-20 16:38:30 -070023028 @see
23029 @return Result of the function call
23030*/
23031WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023032WDI_PackUpdateScanParamsReq
23033(
23034 WDI_ControlBlockType* pWDICtx,
23035 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23036 wpt_uint8** ppSendBuffer,
23037 wpt_uint16* pSize
23038)
23039{
23040 wpt_uint8* pSendBuffer = NULL;
23041 wpt_uint16 usDataOffset = 0;
23042 wpt_uint16 usSendSize = 0;
23043 tUpdateScanParams updateScanParams = {0};
23044
23045
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023047 "Begin WDI Update Scan Parameters Old Style Params");
23048 /*-----------------------------------------------------------------------
23049 Get message buffer
23050 -----------------------------------------------------------------------*/
23051 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23052 sizeof(updateScanParams),
23053 &pSendBuffer, &usDataOffset, &usSendSize))||
23054 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23055 {
23056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23057 "Unable to get send buffer in Update Scan Params req %x",
23058 pwdiUpdateScanParams);
23059 WDI_ASSERT(0);
23060 return WDI_STATUS_E_FAILURE;
23061 }
23062
23063 //
23064 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23065 //
23066
23067 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23068 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23069
23070 updateScanParams.ucChannelCount =
23071 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23072 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23073 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23074 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
23075
23076 wpalMemoryCopy( updateScanParams.aChannels,
23077 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23078 updateScanParams.ucChannelCount);
23079
23080
23081 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23082 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23083 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23084 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23085 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23086
23087 wpalMemoryCopy( pSendBuffer+usDataOffset,
23088 &updateScanParams,
23089 sizeof(updateScanParams));
23090
23091 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23092 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23093
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023095 "End Update Scan Parameters Old Style");
23096
23097 /*Set the output values*/
23098 *ppSendBuffer = pSendBuffer;
23099 *pSize = usSendSize;
23100
23101 return WDI_STATUS_SUCCESS;
23102}
23103
23104/**
23105 @brief Process Update Scan Params function
23106
23107 @param pWDICtx: pointer to the WLAN DAL context
23108 pEventData: pointer to the event information structure
23109
23110 @see
23111 @return Result of the function call
23112*/
23113WDI_Status
23114WDI_PackUpdateScanParamsReqEx
23115(
23116 WDI_ControlBlockType* pWDICtx,
23117 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23118 wpt_uint8** ppSendBuffer,
23119 wpt_uint16* pSize
23120)
23121{
23122 wpt_uint8* pSendBuffer = NULL;
23123 wpt_uint16 usDataOffset = 0;
23124 wpt_uint16 usSendSize = 0;
23125 tUpdateScanParamsEx updateScanParams = {0};
23126
23127
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023129 "Begin WDI Update Scan Parameters New Style Params");
23130 /*-----------------------------------------------------------------------
23131 Get message buffer
23132 -----------------------------------------------------------------------*/
23133 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23134 sizeof(updateScanParams),
23135 &pSendBuffer, &usDataOffset, &usSendSize))||
23136 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23137 {
23138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23139 "Unable to get send buffer in Update Scan Params Ex req %x",
23140 pwdiUpdateScanParams);
23141 WDI_ASSERT(0);
23142 return WDI_STATUS_E_FAILURE;
23143 }
23144
23145 //
23146 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23147 //
23148
23149 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23150 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23151
23152 updateScanParams.ucChannelCount =
23153 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23154 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23155 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23156 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23157
23158 wpalMemoryCopy( updateScanParams.aChannels,
23159 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23160 updateScanParams.ucChannelCount);
23161
23162
23163 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23164 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23165 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23166 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23167 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23168
23169 wpalMemoryCopy( pSendBuffer+usDataOffset,
23170 &updateScanParams,
23171 sizeof(updateScanParams));
23172
23173 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23174 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23175
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023177 "End Update Scan Parameters New Style");
23178
23179 /*Set the output values*/
23180 *ppSendBuffer = pSendBuffer;
23181 *pSize = usSendSize;
23182
23183 return WDI_STATUS_SUCCESS;
23184}
23185
23186/**
23187 @brief Process Update Scan Params function
23188
23189 @param pWDICtx: pointer to the WLAN DAL context
23190 pEventData: pointer to the event information structure
23191
23192 @see
23193 @return Result of the function call
23194*/
23195WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023196WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023197(
Jeff Johnson295189b2012-06-20 16:38:30 -070023198 WDI_ControlBlockType* pWDICtx,
23199 WDI_EventInfoType* pEventData
23200)
23201{
23202 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23203 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023204 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023205 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023206 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023207
23208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023210 -------------------------------------------------------------------------*/
23211 if (( NULL == pEventData ) ||
23212 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23213 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23214 {
23215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023217 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
23221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23222 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023223
23224 //
23225 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23226 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023227 if ( pWDICtx->wlanVersion.revision < 1 )
23228 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023229 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023230 &pSendBuffer, &usSendSize);
23231 }
23232 else
23233 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023234 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23235 &pSendBuffer, &usSendSize);
23236 }
23237
23238 if(WDI_STATUS_SUCCESS != wdiStatus)
23239 {
23240 //memory allocation failed
23241 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023242 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023243
Jeff Johnson295189b2012-06-20 16:38:30 -070023244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023245 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023247 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023248 wdiUpdateScanParamsCb, pEventData->pUserData,
23249 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023250}
23251
23252/**
23253 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023254
23255 @param pWDICtx: pointer to the WLAN DAL context
23256 pEventData: pointer to the event information structure
23257
Jeff Johnson295189b2012-06-20 16:38:30 -070023258 @see
23259 @return Result of the function call
23260*/
23261WDI_Status
23262WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023263(
Jeff Johnson295189b2012-06-20 16:38:30 -070023264 WDI_ControlBlockType* pWDICtx,
23265 WDI_EventInfoType* pEventData
23266)
23267{
23268 WDI_LowLevelIndType wdiInd;
23269 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23270
23271
23272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023274 -------------------------------------------------------------------------*/
23275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23276 ( NULL == pEventData->pEventData ))
23277 {
23278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023280 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023282 }
23283
23284 /*-------------------------------------------------------------------------
23285 Extract indication and send it to UMAC
23286 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023287 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23288 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 sizeof(tPrefNetwFoundParams));
23290
23291 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023292 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023293
23294 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23295
Jeff Johnsone7245742012-09-05 17:12:55 -070023296 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023297 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023298 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023299
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23301 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23303
23304 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23305 prefNetwFoundInd.prefNetwFoundParams.rssi;
23306
23307 // DEBUG
23308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23309 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23310 wdiInd.wdiIndicationType,
23311 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23312 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23313
ltimariu034f7d62013-01-24 18:54:33 -080023314 if ( pWDICtx->wdiLowLevelIndCB )
23315 {
23316 /*Notify UMAC*/
23317 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
23318 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023319
23320 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023321}
23322
23323/**
23324 @brief Process PNO Rsp function (called when a
23325 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023326
23327 @param pWDICtx: pointer to the WLAN DAL context
23328 pEventData: pointer to the event information structure
23329
Jeff Johnson295189b2012-06-20 16:38:30 -070023330 @see
23331 @return Result of the function call
23332*/
23333WDI_Status
23334WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023335(
Jeff Johnson295189b2012-06-20 16:38:30 -070023336 WDI_ControlBlockType* pWDICtx,
23337 WDI_EventInfoType* pEventData
23338)
23339{
23340 WDI_Status wdiStatus;
23341 eHalStatus halStatus;
23342 WDI_PNOScanCb wdiPNOScanCb = NULL;
23343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23344
23345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023347 -------------------------------------------------------------------------*/
23348 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23349 ( NULL == pEventData->pEventData ))
23350 {
23351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023355 }
23356
23357
Jeff Johnsone7245742012-09-05 17:12:55 -070023358 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023359
23360 /*-------------------------------------------------------------------------
23361 Extract response and send it to UMAC
23362 -------------------------------------------------------------------------*/
23363 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023364 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023365
23366 /*Notify UMAC*/
23367 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23368
Jeff Johnsone7245742012-09-05 17:12:55 -070023369 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023370}/*WDI_ProcessSetPreferredNetworkRsp*/
23371
23372/**
23373 @brief Process RSSI Filter Rsp function (called when a
23374 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023375
23376 @param pWDICtx: pointer to the WLAN DAL context
23377 pEventData: pointer to the event information structure
23378
Jeff Johnson295189b2012-06-20 16:38:30 -070023379 @see
23380 @return Result of the function call
23381*/
23382WDI_Status
23383WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023384(
Jeff Johnson295189b2012-06-20 16:38:30 -070023385 WDI_ControlBlockType* pWDICtx,
23386 WDI_EventInfoType* pEventData
23387)
23388{
23389 WDI_Status wdiStatus;
23390 eHalStatus halStatus;
23391 WDI_RssiFilterCb wdiRssiFilterCb;
23392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23393
23394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 -------------------------------------------------------------------------*/
23397 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23398 ( NULL == pEventData->pEventData ))
23399 {
23400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023404 }
23405
Jeff Johnsone7245742012-09-05 17:12:55 -070023406 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023407
23408 /*-------------------------------------------------------------------------
23409 Extract response and send it to UMAC
23410 -------------------------------------------------------------------------*/
23411 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023412 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023413
23414 /*Notify UMAC*/
23415 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23416
Jeff Johnsone7245742012-09-05 17:12:55 -070023417 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023418}/*WDI_ProcessSetRssiFilterRsp*/
23419
23420/**
23421 @brief Process Update Scan Params Rsp function (called when a
23422 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023423
23424 @param pWDICtx: pointer to the WLAN DAL context
23425 pEventData: pointer to the event information structure
23426
Jeff Johnson295189b2012-06-20 16:38:30 -070023427 @see
23428 @return Result of the function call
23429*/
23430WDI_Status
23431WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023432(
Jeff Johnson295189b2012-06-20 16:38:30 -070023433 WDI_ControlBlockType* pWDICtx,
23434 WDI_EventInfoType* pEventData
23435)
23436{
23437 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023440 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23442
23443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023445 -------------------------------------------------------------------------*/
23446 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23447 ( NULL == pEventData->pEventData ))
23448 {
23449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023450 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023453 }
23454
23455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023456 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023457
Jeff Johnsone7245742012-09-05 17:12:55 -070023458 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023459
23460 /*-------------------------------------------------------------------------
23461 Extract response and send it to UMAC
23462 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023463 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23464 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023465 sizeof(halUpdScanParams.status));
23466
23467 uStatus = halUpdScanParams.status;
23468
23469 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023470 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023471
23472 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023473 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023474
Jeff Johnsone7245742012-09-05 17:12:55 -070023475 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023476
23477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023478 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023479 halUpdScanParams.status);
23480
23481 /*Notify UMAC*/
23482 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23483
Jeff Johnsone7245742012-09-05 17:12:55 -070023484 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023485}
23486#endif // FEATURE_WLAN_SCAN_PNO
23487
23488#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023489WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023490WDI_8023MulticastListReq
23491(
23492 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23493 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23494 void* pUserData
23495)
23496{
23497 WDI_EventInfoType wdiEventData;
23498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23499
23500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023501 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023502
23503 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023504 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023505 ------------------------------------------------------------------------*/
23506 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23507 {
23508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23509 "WDI API call before module is initialized - Fail request");
23510
Jeff Johnsone7245742012-09-05 17:12:55 -070023511 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 }
23513
23514 /*------------------------------------------------------------------------
23515 Fill in Event data and post to the Main FSM
23516 ------------------------------------------------------------------------*/
23517 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023518 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023519 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023520 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023521 wdiEventData.pUserData = pUserData;
23522
23523 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23524}
23525
Jeff Johnsone7245742012-09-05 17:12:55 -070023526WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023527WDI_ReceiveFilterSetFilterReq
23528(
23529 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23530 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23531 void* pUserData
23532)
23533{
23534 WDI_EventInfoType wdiEventData;
23535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23536
23537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023538 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023539
23540 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023541 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023542 ------------------------------------------------------------------------*/
23543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23544 {
23545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23546 "WDI API call before module is initialized - Fail request");
23547
Jeff Johnsone7245742012-09-05 17:12:55 -070023548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023549 }
23550
23551 /*------------------------------------------------------------------------
23552 Fill in Event data and post to the Main FSM
23553 ------------------------------------------------------------------------*/
23554 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023555 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23556 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
23557 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams
Jeff Johnson295189b2012-06-20 16:38:30 -070023558 * sizeof(WDI_RcvPktFilterFieldParams) - 1);
Jeff Johnsone7245742012-09-05 17:12:55 -070023559 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023560 wdiEventData.pUserData = pUserData;
23561
23562
23563 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23564}
23565
Jeff Johnsone7245742012-09-05 17:12:55 -070023566WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023567WDI_FilterMatchCountReq
23568(
23569 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
23570 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
23571 void* pUserData
23572)
23573{
23574 WDI_EventInfoType wdiEventData;
23575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23576
23577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023578 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023579
23580 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023581 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 ------------------------------------------------------------------------*/
23583 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23584 {
23585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23586 "WDI API call before module is initialized - Fail request");
23587
Jeff Johnsone7245742012-09-05 17:12:55 -070023588 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023589 }
23590
23591 /*------------------------------------------------------------------------
23592 Fill in Event data and post to the Main FSM
23593 ------------------------------------------------------------------------*/
23594 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023595 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023596 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023597 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023598 wdiEventData.pUserData = pUserData;
23599
23600
23601 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23602}
23603
Jeff Johnsone7245742012-09-05 17:12:55 -070023604WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023605WDI_ReceiveFilterClearFilterReq
23606(
23607 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
23608 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
23609 void* pUserData
23610)
23611{
23612 WDI_EventInfoType wdiEventData;
23613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23614
23615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023616 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023617
23618 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023620 ------------------------------------------------------------------------*/
23621 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23622 {
23623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23624 "WDI API call before module is initialized - Fail request");
23625
Jeff Johnsone7245742012-09-05 17:12:55 -070023626 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023627 }
23628
23629 /*------------------------------------------------------------------------
23630 Fill in Event data and post to the Main FSM
23631 ------------------------------------------------------------------------*/
23632 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023633 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023634 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023635 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023636 wdiEventData.pUserData = pUserData;
23637
23638
23639 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23640}
23641
23642/**
23643 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023644
23645 @param pWDICtx: pointer to the WLAN DAL context
23646 pEventData: pointer to the event information structure
23647
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 @see
23649 @return Result of the function call
23650*/
23651WDI_Status
23652WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023653(
Jeff Johnson295189b2012-06-20 16:38:30 -070023654 WDI_ControlBlockType* pWDICtx,
23655 WDI_EventInfoType* pEventData
23656)
23657{
23658 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
23659 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023660 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023661 wpt_uint16 usDataOffset = 0;
23662 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023663 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023664 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023665 wpt_uint8 ucCurrentBSSSesIdx = 0;
23666 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023667
23668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023669 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023670
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023671 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
23672 if( NULL == pRcvFltMcAddrListType )
23673 {
23674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23675 "Failed to alloc in WDI_Process8023MulticastListReq");
23676 return WDI_STATUS_E_FAILURE;
23677 }
23678
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023680 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023681 -------------------------------------------------------------------------*/
23682 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023683 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023685 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023686 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
23687 {
23688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023689 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023690 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 return WDI_STATUS_E_FAILURE;
23693 }
23694
23695 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23696 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
23697 &pBSSSes);
23698 if ( NULL == pBSSSes )
23699 {
23700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023701 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023702 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023704 }
23705
23706 /*-----------------------------------------------------------------------
23707 Get message buffer
23708 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023709 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23710 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023711 sizeof(tHalRcvFltMcAddrListType),
23712 &pSendBuffer, &usDataOffset, &usSendSize))||
23713 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
23714 {
23715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23716 "Unable to get send buffer in "
23717 "WDI_Process8023MulticastListReq() %x %x %x",
23718 pEventData, pwdiFltPktSetMcListReqParamsType,
23719 wdi8023MulticastListCb);
23720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023722 }
23723
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023724 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070023725 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023726 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023727 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023728 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
23730 sizeof(tSirMacAddr));
23731 }
23732
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023733 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023734 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023735 pRcvFltMcAddrListType,
23736 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070023737
23738 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023740
23741
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023742 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023744 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023745 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023746 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023747 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023748 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023749}
23750
23751/**
23752 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023753
23754 @param pWDICtx: pointer to the WLAN DAL context
23755 pEventData: pointer to the event information structure
23756
Jeff Johnson295189b2012-06-20 16:38:30 -070023757 @see
23758 @return Result of the function call
23759*/
23760WDI_Status
23761WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023762(
Jeff Johnson295189b2012-06-20 16:38:30 -070023763 WDI_ControlBlockType* pWDICtx,
23764 WDI_EventInfoType* pEventData
23765)
23766{
23767 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
23768 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023769 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023770 wpt_uint16 usDataOffset = 0;
23771 wpt_uint16 usSendSize = 0;
23772 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023773 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023774 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023775 wpt_uint8 ucCurrentBSSSesIdx = 0;
23776 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023777 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
23778 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023779
23780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023781 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023782
23783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023785 -------------------------------------------------------------------------*/
23786 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023787 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023789 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023790 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
23791 {
23792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023795 return WDI_STATUS_E_FAILURE;
23796 }
23797
23798 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23799 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
23800 &pBSSSes);
23801 if ( NULL == pBSSSes )
23802 {
23803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023804 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023806 }
23807
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023808 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
23809 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023810
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023811 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
23812 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23813 * sizeof(tHalSessionizedRcvPktFilterCfgType));
23814
23815 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
23816 usSessRcvPktFilterCfgSize);
23817
23818 if(NULL == pSessRcvPktFilterCfg)
23819 {
23820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23821 "%s: Failed to allocate memory for "
23822 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023823 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023824 WDI_ASSERT(0);
23825 return WDI_STATUS_E_FAILURE;
23826 }
23827
23828 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
23829
23830 /*-----------------------------------------------------------------------
23831 Get message buffer
23832 -----------------------------------------------------------------------*/
23833
23834 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
23835 usSessRcvPktFilterCfgSize,
23836 &pSendBuffer, &usDataOffset, &usSendSize))||
23837 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
23838 {
23839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23840 "Unable to get send buffer in "
23841 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23842 pEventData, pwdiSetRcvPktFilterReqInfo,
23843 wdiReceiveFilterSetFilterCb);
23844 WDI_ASSERT(0);
23845 wpalMemoryFree(pSessRcvPktFilterCfg);
23846 return WDI_STATUS_E_FAILURE;
23847 }
23848
23849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23850 "UsData Off %d UsSend %d cfg %d",usDataOffset,
23851 usSendSize,pSessRcvPktFilterCfg);
23852
23853 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23854 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23855 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23856 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
23857
23858 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
23859
23860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23861 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
23862 pSessRcvPktFilterCfg->filterType);
23863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23864 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
23865 pSessRcvPktFilterCfg->coleasceTime);
23866
23867 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
23868 {
23869 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
23870 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23871 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
23872 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23873 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
23874 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23875 pSessRcvPktFilterCfg->paramsData[i].dataLength =
23876 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
23877
23878 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
23879 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23880 8);
23881 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
23882 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23883 8);
23884
23885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23886 "Out:Proto %d Comp Flag %d \n",
23887 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
23888 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
23889
23890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23891 "Data Offset %d Data Len %d\n",
23892 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
23893 pSessRcvPktFilterCfg->paramsData[i].dataLength);
23894
23895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23896 "CData: %d:%d:%d:%d:%d:%d\n",
23897 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
23898 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
23899 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
23900 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
23901 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
23902 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
23903
23904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23905 "MData: %d:%d:%d:%d:%d:%d\n",
23906 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
23907 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
23908 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
23909 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
23910 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
23911 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
23912 }
23913
23914 wpalMemoryCopy( pSendBuffer+usDataOffset,
23915 pSessRcvPktFilterCfg,
23916 usSessRcvPktFilterCfgSize);
23917
23918
23919 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23920 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
23921
23922 wpalMemoryFree(pSessRcvPktFilterCfg);
23923
23924 }
23925 /*If SLM_SESSIONIZATION is not supported then do this */
23926 else
23927 {
23928 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
23929 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23930 * sizeof(tHalRcvPktFilterParams));
23931
23932 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070023933 usRcvPktFilterCfgSize);
23934
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023935 if(NULL == pRcvPktFilterCfg)
23936 {
23937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23938 "%s: Failed to allocate memory for "
23939 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023940 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023941 WDI_ASSERT(0);
23942 return WDI_STATUS_E_FAILURE;
23943 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023944
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023945 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023946
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023947 /*-----------------------------------------------------------------------
23948 Get message buffer
23949 -----------------------------------------------------------------------*/
23950 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023951 usRcvPktFilterCfgSize,
23952 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023953 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
23954 {
23955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 "Unable to get send buffer in "
23957 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23958 pEventData, pwdiSetRcvPktFilterReqInfo,
23959 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023960 WDI_ASSERT(0);
23961 wpalMemoryFree(pRcvPktFilterCfg);
23962 return WDI_STATUS_E_FAILURE;
23963 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023964
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 usSendSize,usRcvPktFilterCfgSize);
23968
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023969 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23970 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23971 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23972 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070023973
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023975 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023978 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070023979 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070023980
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023981 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
23982 {
23983 pRcvPktFilterCfg->paramsData[i].protocolLayer =
23984 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23985 pRcvPktFilterCfg->paramsData[i].cmpFlag =
23986 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23987 pRcvPktFilterCfg->paramsData[i].dataOffset =
23988 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23989 pRcvPktFilterCfg->paramsData[i].dataLength =
23990 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070023991
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023992 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023993 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23994 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023995 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070023996 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23997 8);
23998
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024000 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070024001 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070024002 pRcvPktFilterCfg->paramsData[i].cmpFlag);
24003
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24005 "Data Offset %d Data Len %d\n",
24006 pRcvPktFilterCfg->paramsData[i].dataOffset,
24007 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024008
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24010 "CData: %d:%d:%d:%d:%d:%d\n",
24011 pRcvPktFilterCfg->paramsData[i].compareData[0],
24012 pRcvPktFilterCfg->paramsData[i].compareData[1],
24013 pRcvPktFilterCfg->paramsData[i].compareData[2],
24014 pRcvPktFilterCfg->paramsData[i].compareData[3],
24015 pRcvPktFilterCfg->paramsData[i].compareData[4],
24016 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070024017
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24019 "MData: %d:%d:%d:%d:%d:%d\n",
24020 pRcvPktFilterCfg->paramsData[i].dataMask[0],
24021 pRcvPktFilterCfg->paramsData[i].dataMask[1],
24022 pRcvPktFilterCfg->paramsData[i].dataMask[2],
24023 pRcvPktFilterCfg->paramsData[i].dataMask[3],
24024 pRcvPktFilterCfg->paramsData[i].dataMask[4],
24025 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
24026 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024027
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024028 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070024029 pRcvPktFilterCfg,
24030 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024031
24032
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024033 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24034 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024035
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024037 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024038 wpalMemoryFree(pRcvPktFilterCfg);
24039 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024041 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024042 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024043 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024044 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024045 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024046}
24047
24048/**
24049 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024050
24051 @param pWDICtx: pointer to the WLAN DAL context
24052 pEventData: pointer to the event information structure
24053
Jeff Johnson295189b2012-06-20 16:38:30 -070024054 @see
24055 @return Result of the function call
24056*/
24057WDI_Status
24058WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024059(
Jeff Johnson295189b2012-06-20 16:38:30 -070024060 WDI_ControlBlockType* pWDICtx,
24061 WDI_EventInfoType* pEventData
24062)
24063{
24064 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
24065 NULL;
24066 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
24067 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024068 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024069 wpt_uint16 usDataOffset = 0;
24070 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024071 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
24072 wpt_uint8 ucCurrentBSSSesIdx = 0;
24073 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024074
24075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024076 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024077
24078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024080 -------------------------------------------------------------------------*/
24081 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024082 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024084 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024085 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
24086 {
24087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024091 }
24092
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024093 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24094 pwdiRcvFltPktMatchCntReqParamsType->bssId,
24095 &pBSSSes);
24096 if ( NULL == pBSSSes )
24097 {
24098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024099 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024100 return WDI_STATUS_E_FAILURE;
24101 }
24102
Jeff Johnson295189b2012-06-20 16:38:30 -070024103 /*-----------------------------------------------------------------------
24104 Get message buffer
24105 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24107 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024108 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024109 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024110 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070024111 {
24112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24113 "Unable to get send buffer in "
24114 "WDI_ProcessFilterMatchCountReq() %x %x %x",
24115 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
24116 wdiFilterMatchCountCb);
24117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 }
24120
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024121 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
24122 wpalMemoryCopy( pSendBuffer+usDataOffset,
24123 &rcvFltPktMatchCntReqParam,
24124 sizeof(rcvFltPktMatchCntReqParam));
24125
Jeff Johnson295189b2012-06-20 16:38:30 -070024126 //
24127 // Don't need to fill send buffer other than header
24128 //
24129 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024130 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024131
24132
24133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024134 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024136 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24137 wdiFilterMatchCountCb,
24138 pEventData->pUserData,
24139 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024140}
24141
24142/**
24143 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024144
24145 @param pWDICtx: pointer to the WLAN DAL context
24146 pEventData: pointer to the event information structure
24147
Jeff Johnson295189b2012-06-20 16:38:30 -070024148 @see
24149 @return Result of the function call
24150*/
24151WDI_Status
24152WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024153(
Jeff Johnson295189b2012-06-20 16:38:30 -070024154 WDI_ControlBlockType* pWDICtx,
24155 WDI_EventInfoType* pEventData
24156)
Jeff Johnsone7245742012-09-05 17:12:55 -070024157{
Jeff Johnson295189b2012-06-20 16:38:30 -070024158 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24159 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024160 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024161 wpt_uint16 usDataOffset = 0;
24162 wpt_uint16 usSendSize = 0;
24163 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024164 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024165 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024166
24167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024168 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024169
24170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024172 -------------------------------------------------------------------------*/
24173 if (( NULL == pEventData ) ||
24174 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24175 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024176 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024177 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24178 {
24179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024182 return WDI_STATUS_E_FAILURE;
24183 }
24184
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024185 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024186 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24187 &pBSSSes);
24188 if ( NULL == pBSSSes )
24189 {
24190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024191 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024193 }
24194
24195 /*-----------------------------------------------------------------------
24196 Get message buffer
24197 -----------------------------------------------------------------------*/
24198 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024199 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024200 sizeof(tHalRcvFltPktClearParam),
24201 &pSendBuffer, &usDataOffset, &usSendSize))||
24202 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24203 {
24204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24205 "Unable to get send buffer in "
24206 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24207 pEventData, pwdiRcvFltPktClearReqParamsType,
24208 wdiRcvFltPktClearFilterCb);
24209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024211 }
24212
24213
24214 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024215 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024216 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024217 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024218
Jeff Johnsone7245742012-09-05 17:12:55 -070024219 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24220 wpalMemoryCopy( pSendBuffer+usDataOffset,
24221 &rcvFltPktClearParam,
24222 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024223
24224 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024225 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024226
24227
24228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024229 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024230 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024231 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024232 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024233 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024234}
24235
24236/**
24237 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024238
24239 @param pWDICtx: pointer to the WLAN DAL context
24240 pEventData: pointer to the event information structure
24241
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 @see
24243 @return Result of the function call
24244*/
24245WDI_Status
24246WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024247(
Jeff Johnson295189b2012-06-20 16:38:30 -070024248 WDI_ControlBlockType* pWDICtx,
24249 WDI_EventInfoType* pEventData
24250)
24251{
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 eHalStatus halStatus;
24253 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024254 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24255 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24257
24258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024259 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024260
24261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024262 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024263 -------------------------------------------------------------------------*/
24264 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24265 ( NULL == pEventData->pEventData ))
24266 {
24267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024271 }
24272
Jeff Johnsone7245742012-09-05 17:12:55 -070024273 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024274
24275 /*-------------------------------------------------------------------------
24276 Extract response and send it to UMAC
24277 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024278 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24279 {
24280 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24281 pEventData->pEventData,
24282 sizeof(halRcvFltPktSetMcListRsp));
24283
24284 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24285 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24286 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24287 halRcvFltPktSetMcListRsp.bssIdx;
24288 }
24289 else
24290 {
24291 halStatus = *((eHalStatus*)pEventData->pEventData);
24292 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24293 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024294
24295 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024296 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024297
Jeff Johnsone7245742012-09-05 17:12:55 -070024298 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024299}
24300
24301/**
24302 @brief Process Set Rsp function (called when a
24303 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024304
24305 @param pWDICtx: pointer to the WLAN DAL context
24306 pEventData: pointer to the event information structure
24307
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 @see
24309 @return Result of the function call
24310*/
24311WDI_Status
24312WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024313(
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 WDI_ControlBlockType* pWDICtx,
24315 WDI_EventInfoType* pEventData
24316)
24317{
Jeff Johnson295189b2012-06-20 16:38:30 -070024318 eHalStatus halStatus;
24319 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024320 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24321 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24323
24324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024325 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024326
24327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024328 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 -------------------------------------------------------------------------*/
24330 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24331 ( NULL == pEventData->pEventData ))
24332 {
24333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024334 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024335 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 }
24338
24339 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024340 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024341
24342 /*-------------------------------------------------------------------------
24343 Extract response and send it to UMAC
24344 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024345 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24346 {
24347 wpalMemoryCopy( &halSetPktFilterRspParams,
24348 pEventData->pEventData,
24349 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024350
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024351 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24352 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24353 }
24354 else
24355 {
24356 halStatus = *((eHalStatus*)pEventData->pEventData);
24357 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24358 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024359 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024360 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024361
Jeff Johnsone7245742012-09-05 17:12:55 -070024362 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024363}
24364
24365/**
24366 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024367
24368 @param pWDICtx: pointer to the WLAN DAL context
24369 pEventData: pointer to the event information structure
24370
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 @see
24372 @return Result of the function call
24373*/
24374WDI_Status
24375WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024376(
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 WDI_ControlBlockType* pWDICtx,
24378 WDI_EventInfoType* pEventData
24379)
24380{
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024382 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024383 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24384 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024385
24386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24387
24388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024389 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024390
24391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024393 -------------------------------------------------------------------------*/
24394 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24395 ( NULL == pEventData->pEventData ))
24396 {
24397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024401 }
24402
Jeff Johnsone7245742012-09-05 17:12:55 -070024403 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024404
24405 /*-------------------------------------------------------------------------
24406 Extract response and send it to UMAC
24407 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024408 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24409 {
24410 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24411 pEventData->pEventData,
24412 sizeof(halRcvFltrPktMatachRsp));
24413
24414 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24415 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24416 }
24417 else
24418 {
24419 halStatus = *((eHalStatus*)pEventData->pEventData);
24420 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24421 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024422
24423 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024424 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024425
Jeff Johnsone7245742012-09-05 17:12:55 -070024426 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024427}
24428
24429/**
24430 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024431
24432 @param pWDICtx: pointer to the WLAN DAL context
24433 pEventData: pointer to the event information structure
24434
Jeff Johnson295189b2012-06-20 16:38:30 -070024435 @see
24436 @return Result of the function call
24437*/
24438WDI_Status
24439WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024440(
Jeff Johnson295189b2012-06-20 16:38:30 -070024441 WDI_ControlBlockType* pWDICtx,
24442 WDI_EventInfoType* pEventData
24443)
24444{
Jeff Johnson295189b2012-06-20 16:38:30 -070024445 eHalStatus halStatus;
24446 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024447 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24448 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24450
24451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024452 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024453
24454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024456 -------------------------------------------------------------------------*/
24457 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24458 ( NULL == pEventData->pEventData ))
24459 {
24460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024464 }
24465
24466 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024467 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024468
24469 /*-------------------------------------------------------------------------
24470 Extract response and send it to UMAC
24471 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024472 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24473 {
24474 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24475 pEventData->pEventData,
24476 sizeof(halRcvFltPktClearRspMsg));
24477
24478 wdiRcvFltPktClearRspParamsType.wdiStatus =
24479 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24480 wdiRcvFltPktClearRspParamsType.bssIdx =
24481 halRcvFltPktClearRspMsg.bssIdx;
24482 }
24483 else
24484 {
24485 halStatus = *((eHalStatus*)pEventData->pEventData);
24486 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24487 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024488
24489 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024490 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024491
Jeff Johnsone7245742012-09-05 17:12:55 -070024492 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024493}
24494#endif // WLAN_FEATURE_PACKET_FILTERING
24495
24496/**
24497 @brief Process Shutdown Rsp function
24498 There is no shutdown response comming from HAL
24499 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024500
Jeff Johnson295189b2012-06-20 16:38:30 -070024501 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024502 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024503
24504 @see
24505 @return Result of the function call
24506*/
24507WDI_Status
24508WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024509(
Jeff Johnson295189b2012-06-20 16:38:30 -070024510 WDI_ControlBlockType* pWDICtx,
24511 WDI_EventInfoType* pEventData
24512)
24513{
24514 /*There is no shutdown response comming from HAL - function just kept for
24515 simmetry */
24516 WDI_ASSERT(0);
24517 return WDI_STATUS_SUCCESS;
24518}/*WDI_ProcessShutdownRsp*/
24519
24520/**
24521 @brief WDI_SetPowerParamsReq
24522
Jeff Johnsone7245742012-09-05 17:12:55 -070024523 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024525
Jeff Johnson295189b2012-06-20 16:38:30 -070024526 wdiPowerParamsCb: callback for passing back the response
24527 of the Set Power Params operation received from the
24528 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024529
Jeff Johnson295189b2012-06-20 16:38:30 -070024530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024531 callback
24532
Jeff Johnson295189b2012-06-20 16:38:30 -070024533 @return Result of the function call
24534*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024535WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024536WDI_SetPowerParamsReq
24537(
24538 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24539 WDI_SetPowerParamsCb wdiPowerParamsCb,
24540 void* pUserData
24541)
24542{
24543 WDI_EventInfoType wdiEventData;
24544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24545
24546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024547 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024548 ------------------------------------------------------------------------*/
24549 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24550 {
24551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24552 "WDI API call before module is initialized - Fail request");
24553
Jeff Johnsone7245742012-09-05 17:12:55 -070024554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024555 }
24556
24557 /*------------------------------------------------------------------------
24558 Fill in Event data and post to the Main FSM
24559 ------------------------------------------------------------------------*/
24560 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024561 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024562 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024563 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024564 wdiEventData.pUserData = pUserData;
24565
24566 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24567}/*WDI_SetPowerParamsReq*/
24568
24569/**
24570 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024571
24572 @param pWDICtx: pointer to the WLAN DAL context
24573 pEventData: pointer to the event information structure
24574
Jeff Johnson295189b2012-06-20 16:38:30 -070024575 @see
24576 @return Result of the function call
24577*/
24578WDI_Status
24579WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024580(
Jeff Johnson295189b2012-06-20 16:38:30 -070024581 WDI_ControlBlockType* pWDICtx,
24582 WDI_EventInfoType* pEventData
24583)
24584{
24585 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
24586 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024587 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024588 wpt_uint16 usDataOffset = 0;
24589 wpt_uint16 usSendSize = 0;
24590 tSetPowerParamsType powerParams;
24591
24592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 -------------------------------------------------------------------------*/
24595 if (( NULL == pEventData ) ||
24596 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
24597 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
24598 {
24599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024603 }
24604
24605 /*-----------------------------------------------------------------------
24606 Get message buffer
24607 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024609 sizeof(powerParams),
24610 &pSendBuffer, &usDataOffset, &usSendSize))||
24611 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
24612 {
24613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24614 "Unable to get send buffer in Set PNO req %x %x %x",
24615 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
24616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024618 }
24619
24620 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070024621 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070024622 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
24623
24624 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024625 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070024626 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
24627
24628 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024629 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070024630 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
24631
24632 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070024633 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070024634 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
24635
24636 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070024637 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070024638 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
24639
24640 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024641 powerParams.uBETInterval =
24642 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070024643
Jeff Johnsone7245742012-09-05 17:12:55 -070024644
24645 wpalMemoryCopy( pSendBuffer+usDataOffset,
24646 &powerParams,
24647 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024648
24649 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024650 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024651
24652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024653 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024654 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024655 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24656 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024657}
24658
24659/**
24660 @brief Process Power Params Rsp function (called when a
24661 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024662
24663 @param pWDICtx: pointer to the WLAN DAL context
24664 pEventData: pointer to the event information structure
24665
Jeff Johnson295189b2012-06-20 16:38:30 -070024666 @see
24667 @return Result of the function call
24668*/
24669WDI_Status
24670WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024671(
Jeff Johnson295189b2012-06-20 16:38:30 -070024672 WDI_ControlBlockType* pWDICtx,
24673 WDI_EventInfoType* pEventData
24674)
24675{
24676 WDI_Status wdiStatus;
24677 eHalStatus halStatus;
24678 WDI_SetPowerParamsCb wdiPowerParamsCb;
24679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24680
24681 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024682 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024683 -------------------------------------------------------------------------*/
24684 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24685 ( NULL == pEventData->pEventData ))
24686 {
24687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024688 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024689 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024690 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 }
24692
Jeff Johnsone7245742012-09-05 17:12:55 -070024693 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024694
24695 /*-------------------------------------------------------------------------
24696 Extract response and send it to UMAC
24697 -------------------------------------------------------------------------*/
24698 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024699 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024700
24701 /*Notify UMAC*/
24702 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24703
Jeff Johnsone7245742012-09-05 17:12:55 -070024704 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024705}/*WDI_ProcessSetPowerParamsRsp*/
24706
24707#ifdef WLAN_FEATURE_GTK_OFFLOAD
24708/**
24709 @brief WDI_GTKOffloadReq will be called when the upper MAC
24710 wants to set GTK Rekey Counter while in power save. Upon
24711 the call of this API the WLAN DAL will pack and send a
24712 HAL GTK offload request message to the lower RIVA
24713 sub-system if DAL is in state STARTED.
24714
24715 In state BUSY this request will be queued. Request won't
24716 be allowed in any other state.
24717
24718 WDI_PostAssocReq must have been called.
24719
24720 @param pwdiGtkOffloadParams: the GTK offload as specified
24721 by the Device Interface
24722
24723 wdiGtkOffloadCb: callback for passing back the response
24724 of the GTK offload operation received from the device
24725
24726 pUserData: user data will be passed back with the
24727 callback
24728
24729 @see WDI_PostAssocReq
24730 @return Result of the function call
24731*/
24732WDI_Status
24733WDI_GTKOffloadReq
24734(
24735 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
24736 WDI_GtkOffloadCb wdiGtkOffloadCb,
24737 void* pUserData
24738)
24739{
24740 WDI_EventInfoType wdiEventData = {0};
24741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24742
24743 /*------------------------------------------------------------------------
24744 Sanity Check
24745 ------------------------------------------------------------------------*/
24746 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24747 {
24748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24749 "WDI API call before module is initialized - Fail request");
24750
24751 return WDI_STATUS_E_NOT_ALLOWED;
24752 }
24753
24754 /*------------------------------------------------------------------------
24755 Fill in Event data and post to the Main FSM
24756 ------------------------------------------------------------------------*/
24757 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
24758 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070024759 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070024760 wdiEventData.pCBfnc = wdiGtkOffloadCb;
24761 wdiEventData.pUserData = pUserData;
24762
24763 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24764}
24765
24766
24767/**
24768 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
24769 MAC wants to get GTK Rekey Counter while in power save.
24770 Upon the call of this API the WLAN DAL will pack and
24771 send a HAL GTK offload request message to the lower RIVA
24772 sub-system if DAL is in state STARTED.
24773
24774 In state BUSY this request will be queued. Request won't
24775 be allowed in any other state.
24776
24777 WDI_PostAssocReq must have been called.
24778
24779 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
24780 Information Message as specified by the
24781 Device Interface
24782
24783 wdiGtkOffloadGetInfoCb: callback for passing back the
24784 response of the GTK offload operation received from the
24785 device
24786
24787 pUserData: user data will be passed back with the
24788 callback
24789
24790 @see WDI_PostAssocReq
24791 @return Result of the function call
24792*/
24793WDI_Status
24794WDI_GTKOffloadGetInfoReq
24795(
24796 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
24797 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
24798 void* pUserData
24799)
24800{
24801 WDI_EventInfoType wdiEventData = {0};
24802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24803
24804 /*------------------------------------------------------------------------
24805 Sanity Check
24806 ------------------------------------------------------------------------*/
24807 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24808 {
24809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24810 "WDI API call before module is initialized - Fail request");
24811
24812 return WDI_STATUS_E_NOT_ALLOWED;
24813 }
24814
24815 /*------------------------------------------------------------------------
24816 Fill in Event data and post to the Main FSM
24817 ------------------------------------------------------------------------*/
24818 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
24819 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
24820 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
24821 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
24822 wdiEventData.pUserData = pUserData;
24823
24824 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24825}
24826
24827
24828/**
24829 @brief Process set GTK Offload Request function
24830
24831 @param pWDICtx: pointer to the WLAN DAL context
24832 pEventData: pointer to the event information structure
24833
24834 @see
24835 @return Result of the function call
24836*/
24837WDI_Status
24838WDI_ProcessGTKOffloadReq
24839(
24840 WDI_ControlBlockType* pWDICtx,
24841 WDI_EventInfoType* pEventData
24842)
24843{
24844 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
24845 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
24846 wpt_uint8* pSendBuffer = NULL;
24847 wpt_uint16 usDataOffset = 0;
24848 wpt_uint16 usSendSize = 0;
24849 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024850 wpt_uint8 ucCurrentSessionId = 0;
24851 WDI_BSSSessionType* pBSSSes = NULL;
24852
Jeff Johnson295189b2012-06-20 16:38:30 -070024853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24854
24855 /*-------------------------------------------------------------------------
24856 Sanity check
24857 -------------------------------------------------------------------------*/
24858 if (( NULL == pEventData ) ||
24859 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
24860 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
24861 {
24862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024863 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024864 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080024865 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070024866 }
24867
24868 /*-----------------------------------------------------------------------
24869 Get message buffer
24870 -----------------------------------------------------------------------*/
24871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
24872 sizeof(gtkOffloadReqParams),
24873 &pSendBuffer, &usDataOffset, &usSendSize))||
24874 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
24875 {
24876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24877 "Unable to get send buffer in GTK offload req %x %x %x",
24878 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
24879 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080024880 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070024881 }
24882
24883 //
24884 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
24885 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024886 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24887 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
24888 &pBSSSes);
24889 if ( NULL == pBSSSes )
24890 {
24891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024892 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080024893 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024894 }
24895
24896 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
24897
Jeff Johnson295189b2012-06-20 16:38:30 -070024898 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
24899 // Copy KCK
24900 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
24901 // Copy KEK
24902 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
24903 // Copy KeyReplayCounter
24904 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
24905
24906 wpalMemoryCopy( pSendBuffer+usDataOffset,
24907 &gtkOffloadReqParams,
24908 sizeof(gtkOffloadReqParams));
24909
24910 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
24911 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
24912
24913 /*-------------------------------------------------------------------------
24914 Send Get STA Request to HAL
24915 -------------------------------------------------------------------------*/
24916 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24917 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080024918
24919fail:
24920 // Release the message buffer so we don't leak
24921 wpalMemoryFree(pSendBuffer);
24922
24923failRequest:
24924 //WDA should have failure check to avoid the memory leak
24925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024926}
24927
24928
24929/**
24930 @brief Process GTK Offload Get Information Request function
24931
24932 @param pWDICtx: pointer to the WLAN DAL context
24933 pEventData: pointer to the event information structure
24934
24935 @see
24936 @return Result of the function call
24937*/
24938WDI_Status
24939WDI_ProcessGTKOffloadGetInfoReq
24940(
24941 WDI_ControlBlockType* pWDICtx,
24942 WDI_EventInfoType* pEventData
24943)
24944{
24945 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
24946 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
24947 wpt_uint8* pSendBuffer = NULL;
24948 wpt_uint16 usDataOffset = 0;
24949 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024950 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
24951 wpt_uint8 ucCurrentSessionId = 0;
24952 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024953
24954 /*-------------------------------------------------------------------------
24955 Sanity check
24956 -------------------------------------------------------------------------*/
24957 if (( NULL == pEventData ) ||
24958 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
24959 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
24960 {
24961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024963 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080024964 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070024965 }
24966
24967 /*-----------------------------------------------------------------------
24968 Get message buffer
24969 -----------------------------------------------------------------------*/
24970 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024971 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024972 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024973 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070024974 {
24975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24976 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
24977 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
24978 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080024979 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070024980 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024981 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24982 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
24983 &pBSSSes);
24984 if ( NULL == pBSSSes )
24985 {
24986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024987 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080024988 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024989 }
24990 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024991
24992 //
24993 // Don't need to fill send buffer other than header
24994 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024995 wpalMemoryCopy( pSendBuffer+usDataOffset,
24996 &halGtkOffloadGetInfoReqParams,
24997 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024998
24999 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
25000 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
25001
25002 /*-------------------------------------------------------------------------
25003 Send Get STA Request to HAL
25004 -------------------------------------------------------------------------*/
25005 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25006 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025007fail:
25008 // Release the message buffer so we don't leak
25009 wpalMemoryFree(pSendBuffer);
25010
25011failRequest:
25012 //WDA should have failure check to avoid the memory leak
25013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025014}
25015
25016/**
25017 @brief Process host offload Rsp function (called when a
25018 response is being received over the bus from HAL)
25019
25020 @param pWDICtx: pointer to the WLAN DAL context
25021 pEventData: pointer to the event information structure
25022
25023 @see
25024 @return Result of the function call
25025*/
25026WDI_Status
25027WDI_ProcessGtkOffloadRsp
25028(
25029 WDI_ControlBlockType* pWDICtx,
25030 WDI_EventInfoType* pEventData
25031)
25032{
Jeff Johnson295189b2012-06-20 16:38:30 -070025033 eHalStatus halStatus;
25034 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025035 tHalGtkOffloadRspParams halGtkOffloadRspParams;
25036 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25038
25039 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
25040
25041 /*-------------------------------------------------------------------------
25042 Sanity check
25043 -------------------------------------------------------------------------*/
25044 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25045 ( NULL == pEventData->pEventData))
25046 {
25047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025049 WDI_ASSERT(0);
25050 return WDI_STATUS_E_FAILURE;
25051 }
25052
25053 /*-------------------------------------------------------------------------
25054 Extract response and send it to UMAC
25055 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025056 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25057 {
25058 wpalMemoryCopy( &halGtkOffloadRspParams,
25059 pEventData->pEventData,
25060 sizeof(halGtkOffloadRspParams));
25061
25062 wdiGtkOffloadRsparams.ulStatus =
25063 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
25064 wdiGtkOffloadRsparams.bssIdx =
25065 halGtkOffloadRspParams.bssIdx;
25066 }
25067 else
25068 {
25069 halStatus = *((eHalStatus*)pEventData->pEventData);
25070 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25071 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025072
25073 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025074 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025075
25076 return WDI_STATUS_SUCCESS;
25077}
25078
25079/**
25080 @brief Process GTK Offload Get Information Response function
25081
25082 @param pWDICtx: pointer to the WLAN DAL context
25083 pEventData: pointer to the event information structure
25084
25085 @see
25086 @return Result of the function call
25087*/
25088WDI_Status
25089WDI_ProcessGTKOffloadGetInfoRsp
25090(
25091 WDI_ControlBlockType* pWDICtx,
25092 WDI_EventInfoType* pEventData
25093)
25094{
Jeff Johnson295189b2012-06-20 16:38:30 -070025095 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025096 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025097 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
25098 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025099
25100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25101
25102 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
25103
25104 /*-------------------------------------------------------------------------
25105 Sanity check
25106 -------------------------------------------------------------------------*/
25107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25108 ( NULL == pEventData->pEventData ))
25109 {
25110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 WDI_ASSERT(0);
25113 return WDI_STATUS_E_FAILURE;
25114 }
25115
25116 /*-------------------------------------------------------------------------
25117 Extract response and send it to UMAC
25118 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025119 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25120 {
25121 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
25122 pEventData->pEventData,
25123 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025124
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025125 wdiGtkOffloadGetInfoRsparams.ulStatus =
25126 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
25127 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
25128 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
25129 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
25130 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
25131 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
25132 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
25133 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
25134 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
25135 wdiGtkOffloadGetInfoRsparams.bssIdx =
25136 halGtkOffloadGetInfoRspParams.bssIdx;
25137 }
25138 else
25139 {
25140 halStatus = *((eHalStatus*)pEventData->pEventData);
25141 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25142 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025143 /*Notify UMAC*/
25144 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25145 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025146 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025147
25148 return WDI_STATUS_SUCCESS;
25149}
25150#endif // WLAN_FEATURE_GTK_OFFLOAD
25151
25152#ifdef WLAN_WAKEUP_EVENTS
25153WDI_Status
25154WDI_ProcessWakeReasonInd
25155(
25156 WDI_ControlBlockType* pWDICtx,
25157 WDI_EventInfoType* pEventData
25158)
25159{
25160 WDI_LowLevelIndType *pWdiInd;
25161 tpWakeReasonParams pWakeReasonParams;
25162 wpt_uint32 allocSize = 0;
25163
25164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025165 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025166
25167 /*-------------------------------------------------------------------------
25168 Sanity check
25169 -------------------------------------------------------------------------*/
25170 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25171 ( NULL == pEventData->pEventData ))
25172 {
25173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025174 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025175 WDI_ASSERT( 0 );
25176 return WDI_STATUS_E_FAILURE;
25177 }
25178
25179 /*-------------------------------------------------------------------------
25180 Extract indication and send it to UMAC
25181 -------------------------------------------------------------------------*/
25182 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25183
25184 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25185
25186 //Allocate memory for WDI_WakeReasonIndType structure
25187 pWdiInd = wpalMemoryAllocate(allocSize) ;
25188
25189 if(NULL == pWdiInd)
25190 {
25191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25192 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025193 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025194 WDI_ASSERT(0);
25195 return WDI_STATUS_E_FAILURE;
25196 }
25197
25198 wpalMemoryZero(pWdiInd, allocSize);
25199
25200 /* Fill in the indication parameters*/
25201 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25202 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25203 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25204 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25205 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25206 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25207 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25208 &(pWakeReasonParams->aDataStart[0]),
25209 pWakeReasonParams->ulStoredDataLen);
25210
ltimariu034f7d62013-01-24 18:54:33 -080025211
25212 if ( pWDICtx->wdiLowLevelIndCB )
25213 {
25214 /*Notify UMAC*/
25215 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25216 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025217
25218 //Free memory allocated for WDI_WakeReasonIndType structure
25219 wpalMemoryFree(pWdiInd);
25220
25221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025222 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025223
25224 return WDI_STATUS_SUCCESS;
25225}
25226#endif // WLAN_WAKEUP_EVENTS
25227
25228void WDI_GetWcnssCompiledApiVersion
25229(
25230 WDI_WlanVersionType *pWcnssApiVersion
25231)
25232{
25233 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25234 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25235 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25236 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25237}
25238
25239/**
25240 @brief Process Set TM Level Rsp function (called when a
25241 response is being received over the bus from HAL)
25242
25243 @param pWDICtx: pointer to the WLAN DAL context
25244 pEventData: pointer to the event information structure
25245
25246 @see
25247 @return Result of the function call
25248*/
25249WDI_Status
25250WDI_ProcessSetTmLevelRsp
25251(
25252 WDI_ControlBlockType* pWDICtx,
25253 WDI_EventInfoType* pEventData
25254)
25255{
25256 WDI_Status wdiStatus;
25257 eHalStatus halStatus;
25258 WDI_SetTmLevelCb wdiSetTmLevelCb;
25259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25260
25261 /*-------------------------------------------------------------------------
25262 Sanity check
25263 -------------------------------------------------------------------------*/
25264 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25265 ( NULL == pEventData->pEventData ))
25266 {
25267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025269 WDI_ASSERT(0);
25270 return WDI_STATUS_E_FAILURE;
25271 }
25272
25273 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25274
25275 /*-------------------------------------------------------------------------
25276 Extract response and send it to UMAC
25277 -------------------------------------------------------------------------*/
25278 halStatus = *((eHalStatus*)pEventData->pEventData);
25279 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25280
25281 /*Notify UMAC*/
25282 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25283
25284 return WDI_STATUS_SUCCESS;
25285}/*WDI_ProcessSetTmLevelRsp*/
25286
25287/**
25288 @brief Process Set Thermal Mitigation level Changed request
25289
25290 @param pWDICtx: pointer to the WLAN DAL context
25291 pEventData: pointer to the event information structure
25292
25293 @see
25294 @return Result of the function call
25295*/
25296WDI_Status
25297WDI_ProcessSetTmLevelReq
25298(
25299 WDI_ControlBlockType* pWDICtx,
25300 WDI_EventInfoType* pEventData
25301)
25302{
25303 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25304 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25305 wpt_uint8* pSendBuffer = NULL;
25306 wpt_uint16 usDataOffset = 0;
25307 wpt_uint16 usSendSize = 0;
25308 tSetThermalMitgationType halTmMsg;
25309
25310 /*-------------------------------------------------------------------------
25311 Sanity check
25312 -------------------------------------------------------------------------*/
25313 if (( NULL == pEventData ) ||
25314 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25315 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25316 {
25317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025319 WDI_ASSERT(0);
25320 return WDI_STATUS_E_FAILURE;
25321 }
25322
25323 /*-----------------------------------------------------------------------
25324 Get message buffer
25325 -----------------------------------------------------------------------*/
25326 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25327 sizeof(halTmMsg),
25328 &pSendBuffer, &usDataOffset, &usSendSize))||
25329 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25330 {
25331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25332 "Unable to get send buffer in Set PNO req %x %x %x",
25333 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25334 WDI_ASSERT(0);
25335 return WDI_STATUS_E_FAILURE;
25336 }
25337
25338 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25339 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25340
25341 wpalMemoryCopy( pSendBuffer+usDataOffset,
25342 &halTmMsg,
25343 sizeof(halTmMsg));
25344
25345 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25346 pWDICtx->pfncRspCB = NULL;
25347 /*-------------------------------------------------------------------------
25348 Send Get STA Request to HAL
25349 -------------------------------------------------------------------------*/
25350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25351 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25352}
25353
25354/* Fill the value from the global features enabled array to the global capabilities
25355 * bitmap struct
25356 */
25357static void
25358FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25359{
25360 wpt_int8 i;
25361 for (i=0; i<len; i++)
25362 {
25363 setFeatCaps(fCaps, enabledFeat[i]);
25364 }
25365}
25366
25367/**
25368 @brief WDI_featureCapsExchangeReq
25369 Post feature capability bitmap exchange event.
25370 Host will send its own capability to FW in this req and
25371 expect FW to send its capability back as a bitmap in Response
25372
25373 @param
25374
25375 wdiFeatureCapsExchangeCb: callback called on getting the response.
25376 It is kept to mantain similarity between WDI reqs and if needed, can
25377 be used in future. Currently, It is set to NULL
25378
25379 pUserData: user data will be passed back with the
25380 callback
25381
25382 @see
25383 @return Result of the function call
25384*/
25385WDI_Status
25386WDI_featureCapsExchangeReq
25387(
25388 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25389 void* pUserData
25390)
25391{
25392 WDI_EventInfoType wdiEventData;
25393 wpt_int32 fCapsStructSize;
25394
25395 /*------------------------------------------------------------------------
25396 Sanity Check
25397 ------------------------------------------------------------------------*/
25398 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25399 {
25400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25401 "WDI API call before module is initialized - Fail request");
25402
25403 return WDI_STATUS_E_NOT_ALLOWED;
25404 }
25405
25406 /* Allocate memory separately for global variable carrying FW caps */
25407 fCapsStructSize = sizeof(tWlanFeatCaps);
25408 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25409 if ( NULL == gpHostWlanFeatCaps )
25410 {
25411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25412 "Cannot allocate memory for host capability info\n");
25413 WDI_ASSERT(0);
25414 return WDI_STATUS_MEM_FAILURE;
25415 }
25416
25417 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25418
25419 /*------------------------------------------------------------------------
25420 Fill in Event data and post to the Main FSM
25421 ------------------------------------------------------------------------*/
25422 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25423 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25425 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025426 gpHostWlanFeatCaps->featCaps[0],
25427 gpHostWlanFeatCaps->featCaps[1],
25428 gpHostWlanFeatCaps->featCaps[2],
25429 gpHostWlanFeatCaps->featCaps[3]
25430 );
25431
25432 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25433 wdiEventData.pEventData = gpHostWlanFeatCaps;
25434 wdiEventData.uEventDataSize = fCapsStructSize;
25435 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25436 wdiEventData.pUserData = pUserData;
25437
25438 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25439}
25440
25441/**
Yathishd8713192012-12-10 14:21:35 -080025442 @brief Disable Active mode offload in Host
25443
25444 @param void
25445 @see
25446 @return void
25447*/
25448void
25449WDI_disableCapablityFeature(wpt_uint8 feature_index)
25450{
25451 supportEnabledFeatures[feature_index] = 0;
25452 return;
25453}
25454
25455/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 @brief Process Host-FW Capability Exchange Request function
25457
25458 @param pWDICtx: pointer to the WLAN DAL context
25459 pEventData: pointer to the event information structure
25460
25461 @see
25462 @return Result of the function call
25463*/
25464WDI_Status
25465WDI_ProcessFeatureCapsExchangeReq
25466(
25467 WDI_ControlBlockType* pWDICtx,
25468 WDI_EventInfoType* pEventData
25469)
25470{
25471 wpt_uint8* pSendBuffer = NULL;
25472 wpt_uint16 usDataOffset = 0;
25473 wpt_uint16 usSendSize = 0;
25474 wpt_uint16 usLen = 0;
25475
25476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25477
25478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025479 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025480
25481 /*-------------------------------------------------------------------------
25482 Sanity check
25483 -------------------------------------------------------------------------*/
25484 /* Call back function is NULL since not required for cap exchange req */
25485 if (( NULL == pEventData ) ||
25486 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25487 {
25488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025490 WDI_ASSERT(0);
25491 return WDI_STATUS_E_FAILURE;
25492 }
25493
25494 /*-----------------------------------------------------------------------
25495 Get message buffer
25496 -----------------------------------------------------------------------*/
25497 usLen = sizeof(tWlanFeatCaps);
25498
25499 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25500 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25501 usLen,
25502 &pSendBuffer, &usDataOffset, &usSendSize))||
25503 ( usSendSize < (usDataOffset + usLen )))
25504 {
25505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25506 "Unable to get send buffer in feat caps exchange req %x %x",
25507 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25508 WDI_ASSERT(0);
25509 return WDI_STATUS_E_FAILURE;
25510 }
25511
25512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025513 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025514 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25515 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25516 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25517 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25518 );
25519
25520 /* Copy host caps after the offset in the send buffer */
25521 wpalMemoryCopy( pSendBuffer+usDataOffset,
25522 (tWlanFeatCaps *)pEventData->pEventData,
25523 usLen);
25524
25525 /*-------------------------------------------------------------------------
25526 Send Start Request to HAL
25527 -------------------------------------------------------------------------*/
25528 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25529 (WDI_StartRspCb)pEventData->pCBfnc,
25530 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25531
25532}/*WDI_ProcessFeatureCapsExchangeReq*/
25533
25534/**
25535 @brief Process Host-FW Capability Exchange Response function
25536
25537 @param pWDICtx: pointer to the WLAN DAL context
25538 pEventData: pointer to the event information structure
25539
25540 @see
25541 @return Result of the function call
25542*/
25543WDI_Status
25544WDI_ProcessFeatureCapsExchangeRsp
25545(
25546 WDI_ControlBlockType* pWDICtx,
25547 WDI_EventInfoType* pEventData
25548)
25549{
25550 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25551 wpt_int32 fCapsStructSize;
25552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25553
25554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025555 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025556
25557 /*-------------------------------------------------------------------------
25558 Sanity check
25559 -------------------------------------------------------------------------*/
25560 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25561 ( NULL == pEventData->pEventData ))
25562 {
25563 /* It will go here when riva is old (doesn't understand this msg) and host is new */
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);
25567 return WDI_STATUS_E_FAILURE;
25568 }
25569
25570 /* Allocate memory separately for global variable carrying FW caps */
25571 fCapsStructSize = sizeof(tWlanFeatCaps);
25572 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25573 if ( NULL == gpFwWlanFeatCaps )
25574 {
25575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25576 "Cannot allocate memory for host capability info\n");
25577 WDI_ASSERT(0);
25578 return WDI_STATUS_MEM_FAILURE;
25579 }
25580
25581 /*-------------------------------------------------------------------------
25582 Unpack HAL Response Message - the header was already extracted by the
25583 main Response Handling procedure
25584 -------------------------------------------------------------------------*/
25585 /*-------------------------------------------------------------------------
25586 Extract response and send it to UMAC
25587 -------------------------------------------------------------------------*/
25588
25589 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
25590 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070025591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25592 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025593 gpFwWlanFeatCaps->featCaps[0],
25594 gpFwWlanFeatCaps->featCaps[1],
25595 gpFwWlanFeatCaps->featCaps[2],
25596 gpFwWlanFeatCaps->featCaps[3]
25597 );
Jeff Johnson295189b2012-06-20 16:38:30 -070025598 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
25599
25600 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
25601 if (wdiFeatureCapsExchangeCb != NULL)
25602 wdiFeatureCapsExchangeCb(NULL, NULL);
25603
25604 return WDI_STATUS_SUCCESS;
25605}
25606
Mohit Khanna4a70d262012-09-11 16:30:12 -070025607#ifdef WLAN_FEATURE_11AC
25608WDI_Status
25609WDI_ProcessUpdateVHTOpModeRsp
25610(
25611 WDI_ControlBlockType* pWDICtx,
25612 WDI_EventInfoType* pEventData
25613)
25614{
25615 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25616 WDI_Status wdiStatus;
25617 eHalStatus halStatus;
25618
25619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25620
25621 /*-------------------------------------------------------------------------
25622 Sanity check
25623 -------------------------------------------------------------------------*/
25624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25625 ( NULL == pEventData->pEventData))
25626 {
25627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025628 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025629 WDI_ASSERT(0);
25630 return WDI_STATUS_E_FAILURE;
25631 }
25632 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
25633
25634 /*-------------------------------------------------------------------------
25635 Extract response and send it to UMAC
25636 -------------------------------------------------------------------------*/
25637 halStatus = *((eHalStatus*)pEventData->pEventData);
25638 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25639
25640 /*Notify UMAC*/
25641 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
25642
25643 return WDI_STATUS_SUCCESS;
25644}
25645#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025646/**
25647 @brief WDI_getHostWlanFeatCaps
25648 WDI API that returns whether the feature passed to it as enum value in
25649 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
25650 variable storing host capability bitmap to find this. This can be used by
25651 other moduels to decide certain things like call different APIs based on
25652 whether a particular feature is supported.
25653
25654 @param
25655
25656 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
25657
25658 @see
25659 @return
25660 0 - if the feature is NOT supported in host
25661 any non-zero value - if the feature is SUPPORTED in host.
25662*/
25663wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
25664{
25665 wpt_uint8 featSupported = 0;
25666 if (gpHostWlanFeatCaps != NULL)
25667 {
25668 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
25669 }
25670 else
25671 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025673 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025674 }
25675 return featSupported;
25676}
25677
25678/**
25679 @brief WDI_getFwWlanFeatCaps
25680 WDI API that returns whether the feature passed to it as enum value in
25681 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
25682 variable storing host capability bitmap to find this. This can be used by
25683 other moduels to decide certain things like call different APIs based on
25684 whether a particular feature is supported.
25685
25686 @param
25687
25688 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
25689 in wlan_hal_msg.h.
25690
25691 @see
25692 @return
25693 0 - if the feature is NOT supported in FW
25694 any non-zero value - if the feature is SUPPORTED in FW.
25695*/
25696wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
25697{
25698 wpt_uint8 featSupported = 0;
25699 if (gpFwWlanFeatCaps != NULL)
25700 {
25701 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
25702 }
25703 else
25704 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025706 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025707 }
25708 return featSupported;
25709}
Mohit Khanna4a70d262012-09-11 16:30:12 -070025710
25711#ifdef WLAN_FEATURE_11AC
25712WDI_Status
25713WDI_ProcessUpdateVHTOpModeReq
25714(
25715 WDI_ControlBlockType* pWDICtx,
25716 WDI_EventInfoType* pEventData
25717)
25718{
25719 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
25720 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25721 wpt_uint8* pSendBuffer = NULL;
25722 wpt_uint16 usDataOffset = 0;
25723 wpt_uint16 usSendSize = 0;
25724
25725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25726
25727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025728 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025729
25730 /*-------------------------------------------------------------------------
25731 Sanity check
25732 -------------------------------------------------------------------------*/
25733 if (( NULL == pEventData ) ||
25734 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
25735 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
25736 {
25737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025738 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025739 WDI_ASSERT(0);
25740 return WDI_STATUS_E_FAILURE;
25741 }
25742
25743 /*-----------------------------------------------------------------------
25744 Get message buffer
25745 -----------------------------------------------------------------------*/
25746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
25747 sizeof(WDI_UpdateVHTOpMode),
25748 &pSendBuffer, &usDataOffset, &usSendSize))||
25749 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
25750 {
25751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25752 "Unable to get send buffer in update vht opMode req");
25753 WDI_ASSERT(0);
25754 return WDI_STATUS_E_FAILURE;
25755 }
25756
25757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25758 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
25759
25760 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
25761 sizeof(WDI_UpdateVHTOpMode));
25762
25763 /*-------------------------------------------------------------------------
25764 Send Start Request to HAL
25765 -------------------------------------------------------------------------*/
25766 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25767 wdiVHTOpModeCb,
25768 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
25769
25770}
25771
25772WDI_Status
25773WDI_UpdateVHTOpModeReq
25774(
25775 WDI_UpdateVHTOpMode *pData,
25776 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
25777 void* pUserData
25778)
25779{
25780 WDI_EventInfoType wdiEventData;
25781
25782 /*------------------------------------------------------------------------
25783 Sanity Check
25784 ------------------------------------------------------------------------*/
25785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25786 {
25787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25788 "WDI API call before module is initialized - Fail request");
25789
25790 return WDI_STATUS_E_NOT_ALLOWED;
25791 }
25792
25793 /*------------------------------------------------------------------------
25794 Fill in Event data and post to the Main FSM
25795 ------------------------------------------------------------------------*/
25796 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
25797 wdiEventData.pEventData = pData;
25798 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
25799 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
25800 wdiEventData.pUserData = pUserData;
25801
25802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25803 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
25804
25805 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25806
25807}
25808#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025809
25810/**
25811 @brief WDI_TransportChannelDebug -
25812 Display DXE Channel debugging information
25813 User may request to display DXE channel snapshot
25814 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025815
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080025816 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025817 @param enableStallDetect : Enable stall detect feature
25818 This feature will take effect to data performance
25819 Not integrate till fully verification
25820 @see
25821 @return none
25822*/
25823void WDI_TransportChannelDebug
25824(
25825 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025826 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025827)
25828{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025829 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025830 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070025831}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025832/**
25833 @brief WDI_SsrTimerCB
25834 Callback function for SSR timer, if this is called then the graceful
25835 shutdown for Riva did not happen.
25836
25837 @param pUserData : user data to timer
25838
25839 @see
25840 @return none
25841*/
25842void
25843WDI_SsrTimerCB
25844(
25845 void *pUserData
25846)
25847{
25848 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
25849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25850
25851 if (NULL == pWDICtx )
25852 {
25853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025854 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025855 WDI_ASSERT(0);
25856 return;
25857 }
25858 wpalRivaSubystemRestart();
25859
25860 return;
25861
25862}/*WDI_SsrTimerCB*/