blob: 75f647d3c1889a195160f9d287cc9047d7db1c05 [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
105#ifdef ANI_MANF_DIAG
106#include "pttMsgApi.h"
107#endif /* ANI_MANF_DIAG */
108
109/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700110 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700111 ===========================================================================*/
112#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
113
Jeff Johnsone7245742012-09-05 17:12:55 -0700114#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
115#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
116
Yathishd8713192012-12-10 14:21:35 -0800117#define FEATURE_NOT_SUPPORTED 128
Jeff Johnson295189b2012-06-20 16:38:30 -0700118
119#ifdef FEATURE_WLAN_SCAN_PNO
120#define WDI_PNO_VERSION_MASK 0x8000
121#endif
122
123/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700126static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700127/* array of features supported. Need to add a new feature
128 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
129 */
130static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800131 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800132#ifdef WLAN_SOFTAP_VSTA_FEATURE
133 ,SAP32STA
134#else
135 ,FEATURE_NOT_SUPPORTED
136#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800137#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800138 ,TDLS
139#else
140 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800141#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800142 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800143#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
144 ,WLANACTIVE_OFFLOAD
145#else
146 ,FEATURE_NOT_SUPPORTED
147#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800148 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700149
150/*--------------------------------------------------------------------------
151 WLAN DAL State Machine
152 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700153WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700154{
155 /*WDI_INIT_ST*/
156 {{
157 WDI_MainStart, /*WDI_START_EVENT*/
158 NULL, /*WDI_STOP_EVENT*/
159 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
160 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
161 WDI_MainClose, /*WDI_CLOSE_EVENT*/
162 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
163 }},
164
165 /*WDI_STARTED_ST*/
166 {{
167 WDI_MainStartStarted, /*WDI_START_EVENT*/
168 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
169 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
170 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
171 NULL, /*WDI_CLOSE_EVENT*/
172 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
173 }},
174
175 /*WDI_STOPPED_ST*/
176 {{
177 WDI_MainStart, /*WDI_START_EVENT*/
178 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
179 NULL, /*WDI_REQUEST_EVENT*/
180 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
181 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700182 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700183 }},
184
185 /*WDI_BUSY_ST*/
186 {{
187 WDI_MainStartBusy, /*WDI_START_EVENT*/
188 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
189 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
190 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
191 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
192 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
193 }}
194};
195
Jeff Johnsone7245742012-09-05 17:12:55 -0700196/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700197 DAL Request Processing Array - the functions in this table will only be
198 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700199 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700200 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700201WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700202{
203 /*INIT*/
204 WDI_ProcessStartReq, /* WDI_START_REQ */
205 WDI_ProcessStopReq, /* WDI_STOP_REQ */
206 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
207
208 /*SCAN*/
209 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
210 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
211 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
212 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
213
214 /*ASSOCIATION*/
215 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
216 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
217 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
218 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
219 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
220
221 /* Security */
222 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
223 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
224 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
225 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
226
227 /* QoS and BA APIs */
228 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
229 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
230 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
231 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
232 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
233
234 /* Miscellaneous Control APIs */
235 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
236 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
237 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
238 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
239 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
240
241 /*BA APIs*/
242 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
243 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
244
245 /*Beacon processing APIs*/
246 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
247 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
248
249 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
250 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
251 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
252 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
253#ifdef WLAN_FEATURE_P2P
254 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
255#else
256 NULL,
257#endif
258 /* PowerSave APIs */
259 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
260 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
261 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
262 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
263 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
264 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
265 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
266 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
267 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
268 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
269 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
270 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
271 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
272 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
273 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
274 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
275 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
276 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
277 /*NV Download APIs*/
278 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
279 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
280 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
281#ifdef WLAN_FEATURE_VOWIFI_11R
282 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
283#else
284 NULL,
285#endif /* WLAN_FEATURE_VOWIFI_11R */
286 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
287 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
288#ifdef ANI_MANF_DIAG
289 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
290#else
291 NULL,
292#endif /* ANI_MANF_DIAG */
Jeff Johnsone7245742012-09-05 17:12:55 -0700293
294#ifdef FEATURE_OEM_DATA_SUPPORT
295 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
296#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700297 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700298#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700299 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700300
301 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700302
303#ifdef FEATURE_WLAN_SCAN_PNO
304 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
305 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
306 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
307#else
308 NULL,
309 NULL,
310 NULL,
311#endif /* FEATURE_WLAN_SCAN_PNO */
312
313 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700314
Jeff Johnson295189b2012-06-20 16:38:30 -0700315#ifdef WLAN_FEATURE_PACKET_FILTERING
316 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700317 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700318 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700319 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700320 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700321 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700322 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700323 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700324#else
325 NULL,
326 NULL,
327 NULL,
328 NULL,
329#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700330 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700331 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
332 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
333
334 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
335#ifdef FEATURE_WLAN_CCX
336 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
337#else
338 NULL,
339#endif
340
341#ifdef WLAN_FEATURE_GTK_OFFLOAD
342 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
343 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
344#else
345 NULL,
346 NULL,
347#endif // WLAN_FEATURE_GTK_OFFLOAD
348
349 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
350 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700351#ifdef WLAN_FEATURE_11AC
352 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
353#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700354 /*-------------------------------------------------------------------------
355 Indications
356 -------------------------------------------------------------------------*/
357 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800358 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700359};
360
361
Jeff Johnsone7245742012-09-05 17:12:55 -0700362/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700363 DAL Request Processing Array - the functions in this table will only be
364 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700365 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700366 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700367WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700368{
369 /*INIT*/
370 WDI_ProcessStartRsp, /* WDI_START_RESP */
371 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
372 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
373
374 /*SCAN*/
375 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
376 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
377 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
378 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
379
380 /* ASSOCIATION*/
381 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
382 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
383 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
384 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
385 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
386
387 /* Security */
388 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
389 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
390 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
391 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
392
393 /* QoS and BA APIs */
394 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
395 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
396 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
397 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
398 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
399
400 /* Miscellaneous Control APIs */
401 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
402 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
403 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
404 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
405 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
406
407 /* BA APIs*/
408 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
409 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700410
Jeff Johnson295189b2012-06-20 16:38:30 -0700411 /* IBSS APIs*/
412 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
413 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
414
415 /*Soft AP APIs*/
416 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
417 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
418 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
419 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
420
421 /* PowerSave APIs */
422 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
423 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
424 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
425 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
426 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
427 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
428 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
429 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
430 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
431 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
432 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
433 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
434 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
435 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
436 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
437 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
438 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
439 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700440
Jeff Johnson295189b2012-06-20 16:38:30 -0700441
442 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
443
444 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
445 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
446#ifdef WLAN_FEATURE_VOWIFI_11R
447 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
448#else
449 NULL,
450#endif /* WLAN_FEATURE_VOWIFI_11R */
451 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
452 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700453#ifdef FEATURE_OEM_DATA_SUPPORT
454 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
455#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700456 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700457#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700458 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
459
460#ifdef WLAN_FEATURE_P2P
461 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
462#else
463 NULL,
464#endif
465
466#ifdef ANI_MANF_DIAG
467 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
468#else
469 NULL,
470#endif /* ANI_MANF_DIAG */
471
Jeff Johnsone7245742012-09-05 17:12:55 -0700472 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
473
Jeff Johnson295189b2012-06-20 16:38:30 -0700474#ifdef FEATURE_WLAN_SCAN_PNO
475 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
476 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
477 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
478#else
479 NULL,
480 NULL,
481 NULL,
482#endif // FEATURE_WLAN_SCAN_PNO
483
484 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
485
486 /*---------------------------------------------------------------------
487 Indications
488 ---------------------------------------------------------------------*/
489#ifdef WLAN_FEATURE_PACKET_FILTERING
490 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700491 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700492 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700493 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700494 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700495 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700496 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700497 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700498#else
499 NULL,
500 NULL,
501 NULL,
502 NULL,
503#endif // WLAN_FEATURE_PACKET_FILTERING
504
505 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
506 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
507
508 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
509#ifdef FEATURE_WLAN_CCX
510 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
511#else
512 NULL,
513#endif
514
515#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700516 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
517 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700518#else
519 NULL,
520 NULL,
521#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700522 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
523 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700524#ifdef WLAN_FEATURE_11AC
525 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
526#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700527
528 /*---------------------------------------------------------------------
529 Indications
530 ---------------------------------------------------------------------*/
531 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
532 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
533 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
534 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
535 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
536 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
537
538 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
539
540 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
541
542#ifdef WLAN_FEATURE_P2P
543 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
544#else
545 NULL,
546#endif
547
548#ifdef FEATURE_WLAN_SCAN_PNO
549 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
550#else
551 NULL,
552#endif // FEATURE_WLAN_SCAN_PNO
553
554#ifdef WLAN_WAKEUP_EVENTS
555 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
556#else // WLAN_WAKEUP_EVENTS
557 NULL,
558#endif // WLAN_WAKEUP_EVENTS
559
560 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800561
562#ifdef WLAN_FEATURE_P2P
563 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
564#else
565 NULL,
566#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700567};
568
569
Jeff Johnsone7245742012-09-05 17:12:55 -0700570/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700571 WLAN DAL Global Control Block
572 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700573WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700574static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
575
Jeff Johnsone7245742012-09-05 17:12:55 -0700576const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700577
578/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700579WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700580void* WDI_GET_PAL_CTX( void )
581{
Jeff Johnsone7245742012-09-05 17:12:55 -0700582 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700583}/*WDI_GET_PAL_CTX*/
584
Jeff Johnsone7245742012-09-05 17:12:55 -0700585/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700586 Helper inline converters
587 ============================================================================*/
588/*Convert WDI driver type into HAL driver type*/
589WPT_STATIC WPT_INLINE WDI_Status
590WDI_HAL_2_WDI_STATUS
591(
592 eHalStatus halStatus
593);
594
595/*Convert WDI request type into HAL request type*/
596WPT_STATIC WPT_INLINE tHalHostMsgType
597WDI_2_HAL_REQ_TYPE
598(
599 WDI_RequestEnumType wdiReqType
600);
601
602/*Convert WDI response type into HAL response type*/
603WPT_STATIC WPT_INLINE WDI_ResponseEnumType
604HAL_2_WDI_RSP_TYPE
605(
606 tHalHostMsgType halMsg
607);
608
609/*Convert WDI driver type into HAL driver type*/
610WPT_STATIC WPT_INLINE tDriverType
611WDI_2_HAL_DRV_TYPE
612(
613 WDI_DriverType wdiDriverType
614);
615
616/*Convert WDI stop reason into HAL stop reason*/
617WPT_STATIC WPT_INLINE tHalStopType
618WDI_2_HAL_STOP_REASON
619(
620 WDI_StopType wdiStopType
621);
622
623/*Convert WDI scan mode type into HAL scan mode type*/
624WPT_STATIC WPT_INLINE eHalSysMode
625WDI_2_HAL_SCAN_MODE
626(
627 WDI_ScanMode wdiScanMode
628);
629
630/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700631WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700632WDI_2_HAL_SEC_CH_OFFSET
633(
634 WDI_HTSecondaryChannelOffset wdiSecChOffset
635);
636
637/*Convert WDI BSS type into HAL BSS type*/
638WPT_STATIC WPT_INLINE tSirBssType
639WDI_2_HAL_BSS_TYPE
640(
641 WDI_BssType wdiBSSType
642);
643
644/*Convert WDI NW type into HAL NW type*/
645WPT_STATIC WPT_INLINE tSirNwType
646WDI_2_HAL_NW_TYPE
647(
648 WDI_NwType wdiNWType
649);
650
651/*Convert WDI chanel bonding type into HAL cb type*/
652WPT_STATIC WPT_INLINE ePhyChanBondState
653WDI_2_HAL_CB_STATE
654(
655 WDI_PhyChanBondState wdiCbState
656);
657
658/*Convert WDI chanel bonding type into HAL cb type*/
659WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
660WDI_2_HAL_HT_OPER_MODE
661(
662 WDI_HTOperatingMode wdiHTOperMode
663);
664
665/*Convert WDI mimo PS type into HAL mimo PS type*/
666WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
667WDI_2_HAL_MIMO_PS
668(
669 WDI_HTMIMOPowerSaveState wdiHTOperMode
670);
671
672/*Convert WDI ENC type into HAL ENC type*/
673WPT_STATIC WPT_INLINE tAniEdType
674WDI_2_HAL_ENC_TYPE
675(
676 WDI_EncryptType wdiEncType
677);
678
679/*Convert WDI WEP type into HAL WEP type*/
680WPT_STATIC WPT_INLINE tAniWepType
681WDI_2_HAL_WEP_TYPE
682(
683 WDI_WepType wdiWEPType
684);
685
686/*Convert WDI Link State into HAL Link State*/
687WPT_STATIC WPT_INLINE tSirLinkState
688WDI_2_HAL_LINK_STATE
689(
690 WDI_LinkStateType wdiLinkState
691);
692
Jeff Johnsone7245742012-09-05 17:12:55 -0700693/*Translate a STA Context from WDI into HAL*/
694WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700695void
696WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700697(
Jeff Johnson295189b2012-06-20 16:38:30 -0700698 tConfigStaParams* phalConfigSta,
699 WDI_ConfigStaReqInfoType* pwdiConfigSta
700);
Jeff Johnsone7245742012-09-05 17:12:55 -0700701
702/*Translate a Rate set info from WDI into HAL*/
703WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700704WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700705(
Jeff Johnson295189b2012-06-20 16:38:30 -0700706 tSirMacRateSet* pHalRateSet,
707 WDI_RateSet* pwdiRateSet
708);
709
710/*Translate an EDCA Parameter Record from WDI into HAL*/
711WPT_STATIC WPT_INLINE void
712WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700713(
Jeff Johnson295189b2012-06-20 16:38:30 -0700714 tSirMacEdcaParamRecord* phalEdcaParam,
715 WDI_EdcaParamRecord* pWDIEdcaParam
716);
717
718/*Copy a management frame header from WDI fmt into HAL fmt*/
719WPT_STATIC WPT_INLINE void
720WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
721(
722 tSirMacMgmtHdr* pmacMgmtHdr,
723 WDI_MacMgmtHdr* pwdiMacMgmtHdr
724);
725
726/*Copy config bss parameters from WDI fmt into HAL fmt*/
727WPT_STATIC WPT_INLINE void
728WDI_CopyWDIConfigBSSToHALConfigBSS
729(
730 tConfigBssParams* phalConfigBSS,
731 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
732);
733
Jeff Johnsone7245742012-09-05 17:12:55 -0700734/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700735 pointed to by user data */
736WPT_STATIC WPT_INLINE void
737WDI_ExtractRequestCBFromEvent
738(
739 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700740 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700741 void** ppUserData
742);
743
744wpt_uint8
745WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700746(
Jeff Johnson295189b2012-06-20 16:38:30 -0700747 WDI_ControlBlockType* pWDICtx,
748 WDI_BSSSessionType** ppSession
749);
750
751void
752WDI_AddBcastSTAtoSTATable
753(
754 WDI_ControlBlockType* pWDICtx,
755 WDI_AddStaParams * staParams,
756 wpt_uint16 usBcastStaIdx
757);
758
759WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700760(
Jeff Johnson295189b2012-06-20 16:38:30 -0700761 WDI_ControlBlockType* pWDICtx,
762 WDI_EventInfoType* pEventData
763);
764
765void
766WDI_SetPowerStateCb
767(
768 wpt_status status,
769 unsigned int dxePhyAddr,
770 void *pContext
771);
772
773#define CASE_RETURN_STRING( str ) \
774 case ( ( str ) ): return( #str ); break \
775
776/**
777 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700778
779 @param wdiReqMsgId: WDI Message request Id
780
781 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700782 @return Result of the function call
783*/
784static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
785{
786 switch (wdiReqMsgId)
787 {
788 CASE_RETURN_STRING( WDI_START_REQ );
789 CASE_RETURN_STRING( WDI_STOP_REQ );
790 CASE_RETURN_STRING( WDI_CLOSE_REQ );
791 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
792 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
793 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
794 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
795 CASE_RETURN_STRING( WDI_JOIN_REQ );
796 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
797 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
798 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
799 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
800 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
801 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
802 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
803 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
804 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
805 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
806 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
807 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
808 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
809 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
810 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
811 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
812 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
813 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
814 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
815 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
816 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
817 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
818 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
819 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
820 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
821 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
822 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
823 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
824 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
825 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
826 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
827 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
828 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
829 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
830 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
831 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
832 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
833 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
834 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
835 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
836 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
837 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
838 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
839 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
840 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
841 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
842 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
843 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
844 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
845 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
846 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
847 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700848 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700849 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
850 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
851 #ifdef FEATURE_WLAN_SCAN_PNO
852 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
853 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
854 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
855 #endif
856 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
857 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
858 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
859 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
860 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
861 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
862 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
863 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
864 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800865 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Jeff Johnson295189b2012-06-20 16:38:30 -0700866 default:
867 return "Unknown WDI MessageId";
868 }
869}
870
871
872
873/**
874 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700875
876 @param wdiRespMsgId: WDI Message response Id
877
878 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700879 @return Result of the function call
880*/
881static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
882{
883 switch (wdiRespMsgId)
884 {
885 CASE_RETURN_STRING( WDI_START_RESP );
886 CASE_RETURN_STRING( WDI_STOP_RESP );
887 CASE_RETURN_STRING( WDI_CLOSE_RESP );
888 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
889 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
890 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
891 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
892 CASE_RETURN_STRING( WDI_JOIN_RESP );
893 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
894 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
895 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
896 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
897 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
898 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
899 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
900 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
901 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
902 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
903 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
904 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
905 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
906 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
907 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
908 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
909 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
910 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
911 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
912 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
913 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
914 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
915 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
916 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
917 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
918 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
919 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
920 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
921 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
922 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
923 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
924 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
925 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
926 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
927 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
928 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
929 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
930 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
931 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
932 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
933 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
934 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
935 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
936 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
937 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
938 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
939 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
940 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
941 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
942 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
943 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
944 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700945 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700946 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
947 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
948 #ifdef FEATURE_WLAN_SCAN_PNO
949 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
950 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
951 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
952 #endif
953 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
954 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
955 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
956 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
957 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
958 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
959 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
960 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
961 default:
962 return "Unknown WDI MessageId";
963 }
964}
965
966/**
967 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700968
969 @param halStatusId: HAL status Id
970
971 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700972 @return Result of the function call
973*/
974static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
975{
976 switch (halStatusId)
977 {
978 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
979 CASE_RETURN_STRING( PAL_STATUS_INVAL );
980 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
981 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
982 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
983 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
984 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
985 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
986 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
987 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
988 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
989 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
990 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
991 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
992 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
993 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
994 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
995 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
996 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
997 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
998 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
999 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1000 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1001 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1002 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1003 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1004 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1005 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1006 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1007 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1008 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1009 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1010 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1011 default:
1012 return "Unknown HAL status";
1013 }
1014}
1015
Jeff Johnsone7245742012-09-05 17:12:55 -07001016/*========================================================================
1017
Jeff Johnson295189b2012-06-20 16:38:30 -07001018 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001019
Jeff Johnson295189b2012-06-20 16:38:30 -07001020==========================================================================*/
1021
1022/**
1023 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001024
Jeff Johnson295189b2012-06-20 16:38:30 -07001025 DAL will allocate all the resources it needs. It will open PAL, it will also
1026 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001027 DXE/SMD or any other drivers that they need.
1028
Jeff Johnson295189b2012-06-20 16:38:30 -07001029 @param pOSContext: pointer to the OS context provided by the UMAC
1030 will be passed on to PAL on Open
1031 ppWDIGlobalCtx: output pointer of Global Context
1032 pWdiDevCapability: output pointer of device capability
1033
1034 @return Result of the function call
1035*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001036WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001037WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001038(
Jeff Johnson295189b2012-06-20 16:38:30 -07001039 void* pOSContext,
1040 void** ppWDIGlobalCtx,
1041 WDI_DeviceCapabilityType* pWdiDevCapability,
1042 unsigned int driverType
1043)
1044{
1045 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001046 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001047 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001048 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1050
1051 /*---------------------------------------------------------------------
1052 Sanity check
1053 ---------------------------------------------------------------------*/
1054 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1055 {
1056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1057 "Invalid input parameters in WDI_Init");
1058
Jeff Johnsone7245742012-09-05 17:12:55 -07001059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001060 }
1061
1062 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001063 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001064 ---------------------------------------------------------------------*/
1065 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1066 {
1067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1068 "WDI module already initialized - return");
1069
Jeff Johnsone7245742012-09-05 17:12:55 -07001070 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001071 }
1072
1073 /*Module is now initialized - this flag is to ensure the fact that multiple
1074 init will not happen on WDI
1075 !! - potential race does exist because read and set are not atomic,
1076 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001077 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001078
1079 /*Setup the control block */
1080 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001081 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001082
1083 /*Setup the STA Table*/
1084 wdiStatus = WDI_STATableInit(&gWDICb);
1085 if ( WDI_STATUS_SUCCESS != wdiStatus )
1086 {
1087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1088 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001089 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001090 goto fail_STATableInit;
1091 }
1092
1093 /*------------------------------------------------------------------------
1094 Open the PAL
1095 ------------------------------------------------------------------------*/
1096 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1097 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1098 {
1099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1100 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001101 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001102 goto fail_wpalOpen;
1103 }
1104
1105 /*Initialize main synchro mutex - it will be used to ensure integrity of
1106 the main WDI Control Block*/
1107 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1108 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1109 {
1110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1111 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001112 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001113 goto fail_mutex;
1114 }
1115
1116 /*Initialize the response timer - it will be used to time all messages
1117 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001118 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1119 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001120 &gWDICb);
1121 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1122 {
1123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1124 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001125 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001126 goto fail_timer;
1127 }
1128
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001129 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1130 WDI_SsrTimerCB,
1131 &gWDICb);
1132 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1133 {
1134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1135 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001136 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001137 goto fail_timer2;
1138 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001139 /* Initialize the WDI Pending Request Queue*/
1140 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1141 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1142 {
1143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1144 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001145 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001146 goto fail_pend_queue;
1147 }
1148
1149 /*Init WDI Pending Assoc Id Queue */
1150 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1151 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1152 {
1153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1154 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001155 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001156 goto fail_assoc_queue;
1157 }
1158
1159 /*Initialize the BSS sessions pending Queue */
1160 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1161 {
1162 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1163 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1164 {
1165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1166 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001167 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001168 goto fail_bss_queue;
1169 }
1170 }
1171
1172 /*Indicate the control block is sufficiently initialized for callbacks*/
1173 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1174
1175 /*------------------------------------------------------------------------
1176 Initialize the Data Path Utility Module
1177 ------------------------------------------------------------------------*/
1178 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1179 if ( WDI_STATUS_SUCCESS != wdiStatus )
1180 {
1181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1182 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001183 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001184 goto fail_dp_util_init;
1185 }
1186
1187 /* Init Set power state event */
1188 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001189 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001190 {
1191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1192 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001193 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001194 goto fail_power_event;
1195 }
1196
1197 /* Init WCTS action event */
1198 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001199 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001200 {
1201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1202 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001203 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001204 goto fail_wcts_event;
1205 }
1206
1207 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001208 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001209 ------------------------------------------------------------------------*/
1210 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1211 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001212 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001213 wctsCBs.wctsRxMsgCBData = &gWDICb;
1214
Jeff Johnsone7245742012-09-05 17:12:55 -07001215 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001216 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001217 WDI_CT_CHANNEL_SIZE,
1218 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001219
1220 if ( NULL == gWDICb.wctsHandle )
1221 {
1222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001223 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001224 goto fail_wcts_open;
1225 }
1226
1227 gWDICb.driverMode = (tDriverType)driverType;
1228 /* FTM mode not need to open Transport Driver */
1229 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001230 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001231 /*------------------------------------------------------------------------
1232 Open the Data Transport
1233 ------------------------------------------------------------------------*/
1234 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1235 {
1236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001237 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001238 goto fail_wdts_open;
1239 }
1240 }
1241
1242 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001243 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001244
1245 /*Send the context as a ptr to the global WDI Control Block*/
1246 *ppWDIGlobalCtx = &gWDICb;
1247
1248 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001249 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001250 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1251 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1252 return WDI_STATUS_SUCCESS;
1253
1254 /* ERROR handlers
1255 Undo everything that completed successfully */
1256
1257 fail_wdts_open:
1258 {
1259 wpt_status eventStatus;
1260
1261 /* Closing WCTS in this scenario is tricky since it has to close
1262 the SMD channel and then we get notified asynchronously when
1263 the channel has been closed. So we take some of the logic from
1264 the "normal" close procedure in WDI_Close()
1265 */
1266
1267 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001268 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001269 {
1270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001271 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001272 }
1273
1274 WCTS_CloseTransport(gWDICb.wctsHandle);
1275
1276 /* Wait for WCTS to close the control transport. If we were able
1277 to reset the event flag, then we'll wait for the event,
1278 otherwise we'll wait for a maximum amount of time required for
1279 the channel to be closed */
1280 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1281 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001282 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 WDI_WCTS_ACTION_TIMEOUT);
1284 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1285 {
1286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001287 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001288 }
1289 }
1290 else
1291 {
1292 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1293 }
1294 }
1295 fail_wcts_open:
1296 wpalEventDelete(&gWDICb.wctsActionEvent);
1297 fail_wcts_event:
1298 wpalEventDelete(&gWDICb.setPowerStateEvent);
1299 fail_power_event:
1300 WDI_DP_UtilsExit(&gWDICb);
1301 fail_dp_util_init:
1302 gWDICb.magic = 0;
1303 fail_bss_queue:
1304 /* entries 0 thru i-1 were successfully initialized */
1305 while (0 < i)
1306 {
1307 i--;
1308 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1309 }
1310 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1311 fail_assoc_queue:
1312 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1313 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001314 wpalTimerDelete(&gWDICb.ssrTimer);
1315 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001316 wpalTimerDelete(&gWDICb.wptResponseTimer);
1317 fail_timer:
1318 wpalMutexDelete(&gWDICb.wptMutex);
1319 fail_mutex:
1320 wpalClose(gWDICb.pPALContext);
1321 fail_wpalOpen:
1322 WDI_STATableClose(&gWDICb);
1323 fail_STATableInit:
1324 gWDIInitialized = eWLAN_PAL_FALSE;
1325
1326 return WDI_STATUS_E_FAILURE;
1327
1328}/*WDI_Init*/;
1329
1330/**
1331 @brief WDI_Start will be called when the upper MAC is ready to
1332 commence operation with the WLAN Device. Upon the call
1333 of this API the WLAN DAL will pack and send a HAL Start
1334 message to the lower RIVA sub-system if the SMD channel
1335 has been fully opened and the RIVA subsystem is up.
1336
1337 If the RIVA sub-system is not yet up and running DAL
1338 will queue the request for Open and will wait for the
1339 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001340 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001341
1342 WDI_Init must have been called.
1343
Jeff Johnsone7245742012-09-05 17:12:55 -07001344 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001345 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001346
Jeff Johnson295189b2012-06-20 16:38:30 -07001347 wdiStartRspCb: callback for passing back the response of
1348 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001349
Jeff Johnson295189b2012-06-20 16:38:30 -07001350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001351 callback
1352
Jeff Johnson295189b2012-06-20 16:38:30 -07001353 @see WDI_Start
1354 @return Result of the function call
1355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001357WDI_Start
1358(
1359 WDI_StartReqParamsType* pwdiStartParams,
1360 WDI_StartRspCb wdiStartRspCb,
1361 void* pUserData
1362)
1363{
1364 WDI_EventInfoType wdiEventData;
1365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1366
1367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001369 ------------------------------------------------------------------------*/
1370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1371 {
1372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1373 "WDI API call before module is initialized - Fail request");
1374
Jeff Johnsone7245742012-09-05 17:12:55 -07001375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001376 }
1377
1378 /*------------------------------------------------------------------------
1379 Fill in Event data and post to the Main FSM
1380 ------------------------------------------------------------------------*/
1381 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001382 wdiEventData.pEventData = pwdiStartParams;
1383 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1384 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001385 wdiEventData.pUserData = pUserData;
1386
1387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1388
1389}/*WDI_Start*/
1390
1391/**
1392 @brief WDI_Stop will be called when the upper MAC is ready to
1393 stop any operation with the WLAN Device. Upon the call
1394 of this API the WLAN DAL will pack and send a HAL Stop
1395 message to the lower RIVA sub-system if the DAL Core is
1396 in started state.
1397
1398 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001399
1400 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001401
1402 WDI_Start must have been called.
1403
Jeff Johnsone7245742012-09-05 17:12:55 -07001404 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001405 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001406
Jeff Johnson295189b2012-06-20 16:38:30 -07001407 wdiStopRspCb: callback for passing back the response of
1408 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001409
Jeff Johnson295189b2012-06-20 16:38:30 -07001410 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001411 callback
1412
Jeff Johnson295189b2012-06-20 16:38:30 -07001413 @see WDI_Start
1414 @return Result of the function call
1415*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001416WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001417WDI_Stop
1418(
1419 WDI_StopReqParamsType* pwdiStopParams,
1420 WDI_StopRspCb wdiStopRspCb,
1421 void* pUserData
1422)
1423{
1424 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001425 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1427
1428 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001430 ------------------------------------------------------------------------*/
1431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1432 {
1433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1434 "WDI API call before module is initialized - Fail request");
1435
Jeff Johnsone7245742012-09-05 17:12:55 -07001436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001437 }
1438
Jeff Johnson43971f52012-07-17 12:26:56 -07001439 /*Access to the global state must be locked before cleaning */
1440 wpalMutexAcquire(&pWDICtx->wptMutex);
1441
1442 /*Clear all pending request*/
1443 WDI_ClearPendingRequests(pWDICtx);
1444
1445 /*We have completed cleaning unlock now*/
1446 wpalMutexRelease(&pWDICtx->wptMutex);
1447
Jeff Johnson295189b2012-06-20 16:38:30 -07001448 /* Free the global variables */
1449 wpalMemoryFree(gpHostWlanFeatCaps);
1450 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001451 gpHostWlanFeatCaps = NULL;
1452 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001453
1454 /*------------------------------------------------------------------------
1455 Fill in Event data and post to the Main FSM
1456 ------------------------------------------------------------------------*/
1457 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001458 wdiEventData.pEventData = pwdiStopParams;
1459 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1460 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 wdiEventData.pUserData = pUserData;
1462
1463 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1464
1465}/*WDI_Stop*/
1466
1467
1468
1469/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001470 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001471 needs to interact with DAL. DAL will free its control
1472 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001473
1474 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001475
1476 WDI_Stop must have been called.
1477
1478 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001479
Jeff Johnson295189b2012-06-20 16:38:30 -07001480 @see WDI_Stop
1481 @return Result of the function call
1482*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001483WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001484WDI_Close
1485(
1486 void
1487)
1488{
1489 wpt_uint8 i;
1490 WDI_EventInfoType wdiEventData;
1491 wpt_status wptStatus;
1492 wpt_status eventStatus;
1493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1494
1495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001497 ------------------------------------------------------------------------*/
1498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1499 {
1500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1501 "WDI API call before module is initialized - Fail request");
1502
Jeff Johnsone7245742012-09-05 17:12:55 -07001503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 }
1505
1506 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1507 (the control transport will be closed by the FSM and we'll want
1508 to wait until that completes)*/
1509 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001510 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001511 {
1512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001513 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001514 /* fall through and try to finish closing via the FSM */
1515 }
1516
1517 /*------------------------------------------------------------------------
1518 Fill in Event data and post to the Main FSM
1519 ------------------------------------------------------------------------*/
1520 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001521 wdiEventData.pEventData = NULL;
1522 wdiEventData.uEventDataSize = 0;
1523 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001524 wdiEventData.pUserData = NULL;
1525
1526 gWDIInitialized = eWLAN_PAL_FALSE;
1527
1528 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1529
1530 /*Wait for WCTS to close the control transport
1531 (but only if we were able to reset the event flag*/
1532 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1533 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001534 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001535 WDI_WCTS_ACTION_TIMEOUT);
1536 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1537 {
1538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001539 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001540 }
1541 }
1542
1543 /* Destroy the WCTS action event */
1544 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1545 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1546 {
1547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1548 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001549 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 }
1551
1552 /* Destroy the Set Power State event */
1553 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1554 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1555 {
1556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1557 "WDI Close failed to destroy an event");
1558
Jeff Johnsone7245742012-09-05 17:12:55 -07001559 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001560 }
1561
1562 /*------------------------------------------------------------------------
1563 Closes the Data Path Utility Module
1564 ------------------------------------------------------------------------*/
1565 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1566 {
1567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1568 "WDI Init failed to close the DP Util Module");
1569
Jeff Johnsone7245742012-09-05 17:12:55 -07001570 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001571 }
1572
1573 /*destroy the BSS sessions pending Queue */
1574 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1575 {
1576 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1577 }
1578
1579 /* destroy the WDI Pending Assoc Id Request Queue*/
1580 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1581
1582 /* destroy the WDI Pending Request Queue*/
1583 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001584
Jeff Johnson295189b2012-06-20 16:38:30 -07001585 /*destroy the response timer */
1586 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1587
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001588 /*destroy the SSR timer */
1589 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1590
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 /*invalidate the main synchro mutex */
1592 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1593 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1594 {
1595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1596 "Failed to delete mutex %d", wptStatus);
1597 WDI_ASSERT(0);
1598 }
1599
1600 /*Clear control block. note that this will clear the "magic"
1601 which will inhibit all asynchronous callbacks*/
1602 WDI_CleanCB(&gWDICb);
1603
1604 return wptStatus;
1605
1606}/*WDI_Close*/
1607
1608/**
1609 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1610 This will do most of the WDI stop & close
1611 operations without doing any handshake with Riva
1612
1613 This will also make sure that the control transport
1614 will NOT be closed.
1615
1616 This request will not be queued.
1617
1618
1619 WDI_Start must have been called.
1620
1621 @param closeTransport: Close control channel if this is set
1622
1623 @return Result of the function call
1624*/
1625WDI_Status
1626WDI_Shutdown
1627(
1628 wpt_boolean closeTransport
1629)
1630{
1631 WDI_EventInfoType wdiEventData;
1632 wpt_status wptStatus;
1633 int i = 0;
1634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1635
1636 /*------------------------------------------------------------------------
1637 Sanity Check
1638 ------------------------------------------------------------------------*/
1639 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1640 {
1641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1642 "WDI API call before module is initialized - Fail request");
1643
1644 return WDI_STATUS_E_NOT_ALLOWED;
1645 }
1646
1647 /*------------------------------------------------------------------------
1648 Fill in Event data and post to the Main FSM
1649 ------------------------------------------------------------------------*/
1650 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1651 wdiEventData.pEventData = NULL;
1652 wdiEventData.uEventDataSize = 0;
1653
1654 /* Shutdown will not be queued, if the state is busy timer will be
1655 * stopped & this message will be processed.*/
1656 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1657 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1658 {
1659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001660 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 }
1662 /* Destroy the Set Power State event */
1663 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1664 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1665 {
1666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1667 "WDI Close failed to destroy an event");
1668
1669 WDI_ASSERT(0);
1670 }
1671 /*------------------------------------------------------------------------
1672 Closes the Data Path Utility Module
1673 ------------------------------------------------------------------------*/
1674 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1675 {
1676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1677 "WDI Init failed to close the DP Util Module");
1678
1679 WDI_ASSERT(0);
1680 }
1681 if ( closeTransport )
1682 {
1683 /* Close control transport, called from module unload */
1684 WCTS_CloseTransport(gWDICb.wctsHandle);
1685 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001686 else
1687 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001688 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001689 the pending messages in the transport queue */
1690 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1691 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001692 /*destroy the BSS sessions pending Queue */
1693 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1694 {
1695 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1696 }
1697
1698 /* destroy the WDI Pending Assoc Id Request Queue*/
1699 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1700 /* destroy the WDI Pending Request Queue*/
1701 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1702 /*destroy the response timer */
1703 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001704 /*destroy the SSR timer */
1705 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001706
1707 /*invalidate the main synchro mutex */
1708 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1709 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1710 {
1711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001712 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 WDI_ASSERT(0);
1714 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001715 /* Free the global variables */
1716 wpalMemoryFree(gpHostWlanFeatCaps);
1717 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001718 gpHostWlanFeatCaps = NULL;
1719 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001720 /*Clear control block. note that this will clear the "magic"
1721 which will inhibit all asynchronous callbacks*/
1722 WDI_CleanCB(&gWDICb);
1723 return wptStatus;
1724
1725}/*WDI_Shutdown*/
1726
1727
Jeff Johnsone7245742012-09-05 17:12:55 -07001728/*========================================================================
1729
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001731
Jeff Johnson295189b2012-06-20 16:38:30 -07001732==========================================================================*/
1733
1734/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001735 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001736 the WLAN Device to get ready for a scan procedure. Upon
1737 the call of this API the WLAN DAL will pack and send a
1738 HAL Init Scan request message to the lower RIVA
1739 sub-system if DAL is in state STARTED.
1740
1741 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001742 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001743
1744 WDI_Start must have been called.
1745
1746 @param wdiInitScanParams: the init scan parameters as specified
1747 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001748
Jeff Johnson295189b2012-06-20 16:38:30 -07001749 wdiInitScanRspCb: callback for passing back the response
1750 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001751
Jeff Johnson295189b2012-06-20 16:38:30 -07001752 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001753 callback
1754
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 @see WDI_Start
1756 @return Result of the function call
1757*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001758WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001759WDI_InitScanReq
1760(
1761 WDI_InitScanReqParamsType* pwdiInitScanParams,
1762 WDI_InitScanRspCb wdiInitScanRspCb,
1763 void* pUserData
1764)
1765{
1766 WDI_EventInfoType wdiEventData;
1767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1768
1769 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001770 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001771 ------------------------------------------------------------------------*/
1772 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1773 {
1774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1775 "WDI API call before module is initialized - Fail request");
1776
Jeff Johnsone7245742012-09-05 17:12:55 -07001777 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001778 }
1779
1780 /*------------------------------------------------------------------------
1781 Fill in Event data and post to the Main FSM
1782 ------------------------------------------------------------------------*/
1783 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 wdiEventData.pEventData = pwdiInitScanParams;
1785 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1786 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001787 wdiEventData.pUserData = pUserData;
1788
1789 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1790
1791}/*WDI_InitScanReq*/
1792
1793/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001794 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001795 wishes to change the Scan channel on the WLAN Device.
1796 Upon the call of this API the WLAN DAL will pack and
1797 send a HAL Start Scan request message to the lower RIVA
1798 sub-system if DAL is in state STARTED.
1799
1800 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001801 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001802
1803 WDI_InitScanReq must have been called.
1804
Jeff Johnsone7245742012-09-05 17:12:55 -07001805 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001806 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001807
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 wdiStartScanRspCb: callback for passing back the
1809 response of the start scan operation received from the
1810 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001811
Jeff Johnson295189b2012-06-20 16:38:30 -07001812 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001813 callback
1814
Jeff Johnson295189b2012-06-20 16:38:30 -07001815 @see WDI_InitScanReq
1816 @return Result of the function call
1817*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001818WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001819WDI_StartScanReq
1820(
1821 WDI_StartScanReqParamsType* pwdiStartScanParams,
1822 WDI_StartScanRspCb wdiStartScanRspCb,
1823 void* pUserData
1824)
1825{
1826 WDI_EventInfoType wdiEventData;
1827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1828
1829 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001830 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001831 ------------------------------------------------------------------------*/
1832 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1833 {
1834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1835 "WDI API call before module is initialized - Fail request");
1836
Jeff Johnsone7245742012-09-05 17:12:55 -07001837 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001838 }
1839
1840 /*------------------------------------------------------------------------
1841 Fill in Event data and post to the Main FSM
1842 ------------------------------------------------------------------------*/
1843 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001844 wdiEventData.pEventData = pwdiStartScanParams;
1845 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1846 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001847 wdiEventData.pUserData = pUserData;
1848
1849 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1850
1851}/*WDI_StartScanReq*/
1852
1853
1854/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001855 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001856 wants to end scanning for a particular channel that it
1857 had set before by calling Scan Start on the WLAN Device.
1858 Upon the call of this API the WLAN DAL will pack and
1859 send a HAL End Scan request message to the lower RIVA
1860 sub-system if DAL is in state STARTED.
1861
1862 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001863 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001864
1865 WDI_StartScanReq must have been called.
1866
Jeff Johnsone7245742012-09-05 17:12:55 -07001867 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001868 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001869
Jeff Johnson295189b2012-06-20 16:38:30 -07001870 wdiEndScanRspCb: callback for passing back the response
1871 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001872
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001874 callback
1875
Jeff Johnson295189b2012-06-20 16:38:30 -07001876 @see WDI_StartScanReq
1877 @return Result of the function call
1878*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001879WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001880WDI_EndScanReq
1881(
1882 WDI_EndScanReqParamsType* pwdiEndScanParams,
1883 WDI_EndScanRspCb wdiEndScanRspCb,
1884 void* pUserData
1885)
1886{
1887 WDI_EventInfoType wdiEventData;
1888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1889
1890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001891 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001892 ------------------------------------------------------------------------*/
1893 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1894 {
1895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1896 "WDI API call before module is initialized - Fail request");
1897
Jeff Johnsone7245742012-09-05 17:12:55 -07001898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001899 }
1900
1901 /*------------------------------------------------------------------------
1902 Fill in Event data and post to the Main FSM
1903 ------------------------------------------------------------------------*/
1904 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001905 wdiEventData.pEventData = pwdiEndScanParams;
1906 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1907 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001908 wdiEventData.pUserData = pUserData;
1909
1910 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1911
1912}/*WDI_EndScanReq*/
1913
1914
1915/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001916 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001917 completed the scan process on the WLAN Device. Upon the
1918 call of this API the WLAN DAL will pack and send a HAL
1919 Finish Scan Request request message to the lower RIVA
1920 sub-system if DAL is in state STARTED.
1921
1922 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001923 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001924
1925 WDI_InitScanReq must have been called.
1926
Jeff Johnsone7245742012-09-05 17:12:55 -07001927 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001928 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001929
Jeff Johnson295189b2012-06-20 16:38:30 -07001930 wdiFinishScanRspCb: callback for passing back the
1931 response of the finish scan operation received from the
1932 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001933
Jeff Johnson295189b2012-06-20 16:38:30 -07001934 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001935 callback
1936
Jeff Johnson295189b2012-06-20 16:38:30 -07001937 @see WDI_InitScanReq
1938 @return Result of the function call
1939*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001940WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001941WDI_FinishScanReq
1942(
1943 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1944 WDI_FinishScanRspCb wdiFinishScanRspCb,
1945 void* pUserData
1946)
1947{
1948 WDI_EventInfoType wdiEventData;
1949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1950
1951 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001952 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001953 ------------------------------------------------------------------------*/
1954 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1955 {
1956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1957 "WDI API call before module is initialized - Fail request");
1958
Jeff Johnsone7245742012-09-05 17:12:55 -07001959 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001960 }
1961
1962 /*------------------------------------------------------------------------
1963 Fill in Event data and post to the Main FSM
1964 ------------------------------------------------------------------------*/
1965 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001966 wdiEventData.pEventData = pwdiFinishScanParams;
1967 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1968 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001969 wdiEventData.pUserData = pUserData;
1970
1971 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1972
1973}/*WDI_FinishScanReq*/
1974
Jeff Johnsone7245742012-09-05 17:12:55 -07001975/*========================================================================
1976
Jeff Johnson295189b2012-06-20 16:38:30 -07001977 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001978
Jeff Johnson295189b2012-06-20 16:38:30 -07001979==========================================================================*/
1980
1981/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001982 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001983 to start an association procedure to a BSS. Upon the
1984 call of this API the WLAN DAL will pack and send a HAL
1985 Join request message to the lower RIVA sub-system if
1986 DAL is in state STARTED.
1987
1988 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001989 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001990
1991 WDI_Start must have been called.
1992
Jeff Johnsone7245742012-09-05 17:12:55 -07001993 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001995
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 wdiJoinRspCb: callback for passing back the response of
1997 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001998
Jeff Johnson295189b2012-06-20 16:38:30 -07001999 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002000 callback
2001
Jeff Johnson295189b2012-06-20 16:38:30 -07002002 @see WDI_Start
2003 @return Result of the function call
2004*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002005WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002006WDI_JoinReq
2007(
2008 WDI_JoinReqParamsType* pwdiJoinParams,
2009 WDI_JoinRspCb wdiJoinRspCb,
2010 void* pUserData
2011)
2012{
2013 WDI_EventInfoType wdiEventData;
2014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2015
2016 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002017 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002018 ------------------------------------------------------------------------*/
2019 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2020 {
2021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2022 "WDI API call before module is initialized - Fail request");
2023
Jeff Johnsone7245742012-09-05 17:12:55 -07002024 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 }
2026
2027 /*------------------------------------------------------------------------
2028 Fill in Event data and post to the Main FSM
2029 ------------------------------------------------------------------------*/
2030 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002031 wdiEventData.pEventData = pwdiJoinParams;
2032 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2033 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 wdiEventData.pUserData = pUserData;
2035
2036 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2037
2038}/*WDI_JoinReq*/
2039
2040/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 wishes to configure the newly acquired or in process of
2043 being acquired BSS to the HW . Upon the call of this API
2044 the WLAN DAL will pack and send a HAL Config BSS request
2045 message to the lower RIVA sub-system if DAL is in state
2046 STARTED.
2047
2048 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002049 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002050
2051 WDI_JoinReq must have been called.
2052
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002055
Jeff Johnson295189b2012-06-20 16:38:30 -07002056 wdiConfigBSSRspCb: callback for passing back the
2057 response of the config BSS operation received from the
2058 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002059
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002061 callback
2062
Jeff Johnson295189b2012-06-20 16:38:30 -07002063 @see WDI_JoinReq
2064 @return Result of the function call
2065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002067WDI_ConfigBSSReq
2068(
2069 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2070 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2071 void* pUserData
2072)
2073{
2074 WDI_EventInfoType wdiEventData;
2075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2076
2077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002079 ------------------------------------------------------------------------*/
2080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2081 {
2082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2083 "WDI API call before module is initialized - Fail request");
2084
Jeff Johnsone7245742012-09-05 17:12:55 -07002085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002086 }
2087
2088 /*------------------------------------------------------------------------
2089 Fill in Event data and post to the Main FSM
2090 ------------------------------------------------------------------------*/
2091 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002092 wdiEventData.pEventData = pwdiConfigBSSParams;
2093 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2094 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 wdiEventData.pUserData = pUserData;
2096
2097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2098
2099}/*WDI_ConfigBSSReq*/
2100
2101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002102 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002103 disassociating from the BSS and wishes to notify HW.
2104 Upon the call of this API the WLAN DAL will pack and
2105 send a HAL Del BSS request message to the lower RIVA
2106 sub-system if DAL is in state STARTED.
2107
2108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002110
2111 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2112
Jeff Johnsone7245742012-09-05 17:12:55 -07002113 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002115
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 wdiDelBSSRspCb: callback for passing back the response
2117 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002118
Jeff Johnson295189b2012-06-20 16:38:30 -07002119 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002120 callback
2121
2122 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 @return Result of the function call
2124*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002125WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002126WDI_DelBSSReq
2127(
2128 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2129 WDI_DelBSSRspCb wdiDelBSSRspCb,
2130 void* pUserData
2131)
2132{
2133 WDI_EventInfoType wdiEventData;
2134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2135
2136 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002137 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002138 ------------------------------------------------------------------------*/
2139 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2140 {
2141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2142 "WDI API call before module is initialized - Fail request");
2143
Jeff Johnsone7245742012-09-05 17:12:55 -07002144 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 }
2146
2147 /*------------------------------------------------------------------------
2148 Fill in Event data and post to the Main FSM
2149 ------------------------------------------------------------------------*/
2150 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002151 wdiEventData.pEventData = pwdiDelBSSParams;
2152 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2153 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002154 wdiEventData.pUserData = pUserData;
2155
2156 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2157
2158}/*WDI_DelBSSReq*/
2159
2160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002161 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002162 associated to a BSS and wishes to configure HW for
2163 associated state. Upon the call of this API the WLAN DAL
2164 will pack and send a HAL Post Assoc request message to
2165 the lower RIVA sub-system if DAL is in state STARTED.
2166
2167 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002169
2170 WDI_JoinReq must have been called.
2171
2172 @param wdiPostAssocReqParams: the assoc parameters as specified
2173 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002174
Jeff Johnson295189b2012-06-20 16:38:30 -07002175 wdiPostAssocRspCb: callback for passing back the
2176 response of the post assoc operation received from the
2177 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002178
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002180 callback
2181
Jeff Johnson295189b2012-06-20 16:38:30 -07002182 @see WDI_JoinReq
2183 @return Result of the function call
2184*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002185WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002186WDI_PostAssocReq
2187(
2188 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2189 WDI_PostAssocRspCb wdiPostAssocRspCb,
2190 void* pUserData
2191)
2192{
2193 WDI_EventInfoType wdiEventData;
2194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2195
2196 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002197 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002198 ------------------------------------------------------------------------*/
2199 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2200 {
2201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2202 "WDI API call before module is initialized - Fail request");
2203
Jeff Johnsone7245742012-09-05 17:12:55 -07002204 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002205 }
2206
2207 /*------------------------------------------------------------------------
2208 Fill in Event data and post to the Main FSM
2209 ------------------------------------------------------------------------*/
2210 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002211 wdiEventData.pEventData = pwdiPostAssocReqParams;
2212 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2213 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002214 wdiEventData.pUserData = pUserData;
2215
2216 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2217
2218}/*WDI_PostAssocReq*/
2219
2220/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002221 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002222 association with another STA has ended and the station
2223 must be deleted from HW. Upon the call of this API the
2224 WLAN DAL will pack and send a HAL Del STA request
2225 message to the lower RIVA sub-system if DAL is in state
2226 STARTED.
2227
2228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002230
2231 WDI_PostAssocReq must have been called.
2232
Jeff Johnsone7245742012-09-05 17:12:55 -07002233 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002235
Jeff Johnson295189b2012-06-20 16:38:30 -07002236 wdiDelSTARspCb: callback for passing back the response
2237 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002238
Jeff Johnson295189b2012-06-20 16:38:30 -07002239 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002240 callback
2241
Jeff Johnson295189b2012-06-20 16:38:30 -07002242 @see WDI_PostAssocReq
2243 @return Result of the function call
2244*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002246WDI_DelSTAReq
2247(
2248 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2249 WDI_DelSTARspCb wdiDelSTARspCb,
2250 void* pUserData
2251)
2252{
2253 WDI_EventInfoType wdiEventData;
2254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2255
2256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002258 ------------------------------------------------------------------------*/
2259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2260 {
2261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2262 "WDI API call before module is initialized - Fail request");
2263
Jeff Johnsone7245742012-09-05 17:12:55 -07002264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002265 }
2266
2267 /*------------------------------------------------------------------------
2268 Fill in Event data and post to the Main FSM
2269 ------------------------------------------------------------------------*/
2270 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002271 wdiEventData.pEventData = pwdiDelSTAParams;
2272 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2273 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002274 wdiEventData.pUserData = pUserData;
2275
2276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2277
2278}/*WDI_DelSTAReq*/
2279
Jeff Johnsone7245742012-09-05 17:12:55 -07002280/*========================================================================
2281
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002283
Jeff Johnson295189b2012-06-20 16:38:30 -07002284==========================================================================*/
2285
2286/**
2287 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2288 install a BSS encryption key on the HW. Upon the call of this
2289 API the WLAN DAL will pack and send a Set BSS Key request
2290 message to the lower RIVA sub-system if DAL is in state
2291 STARTED.
2292
2293 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002294 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002295
2296 WDI_PostAssocReq must have been called.
2297
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002299 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002300
Jeff Johnson295189b2012-06-20 16:38:30 -07002301 wdiSetBSSKeyRspCb: callback for passing back the
2302 response of the set BSS Key operation received from the
2303 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002304
Jeff Johnson295189b2012-06-20 16:38:30 -07002305 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002306 callback
2307
Jeff Johnson295189b2012-06-20 16:38:30 -07002308 @see WDI_PostAssocReq
2309 @return Result of the function call
2310*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002311WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002312WDI_SetBSSKeyReq
2313(
2314 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2315 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2316 void* pUserData
2317)
2318{
2319 WDI_EventInfoType wdiEventData;
2320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2321
2322 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002323 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002324 ------------------------------------------------------------------------*/
2325 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2326 {
2327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2328 "WDI API call before module is initialized - Fail request");
2329
Jeff Johnsone7245742012-09-05 17:12:55 -07002330 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002331 }
2332
2333 /*------------------------------------------------------------------------
2334 Fill in Event data and post to the Main FSM
2335 ------------------------------------------------------------------------*/
2336 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002337 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2338 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2339 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002340 wdiEventData.pUserData = pUserData;
2341
2342 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2343
2344}/*WDI_SetBSSKeyReq*/
2345
2346/**
2347 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2348 uninstall a BSS key from HW. Upon the call of this API the
2349 WLAN DAL will pack and send a HAL Remove BSS Key request
2350 message to the lower RIVA sub-system if DAL is in state
2351 STARTED.
2352
2353 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002354 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002355
2356 WDI_SetBSSKeyReq must have been called.
2357
Jeff Johnsone7245742012-09-05 17:12:55 -07002358 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002359 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002360
Jeff Johnson295189b2012-06-20 16:38:30 -07002361 wdiRemoveBSSKeyRspCb: callback for passing back the
2362 response of the remove BSS key operation received from
2363 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002364
Jeff Johnson295189b2012-06-20 16:38:30 -07002365 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002366 callback
2367
Jeff Johnson295189b2012-06-20 16:38:30 -07002368 @see WDI_SetBSSKeyReq
2369 @return Result of the function call
2370*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002371WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002372WDI_RemoveBSSKeyReq
2373(
2374 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2375 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2376 void* pUserData
2377)
2378{
2379 WDI_EventInfoType wdiEventData;
2380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2381
2382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002384 ------------------------------------------------------------------------*/
2385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2386 {
2387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2388 "WDI API call before module is initialized - Fail request");
2389
Jeff Johnsone7245742012-09-05 17:12:55 -07002390 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002391 }
2392
2393 /*------------------------------------------------------------------------
2394 Fill in Event data and post to the Main FSM
2395 ------------------------------------------------------------------------*/
2396 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002397 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2398 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2399 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002400 wdiEventData.pUserData = pUserData;
2401
2402 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2403
2404}/*WDI_RemoveBSSKeyReq*/
2405
2406
2407/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002409 ready to install a STA(ast) encryption key in HW. Upon
2410 the call of this API the WLAN DAL will pack and send a
2411 HAL Set STA Key request message to the lower RIVA
2412 sub-system if DAL is in state STARTED.
2413
2414 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002415 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002416
2417 WDI_PostAssocReq must have been called.
2418
Jeff Johnsone7245742012-09-05 17:12:55 -07002419 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002420 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002421
Jeff Johnson295189b2012-06-20 16:38:30 -07002422 wdiSetSTAKeyRspCb: callback for passing back the
2423 response of the set STA key operation received from the
2424 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002425
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 callback
2428
Jeff Johnson295189b2012-06-20 16:38:30 -07002429 @see WDI_PostAssocReq
2430 @return Result of the function call
2431*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002432WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002433WDI_SetSTAKeyReq
2434(
2435 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2436 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2437 void* pUserData
2438)
2439{
2440 WDI_EventInfoType wdiEventData;
2441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2442
2443 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002445 ------------------------------------------------------------------------*/
2446 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2447 {
2448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2449 "WDI API call before module is initialized - Fail request");
2450
Jeff Johnsone7245742012-09-05 17:12:55 -07002451 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002452 }
2453
2454 /*------------------------------------------------------------------------
2455 Fill in Event data and post to the Main FSM
2456 ------------------------------------------------------------------------*/
2457 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2459 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2460 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 wdiEventData.pUserData = pUserData;
2462
2463 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2464
2465}/*WDI_SetSTAKeyReq*/
2466
2467
2468/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002469 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002470 wants to uninstall a previously set STA key in HW. Upon
2471 the call of this API the WLAN DAL will pack and send a
2472 HAL Remove STA Key request message to the lower RIVA
2473 sub-system if DAL is in state STARTED.
2474
2475 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002476 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002477
2478 WDI_SetSTAKeyReq must have been called.
2479
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002482
Jeff Johnson295189b2012-06-20 16:38:30 -07002483 wdiRemoveSTAKeyRspCb: callback for passing back the
2484 response of the remove STA key operation received from
2485 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002486
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002488 callback
2489
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 @see WDI_SetSTAKeyReq
2491 @return Result of the function call
2492*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002494WDI_RemoveSTAKeyReq
2495(
2496 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2497 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2498 void* pUserData
2499)
2500{
2501 WDI_EventInfoType wdiEventData;
2502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2503
2504 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002506 ------------------------------------------------------------------------*/
2507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2508 {
2509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2510 "WDI API call before module is initialized - Fail request");
2511
Jeff Johnsone7245742012-09-05 17:12:55 -07002512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002513 }
2514
2515 /*------------------------------------------------------------------------
2516 Fill in Event data and post to the Main FSM
2517 ------------------------------------------------------------------------*/
2518 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002519 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2520 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2521 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 wdiEventData.pUserData = pUserData;
2523
2524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2525
2526}/*WDI_RemoveSTAKeyReq*/
2527
2528
2529/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002530 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 wants to install a STA Bcast encryption key on the HW.
2532 Upon the call of this API the WLAN DAL will pack and
2533 send a HAL Start request message to the lower RIVA
2534 sub-system if DAL is in state STARTED.
2535
2536 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002537 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002538
2539 WDI_PostAssocReq must have been called.
2540
Jeff Johnsone7245742012-09-05 17:12:55 -07002541 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002543
Jeff Johnson295189b2012-06-20 16:38:30 -07002544 wdiSetSTABcastKeyRspCb: callback for passing back the
2545 response of the set BSS Key operation received from the
2546 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002547
Jeff Johnson295189b2012-06-20 16:38:30 -07002548 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002549 callback
2550
Jeff Johnson295189b2012-06-20 16:38:30 -07002551 @see WDI_PostAssocReq
2552 @return Result of the function call
2553*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002554WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002555WDI_SetSTABcastKeyReq
2556(
2557 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2558 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2559 void* pUserData
2560)
2561
2562{
2563 WDI_EventInfoType wdiEventData;
2564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2565
2566 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002567 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002568 ------------------------------------------------------------------------*/
2569 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2570 {
2571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2572 "WDI API call before module is initialized - Fail request");
2573
Jeff Johnsone7245742012-09-05 17:12:55 -07002574 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002575 }
2576
2577 /*------------------------------------------------------------------------
2578 Fill in Event data and post to the Main FSM
2579 ------------------------------------------------------------------------*/
2580 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2582 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2583 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 wdiEventData.pUserData = pUserData;
2585
2586 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2587
2588}/*WDI_SetSTABcastKeyReq*/
2589
2590/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 MAC wants to uninstall a STA Bcast key from HW. Upon the
2593 call of this API the WLAN DAL will pack and send a HAL
2594 Remove STA Bcast Key request message to the lower RIVA
2595 sub-system if DAL is in state STARTED.
2596
2597 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002598 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002599
2600 WDI_SetSTABcastKeyReq must have been called.
2601
Jeff Johnsone7245742012-09-05 17:12:55 -07002602 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002603 parameters as specified by the Device
2604 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002605
Jeff Johnson295189b2012-06-20 16:38:30 -07002606 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2607 response of the remove STA Bcast key operation received
2608 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002609
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002611 callback
2612
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 @see WDI_SetSTABcastKeyReq
2614 @return Result of the function call
2615*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002616WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002617WDI_RemoveSTABcastKeyReq
2618(
2619 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2620 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2621 void* pUserData
2622)
2623{
2624 WDI_EventInfoType wdiEventData;
2625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2626
2627 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002628 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002629 ------------------------------------------------------------------------*/
2630 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2631 {
2632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2633 "WDI API call before module is initialized - Fail request");
2634
Jeff Johnsone7245742012-09-05 17:12:55 -07002635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002636 }
2637
2638 /*------------------------------------------------------------------------
2639 Fill in Event data and post to the Main FSM
2640 ------------------------------------------------------------------------*/
2641 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002642 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2643 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2644 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 wdiEventData.pUserData = pUserData;
2646
2647 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2648
2649}/*WDI_RemoveSTABcastKeyReq*/
2650
2651/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002652 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002653 MAC wants to set Max Tx Power to HW. Upon the
2654 call of this API the WLAN DAL will pack and send a HAL
2655 Remove STA Bcast Key request message to the lower RIVA
2656 sub-system if DAL is in state STARTED.
2657
2658 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002659 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002660
2661 WDI_SetSTABcastKeyReq must have been called.
2662
Jeff Johnsone7245742012-09-05 17:12:55 -07002663 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002664 parameters as specified by the Device
2665 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002666
Jeff Johnson295189b2012-06-20 16:38:30 -07002667 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2668 response of the remove STA Bcast key operation received
2669 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002670
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 callback
2673
Jeff Johnson295189b2012-06-20 16:38:30 -07002674 @see WDI_SetMaxTxPowerReq
2675 @return Result of the function call
2676*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002677WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002678WDI_SetMaxTxPowerReq
2679(
2680 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2681 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2682 void* pUserData
2683)
2684{
2685 WDI_EventInfoType wdiEventData;
2686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2687
2688 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002689 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002690 ------------------------------------------------------------------------*/
2691 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2692 {
2693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2694 "WDI API call before module is initialized - Fail request");
2695
Jeff Johnsone7245742012-09-05 17:12:55 -07002696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 }
2698
2699 /*------------------------------------------------------------------------
2700 Fill in Event data and post to the Main FSM
2701 ------------------------------------------------------------------------*/
2702 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002703 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2704 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2705 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 wdiEventData.pUserData = pUserData;
2707
2708 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2709}
2710
2711#ifdef FEATURE_WLAN_CCX
2712WDI_Status
2713WDI_TSMStatsReq
2714(
2715 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2716 WDI_TsmRspCb wdiReqStatusCb,
2717 void* pUserData
2718)
2719{
2720 WDI_EventInfoType wdiEventData;
2721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002722 /*------------------------------------------------------------------------
2723 Sanity Check
2724 ------------------------------------------------------------------------*/
2725 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2726 {
2727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2728 "WDI API call before module is initialized - Fail request");
2729
2730 return WDI_STATUS_E_NOT_ALLOWED;
2731 }
2732
2733 /*------------------------------------------------------------------------
2734 Fill in Event data and post to the Main FSM
2735 ------------------------------------------------------------------------*/
2736 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2737 wdiEventData.pEventData = pwdiTsmReqParams;
2738 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2739 wdiEventData.pCBfnc = wdiReqStatusCb;
2740 wdiEventData.pUserData = pUserData;
2741
2742 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2743
2744}
2745#endif
2746
2747/*========================================================================
2748
2749 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002750
Jeff Johnson295189b2012-06-20 16:38:30 -07002751==========================================================================*/
2752
2753/**
2754 @brief WDI_AddTSReq will be called when the upper MAC to inform
2755 the device of a successful add TSpec negotiation. HW
2756 needs to receive the TSpec Info from the UMAC in order
2757 to configure properly the QoS data traffic. Upon the
2758 call of this API the WLAN DAL will pack and send a HAL
2759 Add TS request message to the lower RIVA sub-system if
2760 DAL is in state STARTED.
2761
2762 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002764
2765 WDI_PostAssocReq must have been called.
2766
2767 @param wdiAddTsReqParams: the add TS parameters as specified by
2768 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002769
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 wdiAddTsRspCb: callback for passing back the response of
2771 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002772
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002774 callback
2775
Jeff Johnson295189b2012-06-20 16:38:30 -07002776 @see WDI_PostAssocReq
2777 @return Result of the function call
2778*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002779WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002780WDI_AddTSReq
2781(
2782 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2783 WDI_AddTsRspCb wdiAddTsRspCb,
2784 void* pUserData
2785)
2786{
2787 WDI_EventInfoType wdiEventData;
2788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2789
2790 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002791 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002792 ------------------------------------------------------------------------*/
2793 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2794 {
2795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2796 "WDI API call before module is initialized - Fail request");
2797
Jeff Johnsone7245742012-09-05 17:12:55 -07002798 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002799 }
2800
2801 /*------------------------------------------------------------------------
2802 Fill in Event data and post to the Main FSM
2803 ------------------------------------------------------------------------*/
2804 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002805 wdiEventData.pEventData = pwdiAddTsReqParams;
2806 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2807 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002808 wdiEventData.pUserData = pUserData;
2809
2810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2811
2812}/*WDI_AddTSReq*/
2813
2814
2815
2816/**
2817 @brief WDI_DelTSReq will be called when the upper MAC has ended
2818 admission on a specific AC. This is to inform HW that
2819 QoS traffic parameters must be rest. Upon the call of
2820 this API the WLAN DAL will pack and send a HAL Del TS
2821 request message to the lower RIVA sub-system if DAL is
2822 in state STARTED.
2823
2824 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002826
2827 WDI_AddTSReq must have been called.
2828
2829 @param wdiDelTsReqParams: the del TS parameters as specified by
2830 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002831
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 wdiDelTsRspCb: callback for passing back the response of
2833 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002834
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002836 callback
2837
Jeff Johnson295189b2012-06-20 16:38:30 -07002838 @see WDI_AddTSReq
2839 @return Result of the function call
2840*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002841WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002842WDI_DelTSReq
2843(
2844 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2845 WDI_DelTsRspCb wdiDelTsRspCb,
2846 void* pUserData
2847)
2848{
2849 WDI_EventInfoType wdiEventData;
2850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2851
2852 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002853 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002854 ------------------------------------------------------------------------*/
2855 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2856 {
2857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2858 "WDI API call before module is initialized - Fail request");
2859
Jeff Johnsone7245742012-09-05 17:12:55 -07002860 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002861 }
2862
2863 /*------------------------------------------------------------------------
2864 Fill in Event data and post to the Main FSM
2865 ------------------------------------------------------------------------*/
2866 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002867 wdiEventData.pEventData = pwdiDelTsReqParams;
2868 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2869 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 wdiEventData.pUserData = pUserData;
2871
2872 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2873
2874}/*WDI_DelTSReq*/
2875
2876
2877
2878/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002879 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002880 wishes to update the EDCA parameters used by HW for QoS
2881 data traffic. Upon the call of this API the WLAN DAL
2882 will pack and send a HAL Update EDCA Params request
2883 message to the lower RIVA sub-system if DAL is in state
2884 STARTED.
2885
2886 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002887 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002888
2889 WDI_PostAssocReq must have been called.
2890
Jeff Johnsone7245742012-09-05 17:12:55 -07002891 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002893
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 wdiUpdateEDCAParamsRspCb: callback for passing back the
2895 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002896
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002898 callback
2899
Jeff Johnson295189b2012-06-20 16:38:30 -07002900 @see WDI_PostAssocReq
2901 @return Result of the function call
2902*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002903WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002904WDI_UpdateEDCAParams
2905(
2906 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2907 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2908 void* pUserData
2909)
2910{
2911 WDI_EventInfoType wdiEventData;
2912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2913
2914 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002915 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002916 ------------------------------------------------------------------------*/
2917 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2918 {
2919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2920 "WDI API call before module is initialized - Fail request");
2921
Jeff Johnsone7245742012-09-05 17:12:55 -07002922 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002923 }
2924
2925 /*------------------------------------------------------------------------
2926 Fill in Event data and post to the Main FSM
2927 ------------------------------------------------------------------------*/
2928 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002929 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2930 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2931 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002932 wdiEventData.pUserData = pUserData;
2933
2934 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2935
2936}/*WDI_UpdateEDCAParams*/
2937
2938
2939/**
2940 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2941 successfully a BA session and needs to notify the HW for
2942 the appropriate settings to take place. Upon the call of
2943 this API the WLAN DAL will pack and send a HAL Add BA
2944 request message to the lower RIVA sub-system if DAL is
2945 in state STARTED.
2946
2947 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002948 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002949
2950 WDI_PostAssocReq must have been called.
2951
2952 @param wdiAddBAReqParams: the add BA parameters as specified by
2953 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002954
Jeff Johnson295189b2012-06-20 16:38:30 -07002955 wdiAddBARspCb: callback for passing back the response of
2956 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002957
Jeff Johnson295189b2012-06-20 16:38:30 -07002958 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002959 callback
2960
Jeff Johnson295189b2012-06-20 16:38:30 -07002961 @see WDI_PostAssocReq
2962 @return Result of the function call
2963*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002964WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002965WDI_AddBASessionReq
2966(
2967 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
2968 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
2969 void* pUserData
2970)
2971{
2972 WDI_EventInfoType wdiEventData;
2973 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2974
2975 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002976 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002977 ------------------------------------------------------------------------*/
2978 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2979 {
2980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2981 "WDI API call before module is initialized - Fail request");
2982
Jeff Johnsone7245742012-09-05 17:12:55 -07002983 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002984 }
2985
2986 /*------------------------------------------------------------------------
2987 Fill in Event data and post to the Main FSM
2988 ------------------------------------------------------------------------*/
2989 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002990 wdiEventData.pEventData = pwdiAddBASessionReqParams;
2991 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
2992 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002993 wdiEventData.pUserData = pUserData;
2994
2995 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2996
2997}/*WDI_AddBASessionReq*/
2998
2999/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003000 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003001 inform HW that it has deleted a previously created BA
3002 session. Upon the call of this API the WLAN DAL will
3003 pack and send a HAL Del BA request message to the lower
3004 RIVA sub-system if DAL is in state STARTED.
3005
3006 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003007 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003008
3009 WDI_AddBAReq must have been called.
3010
3011 @param wdiDelBAReqParams: the del BA parameters as specified by
3012 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003013
Jeff Johnson295189b2012-06-20 16:38:30 -07003014 wdiDelBARspCb: callback for passing back the response of
3015 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003016
Jeff Johnson295189b2012-06-20 16:38:30 -07003017 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003018 callback
3019
Jeff Johnson295189b2012-06-20 16:38:30 -07003020 @see WDI_AddBAReq
3021 @return Result of the function call
3022*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003023WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003024WDI_DelBAReq
3025(
3026 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3027 WDI_DelBARspCb wdiDelBARspCb,
3028 void* pUserData
3029)
3030{
3031 WDI_EventInfoType wdiEventData;
3032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3033
3034 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003035 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003036 ------------------------------------------------------------------------*/
3037 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3038 {
3039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3040 "WDI API call before module is initialized - Fail request");
3041
Jeff Johnsone7245742012-09-05 17:12:55 -07003042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003043 }
3044
3045 /*------------------------------------------------------------------------
3046 Fill in Event data and post to the Main FSM
3047 ------------------------------------------------------------------------*/
3048 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003049 wdiEventData.pEventData = pwdiDelBAReqParams;
3050 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3051 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003052 wdiEventData.pUserData = pUserData;
3053
3054 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3055
3056}/*WDI_DelBAReq*/
3057
Jeff Johnsone7245742012-09-05 17:12:55 -07003058/*========================================================================
3059
Jeff Johnson295189b2012-06-20 16:38:30 -07003060 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003061
Jeff Johnson295189b2012-06-20 16:38:30 -07003062==========================================================================*/
3063
3064/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003065 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003066 wants to set the power save related configurations of
3067 the WLAN Device. Upon the call of this API the WLAN DAL
3068 will pack and send a HAL Update CFG request message to
3069 the lower RIVA sub-system if DAL is in state STARTED.
3070
3071 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003072 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003073
3074 WDI_Start must have been called.
3075
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003077 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003078
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 wdiSetPwrSaveCfgCb: callback for passing back the
3080 response of the set power save cfg operation received
3081 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003082
Jeff Johnson295189b2012-06-20 16:38:30 -07003083 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003084 callback
3085
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003087 @return Result of the function call
3088*/
3089WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003090WDI_SetPwrSaveCfgReq
3091(
3092 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3093 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3094 void* pUserData
3095)
3096{
3097 WDI_EventInfoType wdiEventData;
3098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3099
3100 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003101 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003102 ------------------------------------------------------------------------*/
3103 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3104 {
3105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3106 "WDI API call before module is initialized - Fail request");
3107
Jeff Johnsone7245742012-09-05 17:12:55 -07003108 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 }
3110
3111 /*------------------------------------------------------------------------
3112 Fill in Event data and post to the Main FSM
3113 ------------------------------------------------------------------------*/
3114 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003115 wdiEventData.pEventData = pwdiPowerSaveCfg;
3116 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3117 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003118 wdiEventData.pUserData = pUserData;
3119
3120 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3121
3122}/*WDI_SetPwrSaveCfgReq*/
3123
3124/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003125 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 request the device to get into IMPS power state. Upon
3127 the call of this API the WLAN DAL will send a HAL Enter
3128 IMPS request message to the lower RIVA sub-system if DAL
3129 is in state STARTED.
3130
3131 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003132 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003133
Jeff Johnsone7245742012-09-05 17:12:55 -07003134
3135 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003136 response of the Enter IMPS operation received from the
3137 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003138
Jeff Johnson295189b2012-06-20 16:38:30 -07003139 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003140 callback
3141
Jeff Johnson295189b2012-06-20 16:38:30 -07003142 @see WDI_Start
3143 @return Result of the function call
3144*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003146WDI_EnterImpsReq
3147(
3148 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3149 void* pUserData
3150)
3151{
3152 WDI_EventInfoType wdiEventData;
3153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3154
3155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003156 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003157 ------------------------------------------------------------------------*/
3158 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3159 {
3160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3161 "WDI API call before module is initialized - Fail request");
3162
Jeff Johnsone7245742012-09-05 17:12:55 -07003163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003164 }
3165
3166 /*------------------------------------------------------------------------
3167 Fill in Event data and post to the Main FSM
3168 ------------------------------------------------------------------------*/
3169 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003170 wdiEventData.pEventData = NULL;
3171 wdiEventData.uEventDataSize = 0;
3172 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003173 wdiEventData.pUserData = pUserData;
3174
3175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3176
3177}/*WDI_EnterImpsReq*/
3178
3179/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003180 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003181 request the device to get out of IMPS power state. Upon
3182 the call of this API the WLAN DAL will send a HAL Exit
3183 IMPS request message to the lower RIVA sub-system if DAL
3184 is in state STARTED.
3185
3186 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003187 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003188
Jeff Johnson295189b2012-06-20 16:38:30 -07003189
Jeff Johnsone7245742012-09-05 17:12:55 -07003190
3191 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003192 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003193
Jeff Johnson295189b2012-06-20 16:38:30 -07003194 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003195 callback
3196
Jeff Johnson295189b2012-06-20 16:38:30 -07003197 @see WDI_Start
3198 @return Result of the function call
3199*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003200WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003201WDI_ExitImpsReq
3202(
3203 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3204 void* pUserData
3205)
3206{
3207 WDI_EventInfoType wdiEventData;
3208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3209
3210 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003211 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003212 ------------------------------------------------------------------------*/
3213 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3214 {
3215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3216 "WDI API call before module is initialized - Fail request");
3217
Jeff Johnsone7245742012-09-05 17:12:55 -07003218 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003219 }
3220
3221 /*------------------------------------------------------------------------
3222 Fill in Event data and post to the Main FSM
3223 ------------------------------------------------------------------------*/
3224 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003225 wdiEventData.pEventData = NULL;
3226 wdiEventData.uEventDataSize = 0;
3227 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 wdiEventData.pUserData = pUserData;
3229
3230 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3231
3232}/*WDI_ExitImpsReq*/
3233
3234/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003235 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003236 request the device to get into BMPS power state. Upon
3237 the call of this API the WLAN DAL will pack and send a
3238 HAL Enter BMPS request message to the lower RIVA
3239 sub-system if DAL is in state STARTED.
3240
3241 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003242 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003243
3244 WDI_PostAssocReq must have been called.
3245
Jeff Johnsone7245742012-09-05 17:12:55 -07003246 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003247 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003248
Jeff Johnson295189b2012-06-20 16:38:30 -07003249 wdiEnterBmpsRspCb: callback for passing back the
3250 response of the Enter BMPS operation received from the
3251 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003252
Jeff Johnson295189b2012-06-20 16:38:30 -07003253 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003254 callback
3255
Jeff Johnson295189b2012-06-20 16:38:30 -07003256 @see WDI_PostAssocReq
3257 @return Result of the function call
3258*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003259WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003260WDI_EnterBmpsReq
3261(
3262 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3263 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3264 void* pUserData
3265)
3266{
3267 WDI_EventInfoType wdiEventData;
3268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3269
3270 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003271 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003272 ------------------------------------------------------------------------*/
3273 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3274 {
3275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3276 "WDI API call before module is initialized - Fail request");
3277
Jeff Johnsone7245742012-09-05 17:12:55 -07003278 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003279 }
3280
3281 /*------------------------------------------------------------------------
3282 Fill in Event data and post to the Main FSM
3283 ------------------------------------------------------------------------*/
3284 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003285 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3286 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3287 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003288 wdiEventData.pUserData = pUserData;
3289
3290 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3291
3292}/*WDI_EnterBmpsReq*/
3293
3294/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003295 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003296 request the device to get out of BMPS power state. Upon
3297 the call of this API the WLAN DAL will pack and send a
3298 HAL Exit BMPS request message to the lower RIVA
3299 sub-system if DAL is in state STARTED.
3300
3301 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003302 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003303
3304 WDI_PostAssocReq must have been called.
3305
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003308
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 wdiExitBmpsRspCb: callback for passing back the response
3310 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003311
Jeff Johnson295189b2012-06-20 16:38:30 -07003312 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003313 callback
3314
Jeff Johnson295189b2012-06-20 16:38:30 -07003315 @see WDI_PostAssocReq
3316 @return Result of the function call
3317*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003318WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003319WDI_ExitBmpsReq
3320(
3321 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3322 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3323 void* pUserData
3324)
3325{
3326 WDI_EventInfoType wdiEventData;
3327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3328
3329 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003330 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003331 ------------------------------------------------------------------------*/
3332 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3333 {
3334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3335 "WDI API call before module is initialized - Fail request");
3336
Jeff Johnsone7245742012-09-05 17:12:55 -07003337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003338 }
3339
3340 /*------------------------------------------------------------------------
3341 Fill in Event data and post to the Main FSM
3342 ------------------------------------------------------------------------*/
3343 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003344 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3345 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3346 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003347 wdiEventData.pUserData = pUserData;
3348
3349 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3350
3351}/*WDI_ExitBmpsReq*/
3352
3353/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003354 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003355 request the device to get into UAPSD power state. Upon
3356 the call of this API the WLAN DAL will pack and send a
3357 HAL Enter UAPSD request message to the lower RIVA
3358 sub-system if DAL is in state STARTED.
3359
3360 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003361 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003362
3363 WDI_PostAssocReq must have been called.
3364 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003365
3366 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003367 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003368
Jeff Johnson295189b2012-06-20 16:38:30 -07003369 wdiEnterUapsdRspCb: callback for passing back the
3370 response of the Enter UAPSD operation received from the
3371 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003372
Jeff Johnson295189b2012-06-20 16:38:30 -07003373 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003374 callback
3375
Jeff Johnson295189b2012-06-20 16:38:30 -07003376 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3377 @return Result of the function call
3378*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003379WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003380WDI_EnterUapsdReq
3381(
3382 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3383 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3384 void* pUserData
3385)
3386{
3387 WDI_EventInfoType wdiEventData;
3388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3389
3390 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003391 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003392 ------------------------------------------------------------------------*/
3393 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3394 {
3395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3396 "WDI API call before module is initialized - Fail request");
3397
Jeff Johnsone7245742012-09-05 17:12:55 -07003398 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003399 }
3400
3401 /*------------------------------------------------------------------------
3402 Fill in Event data and post to the Main FSM
3403 ------------------------------------------------------------------------*/
3404 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003405 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3406 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3407 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 wdiEventData.pUserData = pUserData;
3409
3410 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3411
3412}/*WDI_EnterUapsdReq*/
3413
3414/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003415 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 request the device to get out of UAPSD power state. Upon
3417 the call of this API the WLAN DAL will send a HAL Exit
3418 UAPSD request message to the lower RIVA sub-system if
3419 DAL is in state STARTED.
3420
3421 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003422 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003423
3424 WDI_PostAssocReq must have been called.
3425
Jeff Johnsone7245742012-09-05 17:12:55 -07003426 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003427 response of the Exit UAPSD operation received from the
3428 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003429
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003431 callback
3432
Jeff Johnson295189b2012-06-20 16:38:30 -07003433 @see WDI_PostAssocReq
3434 @return Result of the function call
3435*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003436WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003437WDI_ExitUapsdReq
3438(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003439 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003440 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3441 void* pUserData
3442)
3443{
3444 WDI_EventInfoType wdiEventData;
3445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3446
3447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003448 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003449 ------------------------------------------------------------------------*/
3450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3451 {
3452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3453 "WDI API call before module is initialized - Fail request");
3454
Jeff Johnsone7245742012-09-05 17:12:55 -07003455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003456 }
3457
3458 /*------------------------------------------------------------------------
3459 Fill in Event data and post to the Main FSM
3460 ------------------------------------------------------------------------*/
3461 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003462 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3463 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003464 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003465 wdiEventData.pUserData = pUserData;
3466
3467 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3468
3469}/*WDI_ExitUapsdReq*/
3470
3471/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003472 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 MAC wants to set the UAPSD related configurations
3474 of an associated STA (while acting as an AP) to the WLAN
3475 Device. Upon the call of this API the WLAN DAL will pack
3476 and send a HAL Update UAPSD params request message to
3477 the lower RIVA sub-system if DAL is in state STARTED.
3478
3479 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003480 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003481
3482 WDI_ConfigBSSReq must have been called.
3483
Jeff Johnsone7245742012-09-05 17:12:55 -07003484 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003486
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 wdiUpdateUapsdParamsCb: callback for passing back the
3488 response of the update UAPSD params operation received
3489 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003490
Jeff Johnson295189b2012-06-20 16:38:30 -07003491 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003492 callback
3493
Jeff Johnson295189b2012-06-20 16:38:30 -07003494 @see WDI_ConfigBSSReq
3495 @return Result of the function call
3496*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003497WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003498WDI_UpdateUapsdParamsReq
3499(
3500 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3501 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3502 void* pUserData
3503)
3504{
3505 WDI_EventInfoType wdiEventData;
3506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3507
3508 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003509 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003510 ------------------------------------------------------------------------*/
3511 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3512 {
3513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3514 "WDI API call before module is initialized - Fail request");
3515
Jeff Johnsone7245742012-09-05 17:12:55 -07003516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003517 }
3518
3519 /*------------------------------------------------------------------------
3520 Fill in Event data and post to the Main FSM
3521 ------------------------------------------------------------------------*/
3522 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003523 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003524 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003525 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 wdiEventData.pUserData = pUserData;
3527
3528 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3529
3530}/*WDI_UpdateUapsdParamsReq*/
3531
3532/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003533 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003534 MAC wants to set the UAPSD related configurations before
3535 requesting for enter UAPSD power state to the WLAN
3536 Device. Upon the call of this API the WLAN DAL will pack
3537 and send a HAL Set UAPSD params request message to
3538 the lower RIVA sub-system if DAL is in state STARTED.
3539
3540 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003541 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003542
3543 WDI_PostAssocReq must have been called.
3544
3545 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3546 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003547
Jeff Johnson295189b2012-06-20 16:38:30 -07003548 wdiSetUapsdAcParamsCb: callback for passing back the
3549 response of the set UAPSD params operation received from
3550 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003551
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003553 callback
3554
Jeff Johnson295189b2012-06-20 16:38:30 -07003555 @see WDI_PostAssocReq
3556 @return Result of the function call
3557*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003558WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003559WDI_SetUapsdAcParamsReq
3560(
3561 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3562 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3563 void* pUserData
3564)
3565{
3566 WDI_EventInfoType wdiEventData;
3567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3568
3569 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003570 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003571 ------------------------------------------------------------------------*/
3572 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3573 {
3574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3575 "WDI API call before module is initialized - Fail request");
3576
Jeff Johnsone7245742012-09-05 17:12:55 -07003577 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 }
3579
3580 /*------------------------------------------------------------------------
3581 Fill in Event data and post to the Main FSM
3582 ------------------------------------------------------------------------*/
3583 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 wdiEventData.pEventData = pwdiUapsdInfo;
3585 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3586 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003587 wdiEventData.pUserData = pUserData;
3588
3589 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3590
3591}/*WDI_SetUapsdAcParamsReq*/
3592
3593/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003594 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 MAC wants to set/reset the RXP filters for received pkts
3596 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3597 and send a HAL configure RXP filter request message to
3598 the lower RIVA sub-system.
3599
3600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003602
Jeff Johnsone7245742012-09-05 17:12:55 -07003603
3604 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 filter as specified by the Device
3606 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003607
Jeff Johnson295189b2012-06-20 16:38:30 -07003608 wdiConfigureRxpFilterCb: callback for passing back the
3609 response of the configure RXP filter operation received
3610 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003611
Jeff Johnson295189b2012-06-20 16:38:30 -07003612 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003613 callback
3614
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 @return Result of the function call
3616*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003617WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003618WDI_ConfigureRxpFilterReq
3619(
3620 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3621 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3622 void* pUserData
3623)
3624{
3625 WDI_EventInfoType wdiEventData;
3626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3627
3628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003629 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 ------------------------------------------------------------------------*/
3631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3632 {
3633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3634 "WDI API call before module is initialized - Fail request");
3635
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 }
3638
3639 /*------------------------------------------------------------------------
3640 Fill in Event data and post to the Main FSM
3641 ------------------------------------------------------------------------*/
3642 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003643 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3644 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3645 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003646 wdiEventData.pUserData = pUserData;
3647
3648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3649}/*WDI_ConfigureRxpFilterReq*/
3650
3651/**
3652 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3653 wants to set the beacon filters while in power save.
3654 Upon the call of this API the WLAN DAL will pack and
3655 send a Beacon filter request message to the
3656 lower RIVA sub-system.
3657
3658 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003659 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003660
Jeff Johnsone7245742012-09-05 17:12:55 -07003661
3662 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 filter as specified by the Device
3664 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003665
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 wdiBeaconFilterCb: callback for passing back the
3667 response of the set beacon filter operation received
3668 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003669
Jeff Johnson295189b2012-06-20 16:38:30 -07003670 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003671 callback
3672
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 @return Result of the function call
3674*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003675WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003676WDI_SetBeaconFilterReq
3677(
3678 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3679 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3680 void* pUserData
3681)
3682{
3683 WDI_EventInfoType wdiEventData;
3684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3685
3686 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003687 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 ------------------------------------------------------------------------*/
3689 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3690 {
3691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3692 "WDI API call before module is initialized - Fail request");
3693
Jeff Johnsone7245742012-09-05 17:12:55 -07003694 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003695 }
3696
3697 /*------------------------------------------------------------------------
3698 Fill in Event data and post to the Main FSM
3699 ------------------------------------------------------------------------*/
3700 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003701 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003702 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003703 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003704 wdiEventData.pUserData = pUserData;
3705
3706 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3707}/*WDI_SetBeaconFilterReq*/
3708
3709/**
3710 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3711 wants to remove the beacon filter for particular IE
3712 while in power save. Upon the call of this API the WLAN
3713 DAL will pack and send a remove Beacon filter request
3714 message to the lower RIVA sub-system.
3715
3716 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003718
Jeff Johnsone7245742012-09-05 17:12:55 -07003719
3720 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 filter as specified by the Device
3722 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 wdiBeaconFilterCb: callback for passing back the
3725 response of the remove beacon filter operation received
3726 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003727
Jeff Johnson295189b2012-06-20 16:38:30 -07003728 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 callback
3730
Jeff Johnson295189b2012-06-20 16:38:30 -07003731 @return Result of the function call
3732*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003733WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003734WDI_RemBeaconFilterReq
3735(
3736 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3737 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3738 void* pUserData
3739)
3740{
3741 WDI_EventInfoType wdiEventData;
3742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3743
3744 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003745 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 ------------------------------------------------------------------------*/
3747 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3748 {
3749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3750 "WDI API call before module is initialized - Fail request");
3751
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003753 }
3754
3755 /*------------------------------------------------------------------------
3756 Fill in Event data and post to the Main FSM
3757 ------------------------------------------------------------------------*/
3758 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003759 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003760 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003761 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003762 wdiEventData.pUserData = pUserData;
3763
3764 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3765}/*WDI_RemBeaconFilterReq*/
3766
3767/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003768 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003769 MAC wants to set the RSSI thresholds related
3770 configurations while in power save. Upon the call of
3771 this API the WLAN DAL will pack and send a HAL Set RSSI
3772 thresholds request message to the lower RIVA
3773 sub-system if DAL is in state STARTED.
3774
3775 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003776 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003777
3778 WDI_PostAssocReq must have been called.
3779
3780 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3781 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003782
Jeff Johnson295189b2012-06-20 16:38:30 -07003783 wdiSetUapsdAcParamsCb: callback for passing back the
3784 response of the set UAPSD params operation received from
3785 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003786
Jeff Johnson295189b2012-06-20 16:38:30 -07003787 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 callback
3789
Jeff Johnson295189b2012-06-20 16:38:30 -07003790 @see WDI_PostAssocReq
3791 @return Result of the function call
3792*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003793WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003794WDI_SetRSSIThresholdsReq
3795(
3796 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3797 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3798 void* pUserData
3799)
3800{
3801 WDI_EventInfoType wdiEventData;
3802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3803
3804 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003805 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003806 ------------------------------------------------------------------------*/
3807 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3808 {
3809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3810 "WDI API call before module is initialized - Fail request");
3811
Jeff Johnsone7245742012-09-05 17:12:55 -07003812 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 }
3814
3815 /*------------------------------------------------------------------------
3816 Fill in Event data and post to the Main FSM
3817 ------------------------------------------------------------------------*/
3818 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003820 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003821 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003822 wdiEventData.pUserData = pUserData;
3823
3824 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3825}/* WDI_SetRSSIThresholdsReq*/
3826
3827/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003828 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 wants to set the filter to minimize unnecessary host
3830 wakeup due to broadcast traffic while in power save.
3831 Upon the call of this API the WLAN DAL will pack and
3832 send a HAL host offload request message to the
3833 lower RIVA sub-system if DAL is in state STARTED.
3834
3835 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003836 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003837
3838 WDI_PostAssocReq must have been called.
3839
Jeff Johnsone7245742012-09-05 17:12:55 -07003840 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003841 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003842
Jeff Johnson295189b2012-06-20 16:38:30 -07003843 wdiHostOffloadCb: callback for passing back the response
3844 of the host offload operation received from the
3845 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003846
Jeff Johnson295189b2012-06-20 16:38:30 -07003847 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003848 callback
3849
Jeff Johnson295189b2012-06-20 16:38:30 -07003850 @see WDI_PostAssocReq
3851 @return Result of the function call
3852*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003853WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003854WDI_HostOffloadReq
3855(
3856 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3857 WDI_HostOffloadCb wdiHostOffloadCb,
3858 void* pUserData
3859)
3860{
3861 WDI_EventInfoType wdiEventData;
3862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3863
3864 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003865 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003866 ------------------------------------------------------------------------*/
3867 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3868 {
3869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3870 "WDI API call before module is initialized - Fail request");
3871
Jeff Johnsone7245742012-09-05 17:12:55 -07003872 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003873 }
3874
3875 /*------------------------------------------------------------------------
3876 Fill in Event data and post to the Main FSM
3877 ------------------------------------------------------------------------*/
3878 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003880 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003881 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 wdiEventData.pUserData = pUserData;
3883
3884 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3885}/*WDI_HostOffloadReq*/
3886
3887/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003888 @brief WDI_KeepAliveReq will be called when the upper MAC
3889 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003890 and minimize unnecessary host wakeups due to while in power save.
3891 Upon the call of this API the WLAN DAL will pack and
3892 send a HAL Keep Alive request message to the
3893 lower RIVA sub-system if DAL is in state STARTED.
3894
3895 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003896 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003897
3898 WDI_PostAssocReq must have been called.
3899
Jeff Johnsone7245742012-09-05 17:12:55 -07003900 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003901 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003902
Jeff Johnson295189b2012-06-20 16:38:30 -07003903 wdiKeepAliveCb: callback for passing back the response
3904 of the Keep Alive operation received from the
3905 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003906
Jeff Johnson295189b2012-06-20 16:38:30 -07003907 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 callback
3909
Jeff Johnson295189b2012-06-20 16:38:30 -07003910 @see WDI_PostAssocReq
3911 @return Result of the function call
3912*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003913WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003914WDI_KeepAliveReq
3915(
3916 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3917 WDI_KeepAliveCb wdiKeepAliveCb,
3918 void* pUserData
3919)
3920{
3921 WDI_EventInfoType wdiEventData;
3922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3923
3924 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003925 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003926 ------------------------------------------------------------------------*/
3927 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3928 {
3929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3930 "WDI_KeepAliveReq: WDI API call before module "
3931 "is initialized - Fail request");
3932
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003934 }
3935
3936 /*------------------------------------------------------------------------
3937 Fill in Event data and post to the Main FSM
3938 ------------------------------------------------------------------------*/
3939 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003940 wdiEventData.pEventData = pwdiKeepAliveParams;
3941 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3942 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 wdiEventData.pUserData = pUserData;
3944
3945 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3946}/*WDI_KeepAliveReq*/
3947
3948/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003949 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 wants to set the Wowl Bcast ptrn to minimize unnecessary
3951 host wakeup due to broadcast traffic while in power
3952 save. Upon the call of this API the WLAN DAL will pack
3953 and send a HAL Wowl Bcast ptrn request message to the
3954 lower RIVA sub-system if DAL is in state STARTED.
3955
3956 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003957 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003958
3959 WDI_PostAssocReq must have been called.
3960
Jeff Johnsone7245742012-09-05 17:12:55 -07003961 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003962 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003963
Jeff Johnson295189b2012-06-20 16:38:30 -07003964 wdiWowlAddBcPtrnCb: callback for passing back the
3965 response of the add Wowl bcast ptrn operation received
3966 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003967
Jeff Johnson295189b2012-06-20 16:38:30 -07003968 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003969 callback
3970
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 @see WDI_PostAssocReq
3972 @return Result of the function call
3973*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003974WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003975WDI_WowlAddBcPtrnReq
3976(
3977 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
3978 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
3979 void* pUserData
3980)
3981{
3982 WDI_EventInfoType wdiEventData;
3983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3984
3985 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003986 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003987 ------------------------------------------------------------------------*/
3988 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3989 {
3990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3991 "WDI API call before module is initialized - Fail request");
3992
Jeff Johnsone7245742012-09-05 17:12:55 -07003993 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 }
3995
3996 /*------------------------------------------------------------------------
3997 Fill in Event data and post to the Main FSM
3998 ------------------------------------------------------------------------*/
3999 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004000 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004001 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004002 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004003 wdiEventData.pUserData = pUserData;
4004
4005 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4006}/*WDI_WowlAddBcPtrnReq*/
4007
4008/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004009 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004010 wants to clear the Wowl Bcast ptrn. Upon the call of
4011 this API the WLAN DAL will pack and send a HAL delete
4012 Wowl Bcast ptrn request message to the lower RIVA
4013 sub-system if DAL is in state STARTED.
4014
4015 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004016 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004017
4018 WDI_WowlAddBcPtrnReq must have been called.
4019
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004022
Jeff Johnson295189b2012-06-20 16:38:30 -07004023 wdiWowlDelBcPtrnCb: callback for passing back the
4024 response of the del Wowl bcast ptrn operation received
4025 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004026
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 callback
4029
Jeff Johnson295189b2012-06-20 16:38:30 -07004030 @see WDI_WowlAddBcPtrnReq
4031 @return Result of the function call
4032*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004033WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004034WDI_WowlDelBcPtrnReq
4035(
4036 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4037 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4038 void* pUserData
4039)
4040{
4041 WDI_EventInfoType wdiEventData;
4042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4043
4044 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 ------------------------------------------------------------------------*/
4047 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4048 {
4049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4050 "WDI API call before module is initialized - Fail request");
4051
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004053 }
4054
4055 /*------------------------------------------------------------------------
4056 Fill in Event data and post to the Main FSM
4057 ------------------------------------------------------------------------*/
4058 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004060 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004061 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004062 wdiEventData.pUserData = pUserData;
4063
4064 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4065}/*WDI_WowlDelBcPtrnReq*/
4066
4067/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004068 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004069 wants to enter the Wowl state to minimize unnecessary
4070 host wakeup while in power save. Upon the call of this
4071 API the WLAN DAL will pack and send a HAL Wowl enter
4072 request message to the lower RIVA sub-system if DAL is
4073 in state STARTED.
4074
4075 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004076 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004077
4078 WDI_PostAssocReq must have been called.
4079
Jeff Johnsone7245742012-09-05 17:12:55 -07004080 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004081 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004082
Jeff Johnson295189b2012-06-20 16:38:30 -07004083 wdiWowlEnterReqCb: callback for passing back the
4084 response of the enter Wowl operation received from the
4085 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004086
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 callback
4089
Jeff Johnson295189b2012-06-20 16:38:30 -07004090 @see WDI_PostAssocReq
4091 @return Result of the function call
4092*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004093WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004094WDI_WowlEnterReq
4095(
4096 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4097 WDI_WowlEnterReqCb wdiWowlEnterCb,
4098 void* pUserData
4099)
4100{
4101 WDI_EventInfoType wdiEventData;
4102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4103
4104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004105 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004106 ------------------------------------------------------------------------*/
4107 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4108 {
4109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4110 "WDI API call before module is initialized - Fail request");
4111
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 }
4114
4115 /*------------------------------------------------------------------------
4116 Fill in Event data and post to the Main FSM
4117 ------------------------------------------------------------------------*/
4118 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004120 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004122 wdiEventData.pUserData = pUserData;
4123
4124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4125}/*WDI_WowlEnterReq*/
4126
4127/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004128 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004129 wants to exit the Wowl state. Upon the call of this API
4130 the WLAN DAL will pack and send a HAL Wowl exit request
4131 message to the lower RIVA sub-system if DAL is in state
4132 STARTED.
4133
4134 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004135 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004136
4137 WDI_WowlEnterReq must have been called.
4138
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004140 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004141
Jeff Johnson295189b2012-06-20 16:38:30 -07004142 wdiWowlExitReqCb: callback for passing back the response
4143 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004144
Jeff Johnson295189b2012-06-20 16:38:30 -07004145 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 callback
4147
Jeff Johnson295189b2012-06-20 16:38:30 -07004148 @see WDI_WowlEnterReq
4149 @return Result of the function call
4150*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004151WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004152WDI_WowlExitReq
4153(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004154 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 WDI_WowlExitReqCb wdiWowlExitCb,
4156 void* pUserData
4157)
4158{
4159 WDI_EventInfoType wdiEventData;
4160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4161
4162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 ------------------------------------------------------------------------*/
4165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4166 {
4167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4168 "WDI API call before module is initialized - Fail request");
4169
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004171 }
4172
4173 /*------------------------------------------------------------------------
4174 Fill in Event data and post to the Main FSM
4175 ------------------------------------------------------------------------*/
4176 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004177 wdiEventData.pEventData = pwdiWowlExitParams;
4178 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004179 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 wdiEventData.pUserData = pUserData;
4181
4182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4183}/*WDI_WowlExitReq*/
4184
4185/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004186 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004187 the upper MAC wants to dynamically adjusts the listen
4188 interval based on the WLAN/MSM activity. Upon the call
4189 of this API the WLAN DAL will pack and send a HAL
4190 configure Apps Cpu Wakeup State request message to the
4191 lower RIVA sub-system.
4192
4193 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004194 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004195
Jeff Johnsone7245742012-09-05 17:12:55 -07004196
4197 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 Apps Cpu Wakeup State as specified by the
4199 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004200
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4202 back the response of the configure Apps Cpu Wakeup State
4203 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004204
Jeff Johnson295189b2012-06-20 16:38:30 -07004205 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 callback
4207
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 @return Result of the function call
4209*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004210WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004211WDI_ConfigureAppsCpuWakeupStateReq
4212(
4213 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4214 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4215 void* pUserData
4216)
4217{
4218 WDI_EventInfoType wdiEventData;
4219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4220
4221 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004222 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 ------------------------------------------------------------------------*/
4224 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4225 {
4226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4227 "WDI API call before module is initialized - Fail request");
4228
Jeff Johnsone7245742012-09-05 17:12:55 -07004229 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004230 }
4231
4232 /*------------------------------------------------------------------------
4233 Fill in Event data and post to the Main FSM
4234 ------------------------------------------------------------------------*/
4235 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004236 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4237 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4238 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004239 wdiEventData.pUserData = pUserData;
4240
4241 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4242}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4243/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004244 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004245 to to perform a flush operation on a given AC. Upon the
4246 call of this API the WLAN DAL will pack and send a HAL
4247 Flush AC request message to the lower RIVA sub-system if
4248 DAL is in state STARTED.
4249
4250 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004251 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004252
4253 WDI_AddBAReq must have been called.
4254
Jeff Johnsone7245742012-09-05 17:12:55 -07004255 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004256 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004257
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 wdiFlushAcRspCb: callback for passing back the response
4259 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004260
Jeff Johnson295189b2012-06-20 16:38:30 -07004261 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004262 callback
4263
Jeff Johnson295189b2012-06-20 16:38:30 -07004264 @see WDI_AddBAReq
4265 @return Result of the function call
4266*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004267WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004268WDI_FlushAcReq
4269(
4270 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4271 WDI_FlushAcRspCb wdiFlushAcRspCb,
4272 void* pUserData
4273)
4274{
4275 WDI_EventInfoType wdiEventData;
4276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4277
4278 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004279 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004280 ------------------------------------------------------------------------*/
4281 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4282 {
4283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4284 "WDI API call before module is initialized - Fail request");
4285
Jeff Johnsone7245742012-09-05 17:12:55 -07004286 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004287 }
4288
4289 /*------------------------------------------------------------------------
4290 Fill in Event data and post to the Main FSM
4291 ------------------------------------------------------------------------*/
4292 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 wdiEventData.pEventData = pwdiFlushAcReqParams;
4294 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4295 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004296 wdiEventData.pUserData = pUserData;
4297
4298 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4299
4300}/*WDI_FlushAcReq*/
4301
4302/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004303 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 wants to notify the lower mac on a BT AMP event. This is
4305 to inform BTC-SLM that some BT AMP event occurred. Upon
4306 the call of this API the WLAN DAL will pack and send a
4307 HAL BT AMP event request message to the lower RIVA
4308 sub-system if DAL is in state STARTED.
4309
4310 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004311 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004312
Jeff Johnsone7245742012-09-05 17:12:55 -07004313
4314 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004315 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004316
Jeff Johnson295189b2012-06-20 16:38:30 -07004317 wdiBtAmpEventRspCb: callback for passing back the
4318 response of the BT AMP event operation received from the
4319 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004320
Jeff Johnson295189b2012-06-20 16:38:30 -07004321 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 callback
4323
Jeff Johnson295189b2012-06-20 16:38:30 -07004324 @return Result of the function call
4325*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004326WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004327WDI_BtAmpEventReq
4328(
4329 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4330 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4331 void* pUserData
4332)
4333{
4334 WDI_EventInfoType wdiEventData;
4335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4336
4337 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004338 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004339 ------------------------------------------------------------------------*/
4340 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4341 {
4342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4343 "WDI API call before module is initialized - Fail request");
4344
Jeff Johnsone7245742012-09-05 17:12:55 -07004345 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004346 }
4347
4348 /*------------------------------------------------------------------------
4349 Fill in Event data and post to the Main FSM
4350 ------------------------------------------------------------------------*/
4351 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004352 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4353 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4354 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004355 wdiEventData.pUserData = pUserData;
4356
4357 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4358
4359}/*WDI_BtAmpEventReq*/
4360
Jeff Johnsone7245742012-09-05 17:12:55 -07004361#ifdef FEATURE_OEM_DATA_SUPPORT
4362/**
4363 @brief WDI_Start Oem Data Req will be called when the upper MAC
4364 wants to notify the lower mac on a oem data Req event.Upon
4365 the call of this API the WLAN DAL will pack and send a
4366 HAL OEM Data Req event request message to the lower RIVA
4367 sub-system if DAL is in state STARTED.
4368
4369 In state BUSY this request will be queued. Request won't
4370 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004371
4372
Jeff Johnsone7245742012-09-05 17:12:55 -07004373
4374 @param pwdiOemDataReqParams: the Oem Data Req as
4375 specified by the Device Interface
4376
4377 wdiStartOemDataRspCb: callback for passing back the
4378 response of the Oem Data Req received from the
4379 device
4380
4381 pUserData: user data will be passed back with the
4382 callback
4383
4384 @return Result of the function call
4385*/
4386WDI_Status
4387WDI_StartOemDataReq
4388(
4389 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4390 WDI_oemDataRspCb wdiOemDataRspCb,
4391 void* pUserData
4392)
4393{
4394 WDI_EventInfoType wdiEventData;
4395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4396
4397 /*------------------------------------------------------------------------
4398 Sanity Check
4399 ------------------------------------------------------------------------*/
4400 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4401 {
4402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4403 "WDI API call before module is initialized - Fail request");
4404
4405 return WDI_STATUS_E_NOT_ALLOWED;
4406 }
4407
4408 /*------------------------------------------------------------------------
4409 Fill in Event data and post to the Main FSM
4410 ------------------------------------------------------------------------*/
4411 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4412 wdiEventData.pEventData = pwdiOemDataReqParams;
4413 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4414 wdiEventData.pCBfnc = wdiOemDataRspCb;
4415 wdiEventData.pUserData = pUserData;
4416
4417 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4418
4419
4420}
4421
4422#endif
4423
4424
4425/*========================================================================
4426
Jeff Johnson295189b2012-06-20 16:38:30 -07004427 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004428
Jeff Johnson295189b2012-06-20 16:38:30 -07004429==========================================================================*/
4430/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004432 the WLAN HW to change the current channel of operation.
4433 Upon the call of this API the WLAN DAL will pack and
4434 send a HAL Start request message to the lower RIVA
4435 sub-system if DAL is in state STARTED.
4436
4437 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004438 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004439
4440 WDI_Start must have been called.
4441
Jeff Johnsone7245742012-09-05 17:12:55 -07004442 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004443 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004444
Jeff Johnson295189b2012-06-20 16:38:30 -07004445 wdiSwitchChRspCb: callback for passing back the response
4446 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004447
Jeff Johnson295189b2012-06-20 16:38:30 -07004448 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004449 callback
4450
Jeff Johnson295189b2012-06-20 16:38:30 -07004451 @see WDI_Start
4452 @return Result of the function call
4453*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004454WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004455WDI_SwitchChReq
4456(
4457 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4458 WDI_SwitchChRspCb wdiSwitchChRspCb,
4459 void* pUserData
4460)
4461{
4462 WDI_EventInfoType wdiEventData;
4463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4464
4465 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004466 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004467 ------------------------------------------------------------------------*/
4468 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4469 {
4470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4471 "WDI API call before module is initialized - Fail request");
4472
Jeff Johnsone7245742012-09-05 17:12:55 -07004473 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004474 }
4475
4476 /*------------------------------------------------------------------------
4477 Fill in Event data and post to the Main FSM
4478 ------------------------------------------------------------------------*/
4479 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004480 wdiEventData.pEventData = pwdiSwitchChReqParams;
4481 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4482 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004483 wdiEventData.pUserData = pUserData;
4484
4485 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4486
4487}/*WDI_SwitchChReq*/
4488
4489
4490/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004491 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004492 wishes to add or update a STA in HW. Upon the call of
4493 this API the WLAN DAL will pack and send a HAL Start
4494 message request message to the lower RIVA sub-system if
4495 DAL is in state STARTED.
4496
4497 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004498 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004499
4500 WDI_Start must have been called.
4501
Jeff Johnsone7245742012-09-05 17:12:55 -07004502 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004504
Jeff Johnson295189b2012-06-20 16:38:30 -07004505 wdiConfigSTARspCb: callback for passing back the
4506 response of the config STA operation received from the
4507 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004508
Jeff Johnson295189b2012-06-20 16:38:30 -07004509 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004510 callback
4511
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 @see WDI_Start
4513 @return Result of the function call
4514*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004515WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004516WDI_ConfigSTAReq
4517(
4518 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4519 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4520 void* pUserData
4521)
4522{
4523 WDI_EventInfoType wdiEventData;
4524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4525
4526 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004527 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004528 ------------------------------------------------------------------------*/
4529 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4530 {
4531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4532 "WDI API call before module is initialized - Fail request");
4533
Jeff Johnsone7245742012-09-05 17:12:55 -07004534 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004535 }
4536
4537 /*------------------------------------------------------------------------
4538 Fill in Event data and post to the Main FSM
4539 ------------------------------------------------------------------------*/
4540 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004541 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4542 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4543 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 wdiEventData.pUserData = pUserData;
4545
4546 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4547
4548}/*WDI_ConfigSTAReq*/
4549
4550/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004551 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004552 wants to change the state of an ongoing link. Upon the
4553 call of this API the WLAN DAL will pack and send a HAL
4554 Start message request message to the lower RIVA
4555 sub-system if DAL is in state STARTED.
4556
4557 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004558 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004559
4560 WDI_JoinStartReq must have been called.
4561
Jeff Johnsone7245742012-09-05 17:12:55 -07004562 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004564
Jeff Johnson295189b2012-06-20 16:38:30 -07004565 wdiSetLinkStateRspCb: callback for passing back the
4566 response of the set link state operation received from
4567 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004568
Jeff Johnson295189b2012-06-20 16:38:30 -07004569 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 callback
4571
Jeff Johnson295189b2012-06-20 16:38:30 -07004572 @see WDI_JoinStartReq
4573 @return Result of the function call
4574*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004575WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004576WDI_SetLinkStateReq
4577(
4578 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4579 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4580 void* pUserData
4581)
4582{
4583 WDI_EventInfoType wdiEventData;
4584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4585
4586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004587 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004588 ------------------------------------------------------------------------*/
4589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4590 {
4591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4592 "WDI API call before module is initialized - Fail request");
4593
Jeff Johnsone7245742012-09-05 17:12:55 -07004594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004595 }
4596
4597 /*------------------------------------------------------------------------
4598 Fill in Event data and post to the Main FSM
4599 ------------------------------------------------------------------------*/
4600 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004601 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4602 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4603 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 wdiEventData.pUserData = pUserData;
4605
4606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4607
4608}/*WDI_SetLinkStateReq*/
4609
4610
4611/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 to get statistics (MIB counters) from the device. Upon
4614 the call of this API the WLAN DAL will pack and send a
4615 HAL Start request message to the lower RIVA sub-system
4616 if DAL is in state STARTED.
4617
4618 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004620
4621 WDI_Start must have been called.
4622
Jeff Johnsone7245742012-09-05 17:12:55 -07004623 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004624 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004625
Jeff Johnson295189b2012-06-20 16:38:30 -07004626 wdiGetStatsRspCb: callback for passing back the response
4627 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004628
Jeff Johnson295189b2012-06-20 16:38:30 -07004629 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004630 callback
4631
Jeff Johnson295189b2012-06-20 16:38:30 -07004632 @see WDI_Start
4633 @return Result of the function call
4634*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004635WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004636WDI_GetStatsReq
4637(
4638 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4639 WDI_GetStatsRspCb wdiGetStatsRspCb,
4640 void* pUserData
4641)
4642{
4643 WDI_EventInfoType wdiEventData;
4644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4645
4646 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004647 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004648 ------------------------------------------------------------------------*/
4649 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4650 {
4651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4652 "WDI API call before module is initialized - Fail request");
4653
Jeff Johnsone7245742012-09-05 17:12:55 -07004654 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004655 }
4656
4657 /*------------------------------------------------------------------------
4658 Fill in Event data and post to the Main FSM
4659 ------------------------------------------------------------------------*/
4660 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004661 wdiEventData.pEventData = pwdiGetStatsReqParams;
4662 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4663 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 wdiEventData.pUserData = pUserData;
4665
4666 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4667
4668}/*WDI_GetStatsReq*/
4669
4670
4671/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 it wishes to change the configuration of the WLAN
4674 Device. Upon the call of this API the WLAN DAL will pack
4675 and send a HAL Update CFG request message to the lower
4676 RIVA sub-system if DAL is in state STARTED.
4677
4678 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004680
4681 WDI_Start must have been called.
4682
Jeff Johnsone7245742012-09-05 17:12:55 -07004683 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004684 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004685
Jeff Johnson295189b2012-06-20 16:38:30 -07004686 wdiUpdateCfgsRspCb: callback for passing back the
4687 response of the update cfg operation received from the
4688 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004689
Jeff Johnson295189b2012-06-20 16:38:30 -07004690 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004691 callback
4692
Jeff Johnson295189b2012-06-20 16:38:30 -07004693 @see WDI_Start
4694 @return Result of the function call
4695*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004696WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004697WDI_UpdateCfgReq
4698(
4699 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4700 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4701 void* pUserData
4702)
4703{
4704 WDI_EventInfoType wdiEventData;
4705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4706
4707 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004708 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004709 ------------------------------------------------------------------------*/
4710 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4711 {
4712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4713 "WDI API call before module is initialized - Fail request");
4714
Jeff Johnsone7245742012-09-05 17:12:55 -07004715 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004716 }
4717
4718 /*------------------------------------------------------------------------
4719 Fill in Event data and post to the Main FSM
4720 ------------------------------------------------------------------------*/
4721 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004722 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4723 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4724 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 wdiEventData.pUserData = pUserData;
4726
4727 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4728
4729}/*WDI_UpdateCfgReq*/
4730
4731
4732
4733/**
4734 @brief WDI_AddBAReq will be called when the upper MAC has setup
4735 successfully a BA session and needs to notify the HW for
4736 the appropriate settings to take place. Upon the call of
4737 this API the WLAN DAL will pack and send a HAL Add BA
4738 request message to the lower RIVA sub-system if DAL is
4739 in state STARTED.
4740
4741 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004742 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004743
4744 WDI_PostAssocReq must have been called.
4745
4746 @param wdiAddBAReqParams: the add BA parameters as specified by
4747 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004748
Jeff Johnson295189b2012-06-20 16:38:30 -07004749 wdiAddBARspCb: callback for passing back the response of
4750 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004751
Jeff Johnson295189b2012-06-20 16:38:30 -07004752 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004753 callback
4754
Jeff Johnson295189b2012-06-20 16:38:30 -07004755 @see WDI_PostAssocReq
4756 @return Result of the function call
4757*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004758WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004759WDI_AddBAReq
4760(
4761 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4762 WDI_AddBARspCb wdiAddBARspCb,
4763 void* pUserData
4764)
4765{
4766 WDI_EventInfoType wdiEventData;
4767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4768
4769 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004770 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004771 ------------------------------------------------------------------------*/
4772 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4773 {
4774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4775 "WDI API call before module is initialized - Fail request");
4776
Jeff Johnsone7245742012-09-05 17:12:55 -07004777 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 }
4779
4780 /*------------------------------------------------------------------------
4781 Fill in Event data and post to the Main FSM
4782 ------------------------------------------------------------------------*/
4783 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004784 wdiEventData.pEventData = pwdiAddBAReqParams;
4785 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4786 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004787 wdiEventData.pUserData = pUserData;
4788
4789 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4790
4791}/*WDI_AddBAReq*/
4792
4793
4794/**
4795 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4796 successfully a BA session and needs to notify the HW for
4797 the appropriate settings to take place. Upon the call of
4798 this API the WLAN DAL will pack and send a HAL Add BA
4799 request message to the lower RIVA sub-system if DAL is
4800 in state STARTED.
4801
4802 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004803 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004804
4805 WDI_PostAssocReq must have been called.
4806
4807 @param wdiAddBAReqParams: the add BA parameters as specified by
4808 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004809
Jeff Johnson295189b2012-06-20 16:38:30 -07004810 wdiAddBARspCb: callback for passing back the response of
4811 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004812
Jeff Johnson295189b2012-06-20 16:38:30 -07004813 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004814 callback
4815
Jeff Johnson295189b2012-06-20 16:38:30 -07004816 @see WDI_PostAssocReq
4817 @return Result of the function call
4818*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004819WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004820WDI_TriggerBAReq
4821(
4822 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4823 WDI_TriggerBARspCb wdiTriggerBARspCb,
4824 void* pUserData
4825)
4826{
4827 WDI_EventInfoType wdiEventData;
4828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4829
4830 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004832 ------------------------------------------------------------------------*/
4833 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4834 {
4835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4836 "WDI API call before module is initialized - Fail request");
4837
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004839 }
4840
4841 /*------------------------------------------------------------------------
4842 Fill in Event data and post to the Main FSM
4843 ------------------------------------------------------------------------*/
4844 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004845 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4846 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4847 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004848 wdiEventData.pUserData = pUserData;
4849
4850 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4851
4852}/*WDI_AddBAReq*/
4853
4854/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 wishes to update any of the Beacon parameters used by HW.
4857 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4858 message to the lower RIVA sub-system if DAL is in state
4859 STARTED.
4860
4861 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004862 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004863
4864 WDI_PostAssocReq must have been called.
4865
Jeff Johnsone7245742012-09-05 17:12:55 -07004866 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004867 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004868
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 wdiUpdateBeaconParamsRspCb: callback for passing back the
4870 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004871
Jeff Johnson295189b2012-06-20 16:38:30 -07004872 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004873 callback
4874
Jeff Johnson295189b2012-06-20 16:38:30 -07004875 @see WDI_PostAssocReq
4876 @return Result of the function call
4877*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004878WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004879WDI_UpdateBeaconParamsReq
4880(
4881 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4882 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4883 void* pUserData
4884)
4885{
4886 WDI_EventInfoType wdiEventData;
4887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4888
4889 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004890 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004891 ------------------------------------------------------------------------*/
4892 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4893 {
4894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4895 "WDI API call before module is initialized - Fail request");
4896
Jeff Johnsone7245742012-09-05 17:12:55 -07004897 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 }
4899
4900 /*------------------------------------------------------------------------
4901 Fill in Event data and post to the Main FSM
4902 ------------------------------------------------------------------------*/
4903 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004904 wdiEventData.pEventData = pwdiUpdateBeaconParams;
4905 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
4906 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004907 wdiEventData.pUserData = pUserData;
4908
4909 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4910
4911}/*WDI_UpdateBeaconParamsReq*/
4912
4913/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004914 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004915 wishes to update the Beacon template used by HW.
4916 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
4917 message to the lower RIVA sub-system if DAL is in state
4918 STARTED.
4919
4920 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004921 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004922
4923 WDI_PostAssocReq must have been called.
4924
Jeff Johnsone7245742012-09-05 17:12:55 -07004925 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004926 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004927
Jeff Johnson295189b2012-06-20 16:38:30 -07004928 wdiSendBeaconParamsRspCb: callback for passing back the
4929 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004930
Jeff Johnson295189b2012-06-20 16:38:30 -07004931 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004932 callback
4933
Jeff Johnson295189b2012-06-20 16:38:30 -07004934 @see WDI_PostAssocReq
4935 @return Result of the function call
4936*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004937WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004938WDI_SendBeaconParamsReq
4939(
4940 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
4941 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
4942 void* pUserData
4943)
4944{
4945 WDI_EventInfoType wdiEventData;
4946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4947
4948 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004949 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004950 ------------------------------------------------------------------------*/
4951 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4952 {
4953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4954 "WDI API call before module is initialized - Fail request");
4955
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004957 }
4958
4959 /*------------------------------------------------------------------------
4960 Fill in Event data and post to the Main FSM
4961 ------------------------------------------------------------------------*/
4962 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004963 wdiEventData.pEventData = pwdiSendBeaconParams;
4964 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
4965 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004966 wdiEventData.pUserData = pUserData;
4967
4968 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4969
4970}/*WDI_SendBeaconParamsReq*/
4971
4972/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004973 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07004974 upper MAC wants to update the probe response template to
4975 be transmitted as Soft AP
4976 Upon the call of this API the WLAN DAL will
4977 pack and send the probe rsp template message to the
4978 lower RIVA sub-system if DAL is in state STARTED.
4979
4980 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004981 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004982
4983
Jeff Johnsone7245742012-09-05 17:12:55 -07004984 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004985 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004986
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 wdiSendBeaconParamsRspCb: callback for passing back the
4988 response of the Send Beacon Params operation received
4989 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004990
Jeff Johnson295189b2012-06-20 16:38:30 -07004991 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004992 callback
4993
Jeff Johnson295189b2012-06-20 16:38:30 -07004994 @see WDI_AddBAReq
4995 @return Result of the function call
4996*/
4997
Jeff Johnsone7245742012-09-05 17:12:55 -07004998WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004999WDI_UpdateProbeRspTemplateReq
5000(
5001 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5002 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5003 void* pUserData
5004)
5005{
5006 WDI_EventInfoType wdiEventData;
5007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5008
5009 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005010 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005011 ------------------------------------------------------------------------*/
5012 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5013 {
5014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5015 "WDI API call before module is initialized - Fail request");
5016
Jeff Johnsone7245742012-09-05 17:12:55 -07005017 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005018 }
5019
5020 /*------------------------------------------------------------------------
5021 Fill in Event data and post to the Main FSM
5022 ------------------------------------------------------------------------*/
5023 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005024 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5025 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5026 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005027 wdiEventData.pUserData = pUserData;
5028
5029 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5030
5031}/*WDI_UpdateProbeRspTemplateReq*/
5032
5033/**
5034 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5035 to the NV memory.
5036
5037
5038 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5039 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005040
Jeff Johnson295189b2012-06-20 16:38:30 -07005041 wdiNvDownloadRspCb: callback for passing back the response of
5042 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005043
Jeff Johnson295189b2012-06-20 16:38:30 -07005044 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005045 callback
5046
Jeff Johnson295189b2012-06-20 16:38:30 -07005047 @see WDI_PostAssocReq
5048 @return Result of the function call
5049*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005050WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005051WDI_NvDownloadReq
5052(
5053 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5054 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5055 void* pUserData
5056)
5057{
5058 WDI_EventInfoType wdiEventData;
5059
5060 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005061 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005062 ------------------------------------------------------------------------*/
5063 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5064 {
5065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5066 "WDI API call before module is initialized - Fail request");
5067
Jeff Johnsone7245742012-09-05 17:12:55 -07005068 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005069 }
5070
5071 /*------------------------------------------------------------------------
5072 Fill in Event data and post to the Main FSM
5073 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5075 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5076 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5077 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005078 wdiEventData.pUserData = pUserData;
5079
5080 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5081
5082}/*WDI_NVDownloadReq*/
5083
5084#ifdef WLAN_FEATURE_P2P
5085/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005086 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 upper MAC wants to send Notice of Absence
5088 Upon the call of this API the WLAN DAL will
5089 pack and send the probe rsp template message to the
5090 lower RIVA sub-system if DAL is in state STARTED.
5091
5092 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005093 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005094
5095
Jeff Johnsone7245742012-09-05 17:12:55 -07005096 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005097 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005098
Jeff Johnson295189b2012-06-20 16:38:30 -07005099 wdiSendBeaconParamsRspCb: callback for passing back the
5100 response of the Send Beacon Params operation received
5101 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005102
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005104 callback
5105
Jeff Johnson295189b2012-06-20 16:38:30 -07005106 @see WDI_AddBAReq
5107 @return Result of the function call
5108*/
5109WDI_Status
5110WDI_SetP2PGONOAReq
5111(
5112 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5113 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5114 void* pUserData
5115)
5116{
5117 WDI_EventInfoType wdiEventData;
5118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5119
5120 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005121 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 ------------------------------------------------------------------------*/
5123 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5124 {
5125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5126 "WDI API call before module is initialized - Fail request");
5127
Jeff Johnsone7245742012-09-05 17:12:55 -07005128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005129 }
5130
5131 /*------------------------------------------------------------------------
5132 Fill in Event data and post to the Main FSM
5133 ------------------------------------------------------------------------*/
5134 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005135 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5136 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5137 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005138 wdiEventData.pUserData = pUserData;
5139
5140 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5141
5142}/*WDI_SetP2PGONOAReq*/
5143#endif
5144
5145/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005146 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005147 UMAC wanted to add STA self while opening any new session
5148 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005149 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005150
5151
Jeff Johnsone7245742012-09-05 17:12:55 -07005152 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005153 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005154
Jeff Johnson295189b2012-06-20 16:38:30 -07005155 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005156 callback
5157
5158 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005159 @return Result of the function call
5160*/
5161WDI_Status
5162WDI_AddSTASelfReq
5163(
5164 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5165 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5166 void* pUserData
5167)
5168{
5169 WDI_EventInfoType wdiEventData;
5170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5171
5172 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005173 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005174 ------------------------------------------------------------------------*/
5175 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5176 {
5177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5178 "WDI API call before module is initialized - Fail request");
5179
Jeff Johnsone7245742012-09-05 17:12:55 -07005180 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005181 }
5182
5183 /*------------------------------------------------------------------------
5184 Fill in Event data and post to the Main FSM
5185 ------------------------------------------------------------------------*/
5186 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005187 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5188 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5189 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005190 wdiEventData.pUserData = pUserData;
5191
5192 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5193
5194}/*WDI_AddSTASelfReq*/
5195
5196
Jeff Johnsone7245742012-09-05 17:12:55 -07005197#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005198/**
5199 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5200 the device of a successful add TSpec negotiation. HW
5201 needs to receive the TSpec Info from the UMAC in order
5202 to configure properly the QoS data traffic. Upon the
5203 call of this API the WLAN DAL will pack and send a HAL
5204 Add TS request message to the lower RIVA sub-system if
5205 DAL is in state STARTED.
5206
5207 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005208 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005209
5210 WDI_PostAssocReq must have been called.
5211
5212 @param wdiAddTsReqParams: the add TS parameters as specified by
5213 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005214
Jeff Johnson295189b2012-06-20 16:38:30 -07005215 wdiAddTsRspCb: callback for passing back the response of
5216 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005217
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005219 callback
5220
Jeff Johnson295189b2012-06-20 16:38:30 -07005221 @see WDI_PostAssocReq
5222 @return Result of the function call
5223*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005224WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005225WDI_AggrAddTSReq
5226(
5227 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5228 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5229 void* pUserData
5230)
5231{
5232 WDI_EventInfoType wdiEventData;
5233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5234
5235 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005236 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005237 ------------------------------------------------------------------------*/
5238 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5239 {
5240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5241 "WDI API call before module is initialized - Fail request");
5242
Jeff Johnsone7245742012-09-05 17:12:55 -07005243 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005244 }
5245
5246 /*------------------------------------------------------------------------
5247 Fill in Event data and post to the Main FSM
5248 ------------------------------------------------------------------------*/
5249 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005250 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5251 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5252 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005253 wdiEventData.pUserData = pUserData;
5254
5255 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5256
5257}/*WDI_AggrAddTSReq*/
5258
5259#endif /* WLAN_FEATURE_VOWIFI_11R */
5260
5261#ifdef ANI_MANF_DIAG
5262/**
5263 @brief WDI_FTMCommandReq
5264 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005265
5266 @param ftmCommandReq: FTM Command Body
5267 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005269
Jeff Johnson295189b2012-06-20 16:38:30 -07005270 @see
5271 @return Result of the function call
5272*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005273WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005274WDI_FTMCommandReq
5275(
5276 WDI_FTMCommandReqType *ftmCommandReq,
5277 WDI_FTMCommandRspCb ftmCommandRspCb,
5278 void *pUserData
5279)
5280{
5281 WDI_EventInfoType wdiEventData;
5282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5283
5284 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005285 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005286 ------------------------------------------------------------------------*/
5287 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5288 {
5289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5290 "WDI API call before module is initialized - Fail request");
5291
Jeff Johnsone7245742012-09-05 17:12:55 -07005292 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005293 }
5294
5295 /*------------------------------------------------------------------------
5296 Fill in Event data and post to the Main FSM
5297 ------------------------------------------------------------------------*/
5298 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5299 wdiEventData.pEventData = (void *)ftmCommandReq;
5300 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5301 wdiEventData.pCBfnc = ftmCommandRspCb;
5302 wdiEventData.pUserData = pUserData;
5303
5304 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5305}
Jeff Johnsone7245742012-09-05 17:12:55 -07005306#endif /* ANI_MANF_DIAG */
Jeff Johnson295189b2012-06-20 16:38:30 -07005307/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005308 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005309
5310 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005311 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005312
5313
5314 @param pwdiResumeReqParams: as specified by
5315 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005316
Jeff Johnson295189b2012-06-20 16:38:30 -07005317 wdiResumeReqRspCb: callback for passing back the response of
5318 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005319
Jeff Johnson295189b2012-06-20 16:38:30 -07005320 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005321 callback
5322
5323 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 @return Result of the function call
5325*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005326WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005327WDI_HostResumeReq
5328(
5329 WDI_ResumeParamsType* pwdiResumeReqParams,
5330 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5331 void* pUserData
5332)
5333{
5334 WDI_EventInfoType wdiEventData;
5335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5336
5337 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005338 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005339 ------------------------------------------------------------------------*/
5340 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5341 {
5342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5343 "WDI API call before module is initialized - Fail request");
5344
Jeff Johnsone7245742012-09-05 17:12:55 -07005345 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005346 }
5347
5348 /*------------------------------------------------------------------------
5349 Fill in Event data and post to the Main FSM
5350 ------------------------------------------------------------------------*/
5351 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005352 wdiEventData.pEventData = pwdiResumeReqParams;
5353 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5354 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005355 wdiEventData.pUserData = pUserData;
5356
5357 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5358
5359}/*WDI_HostResumeReq*/
5360
5361/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005362 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005363
5364 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005365 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005366
5367
5368 @param pwdiDelStaSelfReqParams: as specified by
5369 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005370
Jeff Johnson295189b2012-06-20 16:38:30 -07005371 wdiDelStaSelfRspCb: callback for passing back the response of
5372 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005373
Jeff Johnson295189b2012-06-20 16:38:30 -07005374 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005375 callback
5376
Jeff Johnson295189b2012-06-20 16:38:30 -07005377 @see WDI_PostAssocReq
5378 @return Result of the function call
5379*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005380WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005381WDI_DelSTASelfReq
5382(
5383 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5384 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5385 void* pUserData
5386)
5387{
5388 WDI_EventInfoType wdiEventData;
5389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5390
5391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 ------------------------------------------------------------------------*/
5394 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5395 {
5396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5397 "WDI API call before module is initialized - Fail request");
5398
Jeff Johnsone7245742012-09-05 17:12:55 -07005399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005400 }
5401
5402 /*------------------------------------------------------------------------
5403 Fill in Event data and post to the Main FSM
5404 ------------------------------------------------------------------------*/
5405 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005406 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5407 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5408 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005409 wdiEventData.pUserData = pUserData;
5410
5411 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5412
5413}/*WDI_AggrAddTSReq*/
5414
5415/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005416 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5417 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005418 Upon the call of this API the WLAN DAL will pack
5419 and send a HAL Set Tx Per Tracking request message to the
5420 lower RIVA sub-system if DAL is in state STARTED.
5421
5422 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005423 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005424
Jeff Johnsone7245742012-09-05 17:12:55 -07005425 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005426 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005427
Jeff Johnson295189b2012-06-20 16:38:30 -07005428 pwdiSetTxPerTrackingRspCb: callback for passing back the
5429 response of the set Tx PER Tracking configurations operation received
5430 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005431
Jeff Johnson295189b2012-06-20 16:38:30 -07005432 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005433 callback
5434
Jeff Johnson295189b2012-06-20 16:38:30 -07005435 @return Result of the function call
5436*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005437WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005438WDI_SetTxPerTrackingReq
5439(
5440 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5441 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5442 void* pUserData
5443)
5444{
5445 WDI_EventInfoType wdiEventData;
5446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5447
5448 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005449 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005450 ------------------------------------------------------------------------*/
5451 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5452 {
5453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5454 "WDI API call before module is initialized - Fail request");
5455
Jeff Johnsone7245742012-09-05 17:12:55 -07005456 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005457 }
5458
5459 /*------------------------------------------------------------------------
5460 Fill in Event data and post to the Main FSM
5461 ------------------------------------------------------------------------*/
5462 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005463 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005464 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005465 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005466 wdiEventData.pUserData = pUserData;
5467
5468 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5469
5470}/*WDI_SetTxPerTrackingReq*/
5471
5472/**
5473 @brief WDI_SetTmLevelReq
5474 If HW Thermal condition changed, driver should react based on new
5475 HW thermal condition.
5476
5477 @param pwdiSetTmLevelReq: New thermal condition information
5478
5479 pwdiSetTmLevelRspCb: callback
5480
5481 usrData: user data will be passed back with the
5482 callback
5483
5484 @return Result of the function call
5485*/
5486WDI_Status
5487WDI_SetTmLevelReq
5488(
5489 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5490 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5491 void *usrData
5492)
5493{
5494 WDI_EventInfoType wdiEventData;
5495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5496
5497 /*------------------------------------------------------------------------
5498 Sanity Check
5499 ------------------------------------------------------------------------*/
5500 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5501 {
5502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5503 "WDI API call before module is initialized - Fail request");
5504
5505 return WDI_STATUS_E_NOT_ALLOWED;
5506 }
5507
5508 /*------------------------------------------------------------------------
5509 Fill in Event data and post to the Main FSM
5510 ------------------------------------------------------------------------*/
5511 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5512 wdiEventData.pEventData = pwdiSetTmLevelReq;
5513 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5514 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5515 wdiEventData.pUserData = usrData;
5516
5517 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5518}
5519
5520/**
5521 @brief WDI_HostSuspendInd
5522
5523 Suspend Indication from the upper layer will be sent
5524 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005525
Jeff Johnson295189b2012-06-20 16:38:30 -07005526 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005527
5528 @see
5529
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 @return Status of the request
5531*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005532WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005533WDI_HostSuspendInd
5534(
5535 WDI_SuspendParamsType* pwdiSuspendIndParams
5536)
5537{
5538
5539 WDI_EventInfoType wdiEventData;
5540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5541
5542 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005543 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005544 ------------------------------------------------------------------------*/
5545 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5546 {
5547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5548 "WDI API call before module is initialized - Fail request");
5549
Jeff Johnsone7245742012-09-05 17:12:55 -07005550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005551 }
5552
5553 /*------------------------------------------------------------------------
5554 Fill in Event data and post to the Main FSM
5555 ------------------------------------------------------------------------*/
5556 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005557 wdiEventData.pEventData = pwdiSuspendIndParams;
5558 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5559 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005560 wdiEventData.pUserData = NULL;
5561
5562 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5563
5564}/*WDI_HostSuspendInd*/
5565
5566/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005567 @brief WDI_TrafficStatsInd
5568 Traffic Stats from the upper layer will be sent
5569 down to HAL
5570
5571 @param WDI_TrafficStatsIndType
5572
5573 @see
5574
5575 @return Status of the request
5576*/
5577WDI_Status
5578WDI_TrafficStatsInd
5579(
5580 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5581)
5582{
5583
5584 WDI_EventInfoType wdiEventData;
5585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5586
5587 /*------------------------------------------------------------------------
5588 Sanity Check
5589 ------------------------------------------------------------------------*/
5590 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5591 {
5592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5593 "WDI API call before module is initialized - Fail request");
5594
5595 return WDI_STATUS_E_NOT_ALLOWED;
5596 }
5597
5598 /*------------------------------------------------------------------------
5599 Fill in Event data and post to the Main FSM
5600 ------------------------------------------------------------------------*/
5601 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5602 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5603 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5604 wdiEventData.pCBfnc = NULL;
5605 wdiEventData.pUserData = NULL;
5606
5607 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5608
5609}/*WDI_TrafficStatsInd*/
5610
5611/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005612 @brief WDI_HALDumpCmdReq
5613 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005614
5615 @param halDumpCmdReqParams: Hal Dump Command Body
5616 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005617 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005618
Jeff Johnson295189b2012-06-20 16:38:30 -07005619 @see
5620 @return Result of the function call
5621*/
5622WDI_Status WDI_HALDumpCmdReq
5623(
5624 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5625 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5626 void *pUserData
5627)
5628{
5629 WDI_EventInfoType wdiEventData;
5630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5631
5632 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005633 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 ------------------------------------------------------------------------*/
5635 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5636 {
5637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5638 "WDI API call before module is initialized - Fail request");
5639
Jeff Johnsone7245742012-09-05 17:12:55 -07005640 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005641 }
5642
5643 /*------------------------------------------------------------------------
5644 Fill in Event data and post to the Main FSM
5645 ------------------------------------------------------------------------*/
5646 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5647 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5648 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5649 wdiEventData.pCBfnc = halDumpCmdRspCb;
5650 wdiEventData.pUserData = pUserData;
5651
5652 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5653}
5654
Jeff Johnsone7245742012-09-05 17:12:55 -07005655/*============================================================================
5656
Jeff Johnson295189b2012-06-20 16:38:30 -07005657 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005658
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 ============================================================================*/
5660
5661/**
5662 @brief Main FSM Start function for all states except BUSY
5663
Jeff Johnsone7245742012-09-05 17:12:55 -07005664
5665 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005666 wdiEV: event posted to the main DAL FSM
5667 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005668 structure
5669
Jeff Johnson295189b2012-06-20 16:38:30 -07005670 @see
5671 @return Result of the function call
5672*/
5673WDI_Status
5674WDI_PostMainEvent
5675(
Jeff Johnsone7245742012-09-05 17:12:55 -07005676 WDI_ControlBlockType* pWDICtx,
5677 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005679
Jeff Johnson295189b2012-06-20 16:38:30 -07005680)
5681{
Jeff Johnsone7245742012-09-05 17:12:55 -07005682 WDI_Status wdiStatus;
5683 WDI_MainFuncType pfnWDIMainEvHdlr;
5684 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5686
5687 /*-------------------------------------------------------------------------
5688 Sanity check
5689 -------------------------------------------------------------------------*/
5690 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5691 ( wdiEV >= WDI_MAX_EVENT ))
5692 {
5693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5694 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5695 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005697 }
5698
5699 /*Access to the global state must be locked */
5700 wpalMutexAcquire(&pWDICtx->wptMutex);
5701
5702 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005703 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005704
5705 wdiOldState = pWDICtx->uGlobalState;
5706
5707 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005708 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5709 response comes from CCPU for the request sent by host:
5710 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 -07005711 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 -07005712 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005713 CCPU:
5714 don't change the state */
5715 if ( WDI_RESPONSE_EVENT != wdiEV)
5716 {
5717 /*Transition to BUSY State - the request is now being processed by the FSM,
5718 if the request fails we shall transition back to the old state, if not
5719 the request will manage its own state transition*/
5720 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5721 }
5722 /* If the state function associated with the EV is NULL it means that this
5723 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005724 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005725 {
5726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005727 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005728 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005729 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005730 }
5731 else
5732 {
5733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005734 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005735 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005736 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005737 }
5738
5739 /* If a request handles itself well it will end up in a success or in a
5740 pending
5741 Success - means that the request was processed and the proper state
5742 transition already occurred or will occur when the resp is received
5743 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005744
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 Pending - means the request could not be processed at this moment in time
5746 because the FSM was already busy so no state transition or dequeueing
5747 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005748
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 Success for synchronous case means that the transition may occur and
5750 processing of pending requests may continue - so it should go through
5751 and restores the state and continue processing queued requests*/
5752 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5753 ( WDI_STATUS_PENDING != wdiStatus ))
5754 {
5755 if ( WDI_RESPONSE_EVENT != wdiEV)
5756 {
5757 /*The request has failed or could not be processed - transition back to
5758 the old state - check to see if anything was queued and try to execute
5759 The dequeue logic should post a message to a thread and return - no
5760 actual processing can occur */
5761 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5762 }
5763 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005764
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 }
5766
5767 /* we have completed processing the event */
5768 wpalMutexRelease(&pWDICtx->wptMutex);
5769
Jeff Johnsone7245742012-09-05 17:12:55 -07005770 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005771
5772}/*WDI_PostMainEvent*/
5773
5774
5775/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005776 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005777--------------------------------------------------------------------------*/
5778/**
5779 @brief Main FSM Start function for all states except BUSY
5780
Jeff Johnsone7245742012-09-05 17:12:55 -07005781
5782 @param pWDICtx: pointer to the WLAN DAL context
5783 pEventData: pointer to the event information structure
5784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 @see
5786 @return Result of the function call
5787*/
5788WDI_Status
5789WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005790(
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 WDI_ControlBlockType* pWDICtx,
5792 WDI_EventInfoType* pEventData
5793)
5794{
5795
5796 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005797 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005798 ----------------------------------------------------------------------*/
5799 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5800 {
5801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005802 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005803 pWDICtx, pEventData);
5804 return WDI_STATUS_E_FAILURE;
5805 }
5806
5807 wpalMutexAcquire(&pWDICtx->wptMutex);
5808
5809 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 ----------------------------------------------------------------------*/
5812 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5813 {
5814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5815 "Control Transport not yet Open - queueing the request");
5816
5817 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005818 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005819
5820 wpalMutexRelease(&pWDICtx->wptMutex);
5821 return WDI_STATUS_PENDING;
5822 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005823
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 wpalMutexRelease(&pWDICtx->wptMutex);
5825
5826 /*Return Success*/
5827 return WDI_ProcessRequest( pWDICtx, pEventData );
5828
5829}/*WDI_MainStart*/
5830
5831/**
5832 @brief Main FSM Response function for state INIT
5833
Jeff Johnsone7245742012-09-05 17:12:55 -07005834
5835 @param pWDICtx: pointer to the WLAN DAL context
5836 pEventData: pointer to the event information structure
5837
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 @see
5839 @return Result of the function call
5840*/
5841WDI_Status
5842WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005843(
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 WDI_ControlBlockType* pWDICtx,
5845 WDI_EventInfoType* pEventData
5846)
5847{
5848 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005851 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005852
5853 /*Return Success*/
5854 return WDI_STATUS_E_NOT_ALLOWED;
5855}/* WDI_MainRspInit */
5856
5857/**
5858 @brief Main FSM Close function for all states except BUSY
5859
Jeff Johnsone7245742012-09-05 17:12:55 -07005860
5861 @param pWDICtx: pointer to the WLAN DAL context
5862 pEventData: pointer to the event information structure
5863
Jeff Johnson295189b2012-06-20 16:38:30 -07005864 @see
5865 @return Result of the function call
5866*/
5867WDI_Status
5868WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005869(
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 WDI_ControlBlockType* pWDICtx,
5871 WDI_EventInfoType* pEventData
5872)
5873{
5874
5875 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005876 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005877 ----------------------------------------------------------------------*/
5878 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5879 {
5880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005881 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005882 pWDICtx, pEventData);
5883 return WDI_STATUS_E_FAILURE;
5884 }
5885
5886 /*Return Success*/
5887 return WDI_ProcessRequest( pWDICtx, pEventData );
5888
5889}/*WDI_MainClose*/
5890/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005891 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005892--------------------------------------------------------------------------*/
5893/**
5894 @brief Main FSM Start function for state STARTED
5895
Jeff Johnsone7245742012-09-05 17:12:55 -07005896
5897 @param pWDICtx: pointer to the WLAN DAL context
5898 pEventData: pointer to the event information structure
5899
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 @see
5901 @return Result of the function call
5902*/
5903WDI_Status
5904WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005905(
Jeff Johnson295189b2012-06-20 16:38:30 -07005906 WDI_ControlBlockType* pWDICtx,
5907 WDI_EventInfoType* pEventData
5908)
5909{
5910 WDI_StartRspCb wdiStartRspCb = NULL;
5911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5912
5913 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005915 ----------------------------------------------------------------------*/
5916 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5917 {
5918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005919 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005920 pWDICtx, pEventData);
5921 return WDI_STATUS_E_FAILURE;
5922 }
5923
5924 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005925 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07005926 ----------------------------------------------------------------------*/
5927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005928 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07005929
5930 wpalMutexAcquire(&pWDICtx->wptMutex);
5931
5932 /*Transition back to started because the post function transitioned us to
5933 busy*/
5934 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
5935
5936 /*Check to see if any request is pending*/
5937 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005938
Jeff Johnson295189b2012-06-20 16:38:30 -07005939 wpalMutexRelease(&pWDICtx->wptMutex);
5940
5941 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005942 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
5943
Jeff Johnson295189b2012-06-20 16:38:30 -07005944 /*Notify UMAC*/
5945 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
5946
5947 /*Return Success*/
5948 return WDI_STATUS_SUCCESS;
5949
5950}/*WDI_MainStartStarted*/
5951
5952/**
5953 @brief Main FSM Stop function for state STARTED
5954
Jeff Johnsone7245742012-09-05 17:12:55 -07005955
5956 @param pWDICtx: pointer to the WLAN DAL context
5957 pEventData: pointer to the event information structure
5958
Jeff Johnson295189b2012-06-20 16:38:30 -07005959 @see
5960 @return Result of the function call
5961*/
5962WDI_Status
5963WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005964(
Jeff Johnson295189b2012-06-20 16:38:30 -07005965 WDI_ControlBlockType* pWDICtx,
5966 WDI_EventInfoType* pEventData
5967)
5968{
5969 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005970 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005971 ----------------------------------------------------------------------*/
5972 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5973 {
5974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005975 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 pWDICtx, pEventData);
5977 return WDI_STATUS_E_FAILURE;
5978 }
5979
5980 /*State at this point is BUSY - because we enter this state before posting
5981 an event to the FSM in order to prevent potential race conditions*/
5982
5983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5984 "Processing stop request in FSM");
5985
5986 /*Return Success*/
5987 return WDI_ProcessRequest( pWDICtx, pEventData );
5988
5989}/*WDI_MainStopStarted*/
5990/**
5991 @brief Main FSM Request function for state started
5992
Jeff Johnsone7245742012-09-05 17:12:55 -07005993
5994 @param pWDICtx: pointer to the WLAN DAL context
5995 pEventData: pointer to the event information structure
5996
Jeff Johnson295189b2012-06-20 16:38:30 -07005997 @see
5998 @return Result of the function call
5999*/
6000WDI_Status
6001WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006002(
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 WDI_ControlBlockType* pWDICtx,
6004 WDI_EventInfoType* pEventData
6005)
6006{
6007
6008 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 ----------------------------------------------------------------------*/
6011 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6012 {
6013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006014 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006015 pWDICtx, pEventData);
6016 return WDI_STATUS_E_FAILURE;
6017 }
6018
6019 /*State at this point is BUSY - because we enter this state before posting
6020 an event to the FSM in order to prevent potential race conditions*/
6021
6022 /*Return Success*/
6023 return WDI_ProcessRequest( pWDICtx, pEventData );
6024
6025}/*WDI_MainReqStarted*/
6026
6027/**
6028 @brief Main FSM Response function for all states except INIT
6029
Jeff Johnsone7245742012-09-05 17:12:55 -07006030
6031 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006032 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006033
Jeff Johnson295189b2012-06-20 16:38:30 -07006034 @see
6035 @return Result of the function call
6036*/
6037WDI_Status
6038WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006039(
Jeff Johnson295189b2012-06-20 16:38:30 -07006040 WDI_ControlBlockType* pWDICtx,
6041 WDI_EventInfoType* pEventData
6042)
6043{
Jeff Johnsone7245742012-09-05 17:12:55 -07006044 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006045 wpt_boolean expectedResponse;
6046
6047 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006048 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006049 ----------------------------------------------------------------------*/
6050 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6051 {
6052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006053 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 pWDICtx, pEventData);
6055 return WDI_STATUS_E_FAILURE;
6056 }
6057
6058 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6059 {
6060 /* we received an expected response */
6061 expectedResponse = eWLAN_PAL_TRUE;
6062
6063 /*We expect that we will transition to started after this processing*/
6064 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6065
6066 /* we are no longer expecting a response */
6067 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6068 }
6069 else
6070 {
6071 /* we received an indication or unexpected response */
6072 expectedResponse = eWLAN_PAL_FALSE;
6073 /* for indications no need to update state from what it is right
6074 now, unless it explicitly does it in the indication handler (say
6075 for device failure ind) */
6076 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6077 }
6078
6079 /*Process the response and indication */
6080 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6081
6082 /*Lock the CB as we are about to do a state transition*/
6083 wpalMutexAcquire(&pWDICtx->wptMutex);
6084
6085 /*Transition to the expected state after the response processing
6086 - this should always be started state with the following exceptions:
6087 1. processing of a failed start response
6088 2. device failure detected while processing response
6089 3. stop response received*/
6090 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006091
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 /*Dequeue request that may have been queued while we were waiting for the
6093 response */
6094 if ( expectedResponse )
6095 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006096 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 }
6098
6099 wpalMutexRelease(&pWDICtx->wptMutex);
6100
6101 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006102 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006103
6104}/*WDI_MainRsp*/
6105
6106/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006107 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006108--------------------------------------------------------------------------*/
6109/**
6110 @brief Main FSM Stop function for state STOPPED
6111
Jeff Johnsone7245742012-09-05 17:12:55 -07006112
6113 @param pWDICtx: pointer to the WLAN DAL context
6114 pEventData: pointer to the event information structure
6115
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 @see
6117 @return Result of the function call
6118*/
6119WDI_Status
6120WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006121(
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 WDI_ControlBlockType* pWDICtx,
6123 WDI_EventInfoType* pEventData
6124)
6125{
6126 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006128 ----------------------------------------------------------------------*/
6129 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6130 {
6131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006132 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006133 pWDICtx, pEventData);
6134 return WDI_STATUS_E_FAILURE;
6135 }
6136
6137 /*We should normally not get a STOP request if we are already stopped
6138 since we should normally be stopped by the UMAC. However in some
6139 error situations we put ourselves in the stopped state without the
6140 UMAC knowing, so when we get a STOP request in this state we still
6141 process it since we need to clean up the underlying state */
6142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6143 "Processing stop request while stopped in FSM");
6144
6145 /*Return Success*/
6146 return WDI_ProcessRequest( pWDICtx, pEventData );
6147
6148}/*WDI_MainStopStopped*/
6149
6150/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006151 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006152--------------------------------------------------------------------------*/
6153/**
6154 @brief Main FSM Start function for state BUSY
6155
Jeff Johnsone7245742012-09-05 17:12:55 -07006156
6157 @param pWDICtx: pointer to the WLAN DAL context
6158 pEventData: pointer to the event information structure
6159
Jeff Johnson295189b2012-06-20 16:38:30 -07006160 @see
6161 @return Result of the function call
6162*/
6163WDI_Status
6164WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006165(
Jeff Johnson295189b2012-06-20 16:38:30 -07006166 WDI_ControlBlockType* pWDICtx,
6167 WDI_EventInfoType* pEventData
6168)
6169{
6170 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006171 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006172 ----------------------------------------------------------------------*/
6173 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6174 {
6175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006177 pWDICtx, pEventData);
6178 return WDI_STATUS_E_FAILURE;
6179 }
6180
6181 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006182 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 ----------------------------------------------------------------------*/
6184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6185 "WDI Busy state - queue start request");
6186
6187 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006188 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006189
6190 /*Return Success*/
6191 return WDI_STATUS_PENDING;
6192}/*WDI_MainStartBusy*/
6193
6194/**
6195 @brief Main FSM Stop function for state BUSY
6196
Jeff Johnsone7245742012-09-05 17:12:55 -07006197
6198 @param pWDICtx: pointer to the WLAN DAL context
6199 pEventData: pointer to the event information structure
6200
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 @see
6202 @return Result of the function call
6203*/
6204WDI_Status
6205WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006206(
Jeff Johnson295189b2012-06-20 16:38:30 -07006207 WDI_ControlBlockType* pWDICtx,
6208 WDI_EventInfoType* pEventData
6209)
6210{
6211 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006212 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006213 ----------------------------------------------------------------------*/
6214 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6215 {
6216 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006217 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 pWDICtx, pEventData);
6219 return WDI_STATUS_E_FAILURE;
6220 }
6221
6222 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006223 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006224 ----------------------------------------------------------------------*/
6225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6226 "WDI Busy state - queue stop request");
6227
Jeff Johnsone7245742012-09-05 17:12:55 -07006228 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006229 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006230
Jeff Johnson295189b2012-06-20 16:38:30 -07006231}/*WDI_MainStopBusy*/
6232
6233/**
6234 @brief Main FSM Request function for state BUSY
6235
Jeff Johnsone7245742012-09-05 17:12:55 -07006236
6237 @param pWDICtx: pointer to the WLAN DAL context
6238 pEventData: pointer to the event information structure
6239
Jeff Johnson295189b2012-06-20 16:38:30 -07006240 @see
6241 @return Result of the function call
6242*/
6243WDI_Status
6244WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006245(
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 WDI_ControlBlockType* pWDICtx,
6247 WDI_EventInfoType* pEventData
6248)
6249{
6250 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006251 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006252 ----------------------------------------------------------------------*/
6253 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6254 {
6255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006256 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006257 pWDICtx, pEventData);
6258 return WDI_STATUS_E_FAILURE;
6259 }
6260
6261 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006262 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 ----------------------------------------------------------------------*/
6264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6265 "WDI Busy state - queue request %d because waiting for response %d",
6266 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6267
Jeff Johnsone7245742012-09-05 17:12:55 -07006268 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006269 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006270
Jeff Johnson295189b2012-06-20 16:38:30 -07006271}/*WDI_MainReqBusy*/
6272/**
6273 @brief Main FSM Close function for state BUSY
6274
Jeff Johnsone7245742012-09-05 17:12:55 -07006275
6276 @param pWDICtx: pointer to the WLAN DAL context
6277 pEventData: pointer to the event information structure
6278
Jeff Johnson295189b2012-06-20 16:38:30 -07006279 @see
6280 @return Result of the function call
6281*/
6282WDI_Status
6283WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006284(
Jeff Johnson295189b2012-06-20 16:38:30 -07006285 WDI_ControlBlockType* pWDICtx,
6286 WDI_EventInfoType* pEventData
6287)
6288{
6289 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006290 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006291 ----------------------------------------------------------------------*/
6292 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6293 {
6294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006295 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006296 pWDICtx, pEventData);
6297 return WDI_STATUS_E_FAILURE;
6298 }
6299
6300 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006301 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006302 ----------------------------------------------------------------------*/
6303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6304 "WDI Busy state - queue close request");
6305
Jeff Johnsone7245742012-09-05 17:12:55 -07006306 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006308
Jeff Johnson295189b2012-06-20 16:38:30 -07006309}/*WDI_MainCloseBusy*/
6310
6311/**
6312 @brief Main FSM Shutdown function for INIT & STARTED states
6313
6314
6315 @param pWDICtx: pointer to the WLAN DAL context
6316 pEventData: pointer to the event information structure
6317
6318 @see
6319 @return Result of the function call
6320*/
6321WDI_Status
6322WDI_MainShutdown
6323(
6324 WDI_ControlBlockType* pWDICtx,
6325 WDI_EventInfoType* pEventData
6326)
6327{
6328 /*--------------------------------------------------------------------
6329 Sanity Check
6330 ----------------------------------------------------------------------*/
6331 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6332 {
6333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6334 "Invalid parameters on Main Start %x %x",
6335 pWDICtx, pEventData);
6336 return WDI_STATUS_E_FAILURE;
6337 }
6338
6339 /*State at this point is BUSY - because we enter this state before posting
6340 an event to the FSM in order to prevent potential race conditions*/
6341
6342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6343 "Processing shutdown request in FSM");
6344
6345 /*Return Success*/
6346 return WDI_ProcessRequest( pWDICtx, pEventData );
6347
6348}/*WDI_MainShutdown*/
6349
6350/**
6351 @brief Main FSM Shutdown function for BUSY state
6352
6353
6354 @param pWDICtx: pointer to the WLAN DAL context
6355 pEventData: pointer to the event information structure
6356
6357 @see
6358 @return Result of the function call
6359*/
6360WDI_Status
6361WDI_MainShutdownBusy
6362(
6363 WDI_ControlBlockType* pWDICtx,
6364 WDI_EventInfoType* pEventData
6365)
6366{
6367 /*--------------------------------------------------------------------
6368 Sanity Check
6369 ----------------------------------------------------------------------*/
6370 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6371 {
6372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6373 "Invalid parameters on Main Start %x %x",
6374 pWDICtx, pEventData);
6375 return WDI_STATUS_E_FAILURE;
6376 }
6377
6378 /* If you are waiting for a HAL response at this stage, you are not
6379 * going to get it. Riva is already shutdown/crashed.
6380 */
6381 wpalTimerStop(&gWDICb.wptResponseTimer);
6382
6383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6384 "Processing shutdown request in FSM: Busy state ");
6385
6386 return WDI_ProcessRequest( pWDICtx, pEventData );
6387
6388}/*WDI_MainShutdownBusy*/
6389
6390
Jeff Johnsone7245742012-09-05 17:12:55 -07006391/*=======================================================================
6392
Jeff Johnson295189b2012-06-20 16:38:30 -07006393 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006394
Jeff Johnson295189b2012-06-20 16:38:30 -07006395*=======================================================================*/
6396
6397/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006398 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006399========================================================================*/
6400/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006401 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006402 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
6404 @param pWDICtx: pointer to the WLAN DAL context
6405 pEventData: pointer to the event information structure
6406
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 @see
6408 @return Result of the function call
6409*/
6410WDI_Status
6411WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006412(
Jeff Johnson295189b2012-06-20 16:38:30 -07006413 WDI_ControlBlockType* pWDICtx,
6414 WDI_EventInfoType* pEventData
6415)
6416{
6417 WDI_StartReqParamsType* pwdiStartParams = NULL;
6418 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006419 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 wpt_uint16 usDataOffset = 0;
6421 wpt_uint16 usSendSize = 0;
6422
Jeff Johnsone7245742012-09-05 17:12:55 -07006423 tHalMacStartReqMsg halStartReq;
6424 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6426
6427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006429 -------------------------------------------------------------------------*/
6430 if (( NULL == pEventData ) ||
6431 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6432 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6433 {
6434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006438 }
6439
6440 /*-----------------------------------------------------------------------
6441 Get message buffer
6442 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006443 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006444 pwdiStartParams->usConfigBufferLen;
6445
Jeff Johnsone7245742012-09-05 17:12:55 -07006446 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006447 usLen,
6448 &pSendBuffer, &usDataOffset, &usSendSize))||
6449 ( usSendSize < (usDataOffset + usLen )))
6450 {
6451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6452 "Unable to get send buffer in start req %x %x %x",
6453 pEventData, pwdiStartParams, wdiStartRspCb);
6454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006456 }
6457
6458 /*-----------------------------------------------------------------------
6459 Fill in the message
6460 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006461 halStartReq.startReqParams.driverType =
6462 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006463
Jeff Johnsone7245742012-09-05 17:12:55 -07006464 halStartReq.startReqParams.uConfigBufferLen =
6465 pwdiStartParams->usConfigBufferLen;
6466 wpalMemoryCopy( pSendBuffer+usDataOffset,
6467 &halStartReq.startReqParams,
6468 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006469
Jeff Johnsone7245742012-09-05 17:12:55 -07006470 usDataOffset += sizeof(halStartReq.startReqParams);
6471 wpalMemoryCopy( pSendBuffer+usDataOffset,
6472 pwdiStartParams->pConfigBuffer,
6473 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006474
6475 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006476 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006477
6478 /*Save Low Level Ind CB and associated user data - it will be used further
6479 on when an indication is coming from the lower MAC*/
6480 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006481 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006482
Jeff Johnsone7245742012-09-05 17:12:55 -07006483 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006485 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006486 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006487 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6489
Jeff Johnsone7245742012-09-05 17:12:55 -07006490
Jeff Johnson295189b2012-06-20 16:38:30 -07006491}/*WDI_ProcessStartReq*/
6492
6493/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006494 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006495 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006496
6497 @param pWDICtx: pointer to the WLAN DAL context
6498 pEventData: pointer to the event information structure
6499
Jeff Johnson295189b2012-06-20 16:38:30 -07006500 @see
6501 @return Result of the function call
6502*/
6503WDI_Status
6504WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006505(
Jeff Johnson295189b2012-06-20 16:38:30 -07006506 WDI_ControlBlockType* pWDICtx,
6507 WDI_EventInfoType* pEventData
6508)
6509{
6510 WDI_StopReqParamsType* pwdiStopParams = NULL;
6511 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006512 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006513 wpt_uint16 usDataOffset = 0;
6514 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006515 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006516 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6518
6519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006521 -------------------------------------------------------------------------*/
6522 if (( NULL == pEventData ) ||
6523 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6524 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6525 {
6526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006530 }
6531
6532 /*-----------------------------------------------------------------------
6533 Get message buffer
6534 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006535 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006536 sizeof(halStopReq.stopReqParams),
6537 &pSendBuffer, &usDataOffset, &usSendSize))||
6538 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6539 {
6540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6541 "Unable to get send buffer in stop req %x %x %x",
6542 pEventData, pwdiStopParams, wdiStopRspCb);
6543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006545 }
6546
6547 /*-----------------------------------------------------------------------
6548 Fill in the message
6549 -----------------------------------------------------------------------*/
6550 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6551 pwdiStopParams->wdiStopReason);
6552
Jeff Johnsone7245742012-09-05 17:12:55 -07006553 wpalMemoryCopy( pSendBuffer+usDataOffset,
6554 &halStopReq.stopReqParams,
6555 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006556
6557 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006558 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006559
6560 /*! TO DO: stop the data services */
6561 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6562 {
6563 /*Stop the STA Table !UT- check this logic again
6564 It is safer to do it here than on the response - because a stop is imminent*/
6565 WDI_STATableStop(pWDICtx);
6566
6567 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006568 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6569 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 {
6571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6572 "WDI Init failed to reset power state event");
6573
Jeff Johnsone7245742012-09-05 17:12:55 -07006574 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006575 return VOS_STATUS_E_FAILURE;
6576 }
6577 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006578 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6579 if( eWLAN_PAL_STATUS_SUCCESS != status )
6580 {
6581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6582 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6583 WDI_ASSERT(0);
6584 return WDI_STATUS_E_FAILURE;
6585 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006587 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006588 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006589 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6590 WDI_SET_POWER_STATE_TIMEOUT);
6591 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006592 {
6593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6594 "WDI Init failed to wait on an event");
6595
Jeff Johnsone7245742012-09-05 17:12:55 -07006596 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006597 return VOS_STATUS_E_FAILURE;
6598 }
6599 }
6600
6601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006602 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006603 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006604 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006605 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6606
6607}/*WDI_ProcessStopReq*/
6608
6609/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006610 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006612
6613 @param pWDICtx: pointer to the WLAN DAL context
6614 pEventData: pointer to the event information structure
6615
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 @see
6617 @return Result of the function call
6618*/
6619WDI_Status
6620WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006621(
Jeff Johnson295189b2012-06-20 16:38:30 -07006622 WDI_ControlBlockType* pWDICtx,
6623 WDI_EventInfoType* pEventData
6624)
6625{
Jeff Johnsone7245742012-09-05 17:12:55 -07006626 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6628
6629 /*Lock control block for cleanup*/
6630 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006631
Jeff Johnson295189b2012-06-20 16:38:30 -07006632 /*Clear all pending request*/
6633 WDI_ClearPendingRequests(pWDICtx);
6634
6635 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006636 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006637
6638 /* Close Data transport*/
6639 /* FTM mode does not open Data Path */
6640 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6641 {
6642 WDTS_Close(pWDICtx);
6643 }
6644
6645 /*Close the STA Table !UT- check this logic again*/
6646 WDI_STATableClose(pWDICtx);
6647
6648 /*close the PAL */
6649 wptStatus = wpalClose(pWDICtx->pPALContext);
6650 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6651 {
6652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6653 "Failed to wpal Close %d", wptStatus);
6654 WDI_ASSERT(0);
6655 }
6656
6657 /*Transition back to init state*/
6658 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6659
6660 wpalMutexRelease(&pWDICtx->wptMutex);
6661
6662 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006663 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006664
Jeff Johnsone7245742012-09-05 17:12:55 -07006665 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006666}/*WDI_ProcessCloseReq*/
6667
6668
6669/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006670 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006671===========================================================================*/
6672
6673/**
6674 @brief Process Init Scan Request function (called when Main FSM
6675 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006676
6677 @param pWDICtx: pointer to the WLAN DAL context
6678 pEventData: pointer to the event information structure
6679
Jeff Johnson295189b2012-06-20 16:38:30 -07006680 @see
6681 @return Result of the function call
6682*/
6683WDI_Status
6684WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006685(
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 WDI_ControlBlockType* pWDICtx,
6687 WDI_EventInfoType* pEventData
6688)
6689{
6690 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6691 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006692 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006693 wpt_uint16 usDataOffset = 0;
6694 wpt_uint16 usSendSize = 0;
6695 wpt_uint8 i = 0;
6696
6697 tHalInitScanReqMsg halInitScanReqMsg;
6698
Jeff Johnsone7245742012-09-05 17:12:55 -07006699 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006700 * It shold be removed once host and riva changes are in sync*/
6701 tHalInitScanConReqMsg halInitScanConReqMsg;
6702
6703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6704
6705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006706 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006707 -------------------------------------------------------------------------*/
6708 if (( NULL == pEventData ) ||
6709 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6710 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6711 {
6712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006713 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006716 }
6717
6718#if 0
6719 wpalMutexAcquire(&pWDICtx->wptMutex);
6720 /*-----------------------------------------------------------------------
6721 Check to see if SCAN is already in progress - if so reject the req
6722 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006723 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006724 -----------------------------------------------------------------------*/
6725 if ( pWDICtx->bScanInProgress )
6726 {
6727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6728 "Scan is already in progress - subsequent scan is not allowed"
6729 " until the first scan completes");
6730
6731 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006732 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006733 }
6734
Jeff Johnsone7245742012-09-05 17:12:55 -07006735 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6736 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006737
6738 wpalMutexRelease(&pWDICtx->wptMutex);
6739#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08006740 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006741 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006742 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 * It shold be removed once host and riva changes are in sync*/
6744 /*-----------------------------------------------------------------------
6745 Get message buffer
6746 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006747 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006748 sizeof(halInitScanConReqMsg.initScanParams),
6749 &pSendBuffer, &usDataOffset, &usSendSize))||
6750 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6751 {
6752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6753 "Unable to get send buffer in init scan req %x %x %x",
6754 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006757 }
6758
6759
6760 /*-----------------------------------------------------------------------
6761 Fill in the message
6762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006763 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006764 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6765
6766 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6767 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6768
Jeff Johnsone7245742012-09-05 17:12:55 -07006769 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006770 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006771 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006772 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006773 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006774 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6775
6776 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6777 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6778
6779#ifdef WLAN_FEATURE_P2P
6780 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6781 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
6782#endif
6783
Jeff Johnsone7245742012-09-05 17:12:55 -07006784 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006785 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6786
6787 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6788 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006789 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006790 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6791 }
6792
Jeff Johnsone7245742012-09-05 17:12:55 -07006793 wpalMemoryCopy( pSendBuffer+usDataOffset,
6794 &halInitScanConReqMsg.initScanParams,
6795 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006796 }
6797 else
6798 {
6799 /*-----------------------------------------------------------------------
6800 Get message buffer
6801 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 sizeof(halInitScanReqMsg.initScanParams),
6804 &pSendBuffer, &usDataOffset, &usSendSize))||
6805 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6806 {
6807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6808 "Unable to get send buffer in init scan req %x %x %x",
6809 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006812 }
6813
6814
6815 /*-----------------------------------------------------------------------
6816 Fill in the message
6817 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006818 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006819 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6820
6821 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6822 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6823
Jeff Johnsone7245742012-09-05 17:12:55 -07006824 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006826 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006827 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006828 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006829 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6830
6831 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6832 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6833
Jeff Johnsone7245742012-09-05 17:12:55 -07006834 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6836
6837 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6838 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006840 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6841 }
6842
Jeff Johnsone7245742012-09-05 17:12:55 -07006843 wpalMemoryCopy( pSendBuffer+usDataOffset,
6844 &halInitScanReqMsg.initScanParams,
6845 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006846 }
6847
6848 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006849 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006850
6851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006853 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006854 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006855 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6856
6857}/*WDI_ProcessInitScanReq*/
6858
6859/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006860 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006862
6863 @param pWDICtx: pointer to the WLAN DAL context
6864 pEventData: pointer to the event information structure
6865
Jeff Johnson295189b2012-06-20 16:38:30 -07006866 @see
6867 @return Result of the function call
6868*/
6869WDI_Status
6870WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006871(
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 WDI_ControlBlockType* pWDICtx,
6873 WDI_EventInfoType* pEventData
6874)
6875{
6876 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6877 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 wpt_uint16 usDataOffset = 0;
6880 wpt_uint16 usSendSize = 0;
6881
Jeff Johnsone7245742012-09-05 17:12:55 -07006882 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6884
6885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006887 -------------------------------------------------------------------------*/
6888 if (( NULL == pEventData ) ||
6889 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6890 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6891 {
6892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 }
6897
6898#if 0
6899 wpalMutexAcquire(&pWDICtx->wptMutex);
6900 /*-----------------------------------------------------------------------
6901 Check to see if SCAN is already in progress - start scan is only
6902 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07006903 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006905 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006906 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
6907 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
6908 {
6909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6910 "Scan start not allowed in this state %d %d",
6911 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006912
Jeff Johnson295189b2012-06-20 16:38:30 -07006913 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006914 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006915 }
6916
Jeff Johnsone7245742012-09-05 17:12:55 -07006917 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006918
6919 wpalMutexRelease(&pWDICtx->wptMutex);
6920#endif
6921
6922 /*-----------------------------------------------------------------------
6923 Get message buffer
6924 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006925 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006926 sizeof(halStartScanReqMsg.startScanParams),
6927 &pSendBuffer, &usDataOffset, &usSendSize))||
6928 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
6929 {
6930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6931 "Unable to get send buffer in start scan req %x %x %x",
6932 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
6933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006935 }
6936
Jeff Johnsone7245742012-09-05 17:12:55 -07006937 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07006938 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07006939 wpalMemoryCopy( pSendBuffer+usDataOffset,
6940 &halStartScanReqMsg.startScanParams,
6941 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006942
6943 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006944 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006945
6946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006947 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006948 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006949 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006950 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
6951}/*WDI_ProcessStartScanReq*/
6952
6953
6954/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006955 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006957
6958 @param pWDICtx: pointer to the WLAN DAL context
6959 pEventData: pointer to the event information structure
6960
Jeff Johnson295189b2012-06-20 16:38:30 -07006961 @see
6962 @return Result of the function call
6963*/
6964WDI_Status
6965WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006966(
Jeff Johnson295189b2012-06-20 16:38:30 -07006967 WDI_ControlBlockType* pWDICtx,
6968 WDI_EventInfoType* pEventData
6969)
6970{
6971 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
6972 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006973 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006974 wpt_uint16 usDataOffset = 0;
6975 wpt_uint16 usSendSize = 0;
6976
Jeff Johnsone7245742012-09-05 17:12:55 -07006977 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6979
6980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 -------------------------------------------------------------------------*/
6983 if (( NULL == pEventData ) ||
6984 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
6985 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
6986 {
6987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006988 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 }
6992
Jeff Johnsone7245742012-09-05 17:12:55 -07006993 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
6994 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07006995 * forwarded to HAL and result in hang*/
6996#if 0
6997 wpalMutexAcquire(&pWDICtx->wptMutex);
6998 /*-----------------------------------------------------------------------
6999 Check to see if SCAN is already in progress - end scan is only
7000 allowed when a scan is ongoing and the state of the scan procedure
7001 is started
7002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007003 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7005 {
7006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7007 "End start not allowed in this state %d %d",
7008 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007009
Jeff Johnson295189b2012-06-20 16:38:30 -07007010 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007011 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 }
7013
Jeff Johnsone7245742012-09-05 17:12:55 -07007014 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007015
7016 wpalMutexRelease(&pWDICtx->wptMutex);
7017#endif
7018
7019 /*-----------------------------------------------------------------------
7020 Get message buffer
7021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 sizeof(halEndScanReqMsg.endScanParams),
7024 &pSendBuffer, &usDataOffset, &usSendSize))||
7025 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7026 {
7027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7028 "Unable to get send buffer in start scan req %x %x %x",
7029 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 }
7033
7034 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7035
Jeff Johnsone7245742012-09-05 17:12:55 -07007036 wpalMemoryCopy( pSendBuffer+usDataOffset,
7037 &halEndScanReqMsg.endScanParams,
7038 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007039
7040 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007041 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007042
7043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007044 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7048}/*WDI_ProcessEndScanReq*/
7049
7050
7051/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007054
7055 @param pWDICtx: pointer to the WLAN DAL context
7056 pEventData: pointer to the event information structure
7057
Jeff Johnson295189b2012-06-20 16:38:30 -07007058 @see
7059 @return Result of the function call
7060*/
7061WDI_Status
7062WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007063(
Jeff Johnson295189b2012-06-20 16:38:30 -07007064 WDI_ControlBlockType* pWDICtx,
7065 WDI_EventInfoType* pEventData
7066)
7067{
7068 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7069 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007070 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007071 wpt_uint16 usDataOffset = 0;
7072 wpt_uint16 usSendSize = 0;
7073 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007074 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007075 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7077
7078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007080 -------------------------------------------------------------------------*/
7081 if (( NULL == pEventData ) ||
7082 ( NULL == pEventData->pEventData) ||
7083 ( NULL == pEventData->pCBfnc))
7084 {
7085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 }
7090
7091 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7092 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7094 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007095 * forwarded to HAL and result in hang*/
7096#if 0
7097 wpalMutexAcquire(&pWDICtx->wptMutex);
7098 /*-----------------------------------------------------------------------
7099 Check to see if SCAN is already in progress
7100 Finish scan gets invoked any scan states. ie. abort scan
7101 It should be allowed in any states.
7102 -----------------------------------------------------------------------*/
7103 if ( !pWDICtx->bScanInProgress )
7104 {
7105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7106 "Finish start not allowed in this state %d",
7107 pWDICtx->bScanInProgress );
7108
7109 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007111 }
7112
7113 /*-----------------------------------------------------------------------
7114 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007115 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007116 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007117 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7118 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007119 wpalMutexRelease(&pWDICtx->wptMutex);
7120#endif
7121
7122 if ( pWDICtx->bInBmps )
7123 {
7124 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007125 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7126 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7127 {
7128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7129 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7130 WDI_ASSERT(0);
7131 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007132 }
7133
7134 /*-----------------------------------------------------------------------
7135 Get message buffer
7136 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007137 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007138 sizeof(halFinishScanReqMsg.finishScanParams),
7139 &pSendBuffer, &usDataOffset, &usSendSize))||
7140 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7141 {
7142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7143 "Unable to get send buffer in start scan req %x %x %x",
7144 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7145 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007147 }
7148
Jeff Johnsone7245742012-09-05 17:12:55 -07007149 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007150 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7151
Jeff Johnsone7245742012-09-05 17:12:55 -07007152 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007153 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7154
Jeff Johnsone7245742012-09-05 17:12:55 -07007155 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007156 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7157
7158 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7159 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7160
Jeff Johnsone7245742012-09-05 17:12:55 -07007161 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007162 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007163 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007165 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7167
Jeff Johnsone7245742012-09-05 17:12:55 -07007168 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7170
7171 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7172 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007173 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7175 }
7176
7177 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7178 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7179
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 wpalMemoryCopy( pSendBuffer+usDataOffset,
7181 &halFinishScanReqMsg.finishScanParams,
7182 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007183
7184 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007186
7187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007188 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007189 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007190 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007191 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7192}/*WDI_ProcessFinishScanReq*/
7193
7194
7195/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007197==========================================================================*/
7198/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007199 @brief Process BSS Join for a given Session
7200
7201 @param pWDICtx: pointer to the WLAN DAL context
7202 pEventData: pointer to the event information structure
7203
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 @see
7205 @return Result of the function call
7206*/
7207WDI_Status
7208WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007209(
Jeff Johnson295189b2012-06-20 16:38:30 -07007210 WDI_ControlBlockType* pWDICtx,
7211 WDI_JoinReqParamsType* pwdiJoinParams,
7212 WDI_JoinRspCb wdiJoinRspCb,
7213 void* pUserData
7214)
7215{
7216 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007217 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 wpt_uint16 usDataOffset = 0;
7219 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007221
Jeff Johnsone7245742012-09-05 17:12:55 -07007222 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7224
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007225 wpalMutexAcquire(&pWDICtx->wptMutex);
7226
Jeff Johnson295189b2012-06-20 16:38:30 -07007227 /*------------------------------------------------------------------------
7228 Check to see if we have any session with this BSSID already stored, we
7229 should not
7230 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7232 pwdiJoinParams->wdiReqInfo.macBSSID,
7233 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007234
7235 if ( NULL != pBSSSes )
7236 {
7237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007238 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7239 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007240
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007241 /*reset the bAssociationInProgress otherwise the next
7242 *join request will be queued*/
7243 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7244 wpalMutexRelease(&pWDICtx->wptMutex);
7245 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007246 }
7247
Jeff Johnson295189b2012-06-20 16:38:30 -07007248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007251 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007252 if ( NULL == pBSSSes )
7253 {
7254
7255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7256 "DAL has no free sessions - cannot run another join");
7257
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007258 /*reset the bAssociationInProgress otherwise the next
7259 *join request will be queued*/
7260 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007262 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007263 }
7264
7265 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007266 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7267 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007268 WDI_MAC_ADDR_LEN);
7269
7270 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007271 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007272 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007273
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 wpalMutexRelease(&pWDICtx->wptMutex);
7275
7276 /*-----------------------------------------------------------------------
7277 Get message buffer
7278 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007280 sizeof(halJoinReqMsg.joinReqParams),
7281 &pSendBuffer, &usDataOffset, &usSendSize))||
7282 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7283 {
7284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7285 "Unable to get send buffer in join req %x %x %x",
7286 pUserData, pwdiJoinParams, wdiJoinRspCb);
7287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 }
7290
7291 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007292 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007293
7294 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007295 pwdiJoinParams->wdiReqInfo.macSTASelf,
7296 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007297
Jeff Johnsone7245742012-09-05 17:12:55 -07007298 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7300
7301 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7302
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007303#ifdef WLAN_FEATURE_VOWIFI
7304 halJoinReqMsg.joinReqParams.maxTxPower =
7305 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7306#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7309#endif
7310
Jeff Johnsone7245742012-09-05 17:12:55 -07007311 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007312 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7313 wdiSecondaryChannelOffset);
7314
Jeff Johnsone7245742012-09-05 17:12:55 -07007315 wpalMemoryCopy( pSendBuffer+usDataOffset,
7316 &halJoinReqMsg.joinReqParams,
7317 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007318
7319 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007320 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007321
7322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7326 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007327
7328}/*WDI_ProcessBSSSessionJoinReq*/
7329
7330/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007333
7334 @param pWDICtx: pointer to the WLAN DAL context
7335 pEventData: pointer to the event information structure
7336
Jeff Johnson295189b2012-06-20 16:38:30 -07007337 @see
7338 @return Result of the function call
7339*/
7340WDI_Status
7341WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007342(
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 WDI_ControlBlockType* pWDICtx,
7344 WDI_EventInfoType* pEventData
7345)
7346{
7347 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7348 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7349 WDI_JoinRspCb wdiJoinRspCb = NULL;
7350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7351
7352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007354 -------------------------------------------------------------------------*/
7355 if (( NULL == pEventData ) ||
7356 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7357 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7358 {
7359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007364
Jeff Johnson295189b2012-06-20 16:38:30 -07007365 /*-------------------------------------------------------------------------
7366 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 -------------------------------------------------------------------------*/
7369 wpalMutexAcquire(&pWDICtx->wptMutex);
7370
7371 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7372 {
7373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7374 "Association is currently in progress, queueing new join req");
7375
7376 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007377 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 pwdiJoinParams->wdiReqInfo.macBSSID);
7379
7380 wpalMutexRelease(&pWDICtx->wptMutex);
7381
Jeff Johnsone7245742012-09-05 17:12:55 -07007382 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 }
7384
7385 /*Starting a new association */
7386 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7387 wpalMutexRelease(&pWDICtx->wptMutex);
7388
7389 /*Process the Join Request*/
7390 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7391 wdiJoinRspCb,pEventData->pUserData);
7392
7393}/*WDI_ProcessJoinReq*/
7394
7395
7396/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007399
7400 @param pWDICtx: pointer to the WLAN DAL context
7401 pEventData: pointer to the event information structure
7402
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 @see
7404 @return Result of the function call
7405*/
7406WDI_Status
7407WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007408(
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 WDI_ControlBlockType* pWDICtx,
7410 WDI_EventInfoType* pEventData
7411)
7412{
7413 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7414 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007415 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 wpt_uint16 uMsgSize = 0;
7418 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007419 wpt_uint16 usDataOffset = 0;
7420 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007421 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007422
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7425
7426 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 -------------------------------------------------------------------------*/
7429 if (( NULL == pEventData ) ||
7430 ( NULL == pEventData->pEventData ) ||
7431 ( NULL == pEventData->pCBfnc ))
7432 {
7433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 }
7438
7439 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7440 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7441 /*-------------------------------------------------------------------------
7442 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 -------------------------------------------------------------------------*/
7445 wpalMutexAcquire(&pWDICtx->wptMutex);
7446
7447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007448 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007449 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7451 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7452 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007453
Jeff Johnsone7245742012-09-05 17:12:55 -07007454 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 {
7456#ifdef WLAN_FEATURE_VOWIFI_11R
7457 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 if ( NULL == pBSSSes )
7462 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007463
Jeff Johnson295189b2012-06-20 16:38:30 -07007464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7465 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007466
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007468 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007470
Jeff Johnson295189b2012-06-20 16:38:30 -07007471 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007472 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7473 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007475
Jeff Johnson295189b2012-06-20 16:38:30 -07007476 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7479#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 * Request in case of IBSS*/
7482 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7483 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7484 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7485 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7486 {
7487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007488 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007490 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 if ( NULL == pBSSSes )
7492 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007493
Jeff Johnson295189b2012-06-20 16:38:30 -07007494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7495 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007496
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007498 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007499 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007500
Jeff Johnson295189b2012-06-20 16:38:30 -07007501 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7503 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007504 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007505
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007507 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7509 }
7510 else
7511 {
7512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7514 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7515 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7516
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 /* for IBSS testing */
7518 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007519 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007520 }
7521#endif
7522 }
7523
7524 /*------------------------------------------------------------------------
7525 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007527 ------------------------------------------------------------------------*/
7528 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7529 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7531 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7532 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7533 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007534
Jeff Johnsone7245742012-09-05 17:12:55 -07007535 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007536
7537 wpalMutexRelease(&pWDICtx->wptMutex);
7538
Jeff Johnsone7245742012-09-05 17:12:55 -07007539 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007540 }
7541
7542 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007543 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7544 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007545 sizeof(pWDICtx->wdiCachedConfigBssReq));
7546
7547 wpalMutexRelease(&pWDICtx->wptMutex);
7548
Jeff Johnsone7245742012-09-05 17:12:55 -07007549 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7550#ifdef WLAN_FEATURE_11AC
7551 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007552 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 else
7554#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007555 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007556
7557 /*-----------------------------------------------------------------------
7558 Get message buffer
7559 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007560 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7562 ( usSendSize < (usDataOffset + uMsgSize )))
7563 {
7564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7565 "Unable to get send buffer in config bss req %x %x %x",
7566 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007569 }
7570
7571 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007572#ifdef WLAN_FEATURE_11AC
7573 if (WDI_getFwWlanFeatCaps(DOT11AC))
7574 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7575 &pwdiConfigBSSParams->wdiReqInfo);
7576 else
7577#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007578 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007579 &pwdiConfigBSSParams->wdiReqInfo);
7580
7581 /* Need to fill in the STA Index to invalid, since at this point we have not
7582 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007583 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007584
7585 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007586 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7587
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007588#ifdef WLAN_FEATURE_11AC
7589 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7590 wpalMemoryCopy( pSendBuffer+usDataOffset,
7591 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7592 uMsgSize);
7593 }else
7594#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 wpalMemoryCopy( pSendBuffer+usDataOffset,
7596 &halConfigBssReqMsg.uBssParams.configBssParams,
7597 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -07007598
7599 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007600 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007601
7602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7606 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007607 WDI_CONFIG_BSS_RESP);
7608
7609}/*WDI_ProcessConfigBSSReq*/
7610
7611
7612/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007615
7616 @param pWDICtx: pointer to the WLAN DAL context
7617 pEventData: pointer to the event information structure
7618
Jeff Johnson295189b2012-06-20 16:38:30 -07007619 @see
7620 @return Result of the function call
7621*/
7622WDI_Status
7623WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007624(
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 WDI_ControlBlockType* pWDICtx,
7626 WDI_EventInfoType* pEventData
7627)
7628{
7629 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7630 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 wpt_uint16 usDataOffset = 0;
7635 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007636 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007637
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7640
7641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007643 -------------------------------------------------------------------------*/
7644 if (( NULL == pEventData ) ||
7645 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7646 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7647 {
7648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007649 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007652 }
7653
7654 /*-------------------------------------------------------------------------
7655 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007656 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007657 -------------------------------------------------------------------------*/
7658 wpalMutexAcquire(&pWDICtx->wptMutex);
7659
7660 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007663 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7664 pwdiDelBSSParams->ucBssIdx,
7665 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007666
Jeff Johnsone7245742012-09-05 17:12:55 -07007667 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 {
7669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 "%s: BSS does not yet exist. ucBssIdx %d",
7671 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007672
7673 wpalMutexRelease(&pWDICtx->wptMutex);
7674
7675 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007676 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007677
7678 /*------------------------------------------------------------------------
7679 Check if this BSS is being currently processed or queued,
7680 if queued - queue the new request as well
7681 ------------------------------------------------------------------------*/
7682 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007683 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7685 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7686 __func__, pwdiDelBSSParams->ucBssIdx);
7687
7688 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7689
7690 wpalMutexRelease(&pWDICtx->wptMutex);
7691
7692 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007693 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007694
Jeff Johnson295189b2012-06-20 16:38:30 -07007695 /*-----------------------------------------------------------------------
7696 If we receive a Del BSS request for an association that is already in
7697 progress, it indicates that the assoc has failed => we no longer have
7698 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007699 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007700 -----------------------------------------------------------------------*/
7701 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7702 {
7703 /*We can switch to false here because even if a subsequent Join comes in
7704 it will only be processed when DAL transitions out of BUSY state which
7705 happens when the Del BSS request comes */
7706 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7707
7708 /*Former association is complete - prepare next pending assoc for
7709 processing */
7710 WDI_DequeueAssocRequest(pWDICtx);
7711 }
7712
7713 wpalMutexRelease(&pWDICtx->wptMutex);
7714 /*-----------------------------------------------------------------------
7715 Get message buffer
7716 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 sizeof(halBssReqMsg.deleteBssParams),
7719 &pSendBuffer, &usDataOffset, &usSendSize))||
7720 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7721 {
7722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7723 "Unable to get send buffer in start req %x %x %x",
7724 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 }
7728
7729 /*Fill in the message request structure*/
7730
7731 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007732 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007733
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 wpalMemoryCopy( pSendBuffer+usDataOffset,
7735 &halBssReqMsg.deleteBssParams,
7736 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007737
7738 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007740
Jeff Johnsone7245742012-09-05 17:12:55 -07007741
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7747
Jeff Johnsone7245742012-09-05 17:12:55 -07007748
Jeff Johnson295189b2012-06-20 16:38:30 -07007749}/*WDI_ProcessDelBSSReq*/
7750
7751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007754
7755 @param pWDICtx: pointer to the WLAN DAL context
7756 pEventData: pointer to the event information structure
7757
Jeff Johnson295189b2012-06-20 16:38:30 -07007758 @see
7759 @return Result of the function call
7760*/
7761WDI_Status
7762WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007763(
Jeff Johnson295189b2012-06-20 16:38:30 -07007764 WDI_ControlBlockType* pWDICtx,
7765 WDI_EventInfoType* pEventData
7766)
7767{
7768 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7769 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 wpt_uint16 usDataOffset = 0;
7774 wpt_uint16 usSendSize = 0;
7775 wpt_uint16 uMsgSize = 0;
7776 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007777 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007778
Jeff Johnsone7245742012-09-05 17:12:55 -07007779 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7781
7782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007784 -------------------------------------------------------------------------*/
7785 if (( NULL == pEventData ) ||
7786 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7787 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7788 {
7789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007793 }
7794
7795 /*-------------------------------------------------------------------------
7796 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007797 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007798 -------------------------------------------------------------------------*/
7799 wpalMutexAcquire(&pWDICtx->wptMutex);
7800
7801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7805 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7806 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007807
7808 if ( NULL == pBSSSes )
7809 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7811 "%s: Association sequence for this BSS does not yet exist - "
7812 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7813 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007814
7815 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007816 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007817 }
7818
7819 /*------------------------------------------------------------------------
7820 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 ------------------------------------------------------------------------*/
7823 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7824 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7826 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7827 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007828
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007830
7831 wpalMutexRelease(&pWDICtx->wptMutex);
7832
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 }
7835
7836 /*-----------------------------------------------------------------------
7837 If Post Assoc was not yet received - the current association must
7838 be in progress
7839 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7842 {
7843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7844 "Association sequence for this BSS association no longer in "
7845 "progress - not allowed");
7846
7847 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 }
7850
7851 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007852 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007853 -----------------------------------------------------------------------*/
7854 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7855 {
7856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7857 "Post Assoc not allowed before JOIN - failing request");
7858
7859 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 }
7862
7863 wpalMutexRelease(&pWDICtx->wptMutex);
7864
7865 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7866 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7867 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007868 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007870 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7872 ( usSendSize < (usDataOffset + uMsgSize )))
7873 {
7874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7875 "Unable to get send buffer in start req %x %x %x",
7876 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007879 }
7880
7881 /*Copy the STA parameters */
7882 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7883 &pwdiPostAssocParams->wdiSTAParams );
7884
7885 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 WDI_STATableFindStaidByAddr(pWDICtx,
7888 pwdiPostAssocParams->wdiSTAParams.macSTA,
7889 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
7890 {
7891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7892 "This station does not exist in the WDI Station Table %d");
7893 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007894 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007896 }
7897
7898 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007899 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 pBSSSes->ucBSSIdx;
7901
7902 /*Copy the BSS parameters */
7903 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7904 &pwdiPostAssocParams->wdiBSSParams);
7905
7906 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007908 WDI_STATableFindStaidByAddr(pWDICtx,
7909 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 {
7912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7913 "This station does not exist in the WDI Station Table %d");
7914 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 }
7917
7918 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007919 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007920 pBSSSes->ucBSSIdx;
7921
Jeff Johnsone7245742012-09-05 17:12:55 -07007922
7923 wpalMemoryCopy( pSendBuffer+usDataOffset,
7924 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
7925 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007926
7927 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
7928
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
7930 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7931 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007932
Jeff Johnsone7245742012-09-05 17:12:55 -07007933
Jeff Johnson295189b2012-06-20 16:38:30 -07007934 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007936
Jeff Johnsone7245742012-09-05 17:12:55 -07007937
7938 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07007941
7942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007944 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
7947
Jeff Johnsone7245742012-09-05 17:12:55 -07007948
Jeff Johnson295189b2012-06-20 16:38:30 -07007949}/*WDI_ProcessPostAssocReq*/
7950
7951/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007954
7955 @param pWDICtx: pointer to the WLAN DAL context
7956 pEventData: pointer to the event information structure
7957
Jeff Johnson295189b2012-06-20 16:38:30 -07007958 @see
7959 @return Result of the function call
7960*/
7961WDI_Status
7962WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007963(
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 WDI_ControlBlockType* pWDICtx,
7965 WDI_EventInfoType* pEventData
7966)
7967{
7968 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
7969 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007972 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 wpt_uint16 usDataOffset = 0;
7974 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007975 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07007976 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7977
Jeff Johnsone7245742012-09-05 17:12:55 -07007978 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7980
7981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 -------------------------------------------------------------------------*/
7984 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
7985 ( NULL == pEventData->pCBfnc ))
7986 {
7987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007988 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 }
7992
7993 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
7994 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
7995 /*-------------------------------------------------------------------------
7996 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 -------------------------------------------------------------------------*/
7999 wpalMutexAcquire(&pWDICtx->wptMutex);
8000
8001 /*------------------------------------------------------------------------
8002 Find the BSS for which the request is made and identify WDI session
8003 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8005 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 &macBSSID))
8007 {
8008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8009 "This station does not exist in the WDI Station Table %d");
8010 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008012 }
8013
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8015 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8018 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8019 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008020
8021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 }
8024
8025 /*------------------------------------------------------------------------
8026 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008027 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008028 ------------------------------------------------------------------------*/
8029 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8030 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8032 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8033 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008034
Jeff Johnsone7245742012-09-05 17:12:55 -07008035 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008036 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008037 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008038 }
8039
8040 wpalMutexRelease(&pWDICtx->wptMutex);
8041 /*-----------------------------------------------------------------------
8042 Get message buffer
8043 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008045 sizeof(halDelStaReqMsg.delStaParams),
8046 &pSendBuffer, &usDataOffset, &usSendSize))||
8047 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8048 {
8049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8050 "Unable to get send buffer in start req %x %x %x",
8051 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 }
8055
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8057 wpalMemoryCopy( pSendBuffer+usDataOffset,
8058 &halDelStaReqMsg.delStaParams,
8059 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008060
8061 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008063
8064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008067 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8069
8070}/*WDI_ProcessDelSTAReq*/
8071
8072
8073/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008074 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008075==========================================================================*/
8076/**
8077 @brief Process Set BSS Key Request function (called when Main FSM
8078 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008079
8080 @param pWDICtx: pointer to the WLAN DAL context
8081 pEventData: pointer to the event information structure
8082
Jeff Johnson295189b2012-06-20 16:38:30 -07008083 @see
8084 @return Result of the function call
8085*/
8086WDI_Status
8087WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008088(
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 WDI_ControlBlockType* pWDICtx,
8090 WDI_EventInfoType* pEventData
8091)
8092{
8093 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8094 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008095 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008096 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008097 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 wpt_uint16 usDataOffset = 0;
8099 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8102 wpt_uint8 keyIndex = 0;
8103
8104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8105
8106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 -------------------------------------------------------------------------*/
8109 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8110 ( NULL == pEventData->pCBfnc ))
8111 {
8112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008116 }
8117
8118 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8119 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8120 /*-------------------------------------------------------------------------
8121 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008122 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 -------------------------------------------------------------------------*/
8124 wpalMutexAcquire(&pWDICtx->wptMutex);
8125
8126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008127 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8130 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8131 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008132
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 {
8135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8137 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008138
8139 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008141 }
8142
8143 /*------------------------------------------------------------------------
8144 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 ------------------------------------------------------------------------*/
8147 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8148 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8150 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8151 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008152
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008155 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 }
8157
8158
8159 wpalMutexRelease(&pWDICtx->wptMutex);
8160 /*-----------------------------------------------------------------------
8161 Get message buffer
8162 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8165 &pSendBuffer, &usDataOffset, &usSendSize))||
8166 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8167 {
8168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8169 "Unable to get send buffer in set bss key req %x %x %x",
8170 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 }
8174
8175 /*-----------------------------------------------------------------------
8176 Copy the Key parameters into the HAL message
8177 -----------------------------------------------------------------------*/
8178
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008180
Jeff Johnsone7245742012-09-05 17:12:55 -07008181 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8183
Jeff Johnsone7245742012-09-05 17:12:55 -07008184 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8186
8187 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8188 keyIndex++)
8189 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008190 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8192 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8193 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8194 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8195 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8196 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008197 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008201 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008202 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8203 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008204 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 WDI_MAX_KEY_LENGTH);
8206 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008207
8208 wpalMemoryCopy( pSendBuffer+usDataOffset,
8209 &halSetBssKeyReqMsg.setBssKeyParams,
8210 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008211
8212 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008214
8215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008216 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008218 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8219 wdiSetBSSKeyRspCb, pEventData->pUserData,
8220 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008221
8222}/*WDI_ProcessSetBssKeyReq*/
8223
8224/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008227
8228 @param pWDICtx: pointer to the WLAN DAL context
8229 pEventData: pointer to the event information structure
8230
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 @see
8232 @return Result of the function call
8233*/
8234WDI_Status
8235WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008236(
Jeff Johnson295189b2012-06-20 16:38:30 -07008237 WDI_ControlBlockType* pWDICtx,
8238 WDI_EventInfoType* pEventData
8239)
8240{
8241 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8242 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 wpt_uint16 usDataOffset = 0;
8247 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008248 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8251
8252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008254 -------------------------------------------------------------------------*/
8255 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8256 ( NULL == pEventData->pCBfnc ))
8257 {
8258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 }
8263
8264 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8265 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8266 /*-------------------------------------------------------------------------
8267 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008268 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008269 -------------------------------------------------------------------------*/
8270 wpalMutexAcquire(&pWDICtx->wptMutex);
8271
8272 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008275 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8276 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8277 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008278
Jeff Johnsone7245742012-09-05 17:12:55 -07008279 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008280 {
8281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8283 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008284
8285 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008286 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008287 }
8288
8289 /*------------------------------------------------------------------------
8290 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 ------------------------------------------------------------------------*/
8293 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8294 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8296 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8297 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008298
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008301 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008302 }
8303
8304
8305 wpalMutexRelease(&pWDICtx->wptMutex);
8306
8307 /*-----------------------------------------------------------------------
8308 Get message buffer
8309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8312 &pSendBuffer, &usDataOffset, &usSendSize))||
8313 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8314 {
8315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8316 "Unable to get send buffer in set bss key req %x %x %x",
8317 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 }
8321 /*-----------------------------------------------------------------------
8322 Copy the Key parameters into the HAL message
8323 -----------------------------------------------------------------------*/
8324 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8325
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8328
8329 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8330
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8333
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 wpalMemoryCopy( pSendBuffer+usDataOffset,
8335 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8336 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008337
8338 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008340
8341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008345 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008346 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008347}/*WDI_ProcessRemoveBssKeyReq*/
8348
8349/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008350 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008351 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008352
8353 @param pWDICtx: pointer to the WLAN DAL context
8354 pEventData: pointer to the event information structure
8355
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 @see
8357 @return Result of the function call
8358*/
8359WDI_Status
8360WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008361(
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 WDI_ControlBlockType* pWDICtx,
8363 WDI_EventInfoType* pEventData
8364)
8365{
8366 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8367 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8368 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 wpt_uint16 usDataOffset = 0;
8371 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8376 wpt_uint8 keyIndex = 0;
8377
8378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8379
8380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 -------------------------------------------------------------------------*/
8383 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8384 ( NULL == pEventData->pCBfnc ))
8385 {
8386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 }
8391
8392 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8393 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8394 /*-------------------------------------------------------------------------
8395 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 -------------------------------------------------------------------------*/
8398 wpalMutexAcquire(&pWDICtx->wptMutex);
8399
8400 /*------------------------------------------------------------------------
8401 Find the BSS for which the request is made and identify WDI session
8402 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8404 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008405 &macBSSID))
8406 {
8407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8408 "This station does not exist in the WDI Station Table %d");
8409 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 }
8412
Jeff Johnsone7245742012-09-05 17:12:55 -07008413 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8414 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8417 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8418 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008419
8420 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008422 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008423
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 /*------------------------------------------------------------------------
8425 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 ------------------------------------------------------------------------*/
8428 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8429 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8431 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8432 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008433
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008437 }
8438
8439
8440 wpalMutexRelease(&pWDICtx->wptMutex);
8441 /*-----------------------------------------------------------------------
8442 Get message buffer
8443 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008445 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8446 &pSendBuffer, &usDataOffset, &usSendSize))||
8447 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8448 {
8449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8450 "Unable to get send buffer in set bss key req %x %x %x",
8451 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 }
8455 /*-----------------------------------------------------------------------
8456 Copy the STA Key parameters into the HAL message
8457 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8460
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8463
8464 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8465
8466 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8467
8468 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8469
8470#ifdef WLAN_SOFTAP_FEATURE
8471 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8472 keyIndex++)
8473 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008474 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8476 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8477 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8478 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8479 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8480 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008483 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8487 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 WDI_MAX_KEY_LENGTH);
8490 }
8491#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8494 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8495 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8496 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8497 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8498 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008500 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008501 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8505 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 WDI_MAX_KEY_LENGTH);
8508#endif
8509
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 wpalMemoryCopy( pSendBuffer+usDataOffset,
8511 &halSetStaKeyReqMsg.setStaKeyParams,
8512 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008513
8514 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008516
8517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008519 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008520 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8521 wdiSetSTAKeyRspCb, pEventData->pUserData,
8522 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008523
8524}/*WDI_ProcessSetSTAKeyReq*/
8525
8526/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008529
8530 @param pWDICtx: pointer to the WLAN DAL context
8531 pEventData: pointer to the event information structure
8532
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 @see
8534 @return Result of the function call
8535*/
8536WDI_Status
8537WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008538(
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 WDI_ControlBlockType* pWDICtx,
8540 WDI_EventInfoType* pEventData
8541)
8542{
8543 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8544 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8545 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008546 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008547 wpt_uint16 usDataOffset = 0;
8548 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 wpt_macAddr macBSSID;
8551 wpt_uint8 ucCurrentBSSSesIdx;
8552 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8554
8555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 -------------------------------------------------------------------------*/
8558 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8559 ( NULL == pEventData->pCBfnc ))
8560 {
8561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 }
8566
8567 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8568 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8569 /*-------------------------------------------------------------------------
8570 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008571 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 -------------------------------------------------------------------------*/
8573 wpalMutexAcquire(&pWDICtx->wptMutex);
8574
8575 /*------------------------------------------------------------------------
8576 Find the BSS for which the request is made and identify WDI session
8577 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008578 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8579 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 &macBSSID))
8581 {
8582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8583 "This station does not exist in the WDI Station Table %d");
8584 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 }
8587
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8589 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8592 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8593 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008594
8595 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008598
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 /*------------------------------------------------------------------------
8600 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008602 ------------------------------------------------------------------------*/
8603 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8604 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8606 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8607 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008608
Jeff Johnsone7245742012-09-05 17:12:55 -07008609 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008610 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 }
8613
8614
8615
8616 wpalMutexRelease(&pWDICtx->wptMutex);
8617 /*-----------------------------------------------------------------------
8618 Get message buffer
8619 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8622 &pSendBuffer, &usDataOffset, &usSendSize))||
8623 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8624 {
8625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8626 "Unable to get send buffer in set bss key req %x %x %x",
8627 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 }
8631
8632 /*-----------------------------------------------------------------------
8633 Copy the Key parameters into the HAL message
8634 -----------------------------------------------------------------------*/
8635
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8638
Jeff Johnsone7245742012-09-05 17:12:55 -07008639 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008640 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8641
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8644
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8647
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 wpalMemoryCopy( pSendBuffer+usDataOffset,
8649 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8650 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008651
8652 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008654
8655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008656 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008661
8662}/*WDI_ProcessRemoveSTAKeyReq*/
8663
8664/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008667
8668 @param pWDICtx: pointer to the WLAN DAL context
8669 pEventData: pointer to the event information structure
8670
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 @see
8672 @return Result of the function call
8673*/
8674WDI_Status
8675WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008676(
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 WDI_ControlBlockType* pWDICtx,
8678 WDI_EventInfoType* pEventData
8679)
8680{
8681 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8682 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8683 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 wpt_uint16 usDataOffset = 0;
8686 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008689 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008690 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8691 wpt_uint8 keyIndex = 0;
8692
8693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8694
8695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 -------------------------------------------------------------------------*/
8698 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8699 ( NULL == pEventData->pCBfnc ))
8700 {
8701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 }
8706
8707 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8708 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8709 /*-------------------------------------------------------------------------
8710 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 -------------------------------------------------------------------------*/
8713 wpalMutexAcquire(&pWDICtx->wptMutex);
8714
8715 /*------------------------------------------------------------------------
8716 Find the BSS for which the request is made and identify WDI session
8717 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008718 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8719 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 &macBSSID))
8721 {
8722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8723 "This station does not exist in the WDI Station Table %d");
8724 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 }
8727
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8729 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 {
8731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8733 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008734
8735 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008738
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 /*------------------------------------------------------------------------
8740 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 ------------------------------------------------------------------------*/
8743 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8744 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8746 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8747 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008748
Jeff Johnsone7245742012-09-05 17:12:55 -07008749 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 }
8753
8754
8755 wpalMutexRelease(&pWDICtx->wptMutex);
8756 /*-----------------------------------------------------------------------
8757 Get message buffer
8758 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008759 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8761 &pSendBuffer, &usDataOffset, &usSendSize))||
8762 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8763 {
8764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8765 "Unable to get send buffer in set bss key req %x %x %x",
8766 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 }
8770 /*-----------------------------------------------------------------------
8771 Copy the STA Key parameters into the HAL message
8772 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8775
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8778
8779 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8780
8781 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8782
8783 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8784
8785#ifdef WLAN_SOFTAP_FEATURE
8786 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8787 keyIndex++)
8788 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8791 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8792 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8793 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8794 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8795 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8802 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008803 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008804 WDI_MAX_KEY_LENGTH);
8805 }
8806#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8809 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8810 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8811 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8812 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8813 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008819 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8820 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008822 WDI_MAX_KEY_LENGTH);
8823#endif
8824
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 wpalMemoryCopy( pSendBuffer+usDataOffset,
8826 &halSetStaKeyReqMsg.setStaKeyParams,
8827 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008828
8829 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008831
8832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8836 wdiSetSTAKeyRspCb, pEventData->pUserData,
8837 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008838
8839}/*WDI_ProcessSetSTABcastKeyReq*/
8840
8841/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008844
8845 @param pWDICtx: pointer to the WLAN DAL context
8846 pEventData: pointer to the event information structure
8847
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 @see
8849 @return Result of the function call
8850*/
8851WDI_Status
8852WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008853(
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 WDI_ControlBlockType* pWDICtx,
8855 WDI_EventInfoType* pEventData
8856)
8857{
8858 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8859 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8860 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008861 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008862 wpt_uint16 usDataOffset = 0;
8863 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 wpt_macAddr macBSSID;
8866 wpt_uint8 ucCurrentBSSSesIdx;
8867 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8869
8870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008872 -------------------------------------------------------------------------*/
8873 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8874 ( NULL == pEventData->pCBfnc ))
8875 {
8876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 }
8881
8882 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8883 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8884 /*-------------------------------------------------------------------------
8885 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008886 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 -------------------------------------------------------------------------*/
8888 wpalMutexAcquire(&pWDICtx->wptMutex);
8889
8890 /*------------------------------------------------------------------------
8891 Find the BSS for which the request is made and identify WDI session
8892 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8894 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 &macBSSID))
8896 {
8897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8898 "This station does not exist in the WDI Station Table %d");
8899 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008901 }
8902
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8904 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008905 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8907 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8908 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008909
8910 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008913
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 /*------------------------------------------------------------------------
8915 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 ------------------------------------------------------------------------*/
8918 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8919 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8921 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8922 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008923
Jeff Johnsone7245742012-09-05 17:12:55 -07008924 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 }
8928
8929
8930
8931 wpalMutexRelease(&pWDICtx->wptMutex);
8932 /*-----------------------------------------------------------------------
8933 Get message buffer
8934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008936 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
8937 &pSendBuffer, &usDataOffset, &usSendSize))||
8938 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
8939 {
8940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8941 "Unable to get send buffer in set bss key req %x %x %x",
8942 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
8943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 }
8946
8947 /*-----------------------------------------------------------------------
8948 Copy the Key parameters into the HAL message
8949 -----------------------------------------------------------------------*/
8950
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008952 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
8953
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
8956
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
8959
Jeff Johnsone7245742012-09-05 17:12:55 -07008960 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008961 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
8962
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 wpalMemoryCopy( pSendBuffer+usDataOffset,
8964 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
8965 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008966
8967 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008969
8970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008976
8977}/*WDI_ProcessRemoveSTABcastKeyReq*/
8978
8979/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008981==========================================================================*/
8982/**
8983 @brief Process Add TSpec Request function (called when Main FSM
8984 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008985
8986 @param pWDICtx: pointer to the WLAN DAL context
8987 pEventData: pointer to the event information structure
8988
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 @see
8990 @return Result of the function call
8991*/
8992WDI_Status
8993WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008994(
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 WDI_ControlBlockType* pWDICtx,
8996 WDI_EventInfoType* pEventData
8997)
8998{
8999 WDI_AddTSReqParamsType* pwdiAddTSParams;
9000 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 wpt_uint16 usDataOffset = 0;
9005 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 wpt_macAddr macBSSID;
9008 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009009
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9011
9012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 -------------------------------------------------------------------------*/
9015 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9016 ( NULL == pEventData->pCBfnc ))
9017 {
9018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 }
9023
9024 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9025 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9026 /*-------------------------------------------------------------------------
9027 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 -------------------------------------------------------------------------*/
9030 wpalMutexAcquire(&pWDICtx->wptMutex);
9031
9032 /*------------------------------------------------------------------------
9033 Find the BSS for which the request is made and identify WDI session
9034 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9036 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 &macBSSID))
9038 {
9039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9040 "This station does not exist in the WDI Station Table %d");
9041 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 }
9044
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9046 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009047 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9049 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9050 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009051
9052 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009055
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 /*------------------------------------------------------------------------
9057 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009058 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 ------------------------------------------------------------------------*/
9060 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9061 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9063 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9064 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009065
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 }
9070
9071 wpalMutexRelease(&pWDICtx->wptMutex);
9072 /*-----------------------------------------------------------------------
9073 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009076 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9077 sizeof(halAddTsParams),
9078 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 &usSendSize))||
9080 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9081 {
9082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9083 "Unable to get send buffer in set bss key req %x %x %x",
9084 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 }
9088
9089 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9090 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9091
9092 //TSPEC IE
9093 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9094 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009102 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009104 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009106 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009107 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009108 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009113 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009123 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9125
9126 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009128 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009132 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009133 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9141
9142 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009145 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9147
Jeff Johnsone7245742012-09-05 17:12:55 -07009148 wpalMemoryCopy( pSendBuffer+usDataOffset,
9149 &halAddTsParams,
9150 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009151
9152 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009154
9155 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009161}/*WDI_ProcessAddTSpecReq*/
9162
9163
9164/**
9165 @brief Process Del TSpec Request function (called when Main FSM
9166 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009167
9168 @param pWDICtx: pointer to the WLAN DAL context
9169 pEventData: pointer to the event information structure
9170
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 @see
9172 @return Result of the function call
9173*/
9174WDI_Status
9175WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009176(
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 WDI_ControlBlockType* pWDICtx,
9178 WDI_EventInfoType* pEventData
9179)
9180{
9181 WDI_DelTSReqParamsType* pwdiDelTSParams;
9182 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009183 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 wpt_uint16 usDataOffset = 0;
9187 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9190
9191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 -------------------------------------------------------------------------*/
9194 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9195 ( NULL == pEventData->pCBfnc ))
9196 {
9197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 }
9202
9203 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9204 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9205
9206 /*-------------------------------------------------------------------------
9207 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 -------------------------------------------------------------------------*/
9210 wpalMutexAcquire(&pWDICtx->wptMutex);
9211
9212 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9216 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9217 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009218
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9222 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9223 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9224
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009227 }
9228
9229 /*------------------------------------------------------------------------
9230 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 ------------------------------------------------------------------------*/
9233 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9234 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9236 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9237 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009238
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 }
9243
9244
9245 wpalMutexRelease(&pWDICtx->wptMutex);
9246 /*-----------------------------------------------------------------------
9247 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9252 &pSendBuffer, &usDataOffset, &usSendSize))||
9253 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9254 {
9255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9256 "Unable to get send buffer in set bss key req %x %x %x",
9257 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 }
9261
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 wpalMemoryCopy( pSendBuffer+usDataOffset,
9263 &pwdiDelTSParams->wdiDelTSInfo,
9264 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009265
9266 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009268
9269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9273 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009274}/*WDI_ProcessDelTSpecReq*/
9275
9276/**
9277 @brief Process Update EDCA Params Request function (called when
9278 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009279
9280 @param pWDICtx: pointer to the WLAN DAL context
9281 pEventData: pointer to the event information structure
9282
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 @see
9284 @return Result of the function call
9285*/
9286WDI_Status
9287WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009288(
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 WDI_ControlBlockType* pWDICtx,
9290 WDI_EventInfoType* pEventData
9291)
9292{
9293 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9294 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009295 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009296 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009297 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009298 wpt_uint16 usDataOffset = 0;
9299 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9302
9303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 -------------------------------------------------------------------------*/
9306 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9307 ( NULL == pEventData->pCBfnc ))
9308 {
9309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 }
9314
9315 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9316 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9317 /*-------------------------------------------------------------------------
9318 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 -------------------------------------------------------------------------*/
9321 wpalMutexAcquire(&pWDICtx->wptMutex);
9322
9323 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9327 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9328 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009329
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 {
9332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9334 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009335
9336 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 }
9339
9340 /*------------------------------------------------------------------------
9341 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009343 ------------------------------------------------------------------------*/
9344 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9345 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9347 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9348 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009349
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009352 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 }
9354
9355
9356 wpalMutexRelease(&pWDICtx->wptMutex);
9357 /*-----------------------------------------------------------------------
9358 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9363 &pSendBuffer, &usDataOffset, &usSendSize))||
9364 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9365 {
9366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9367 "Unable to get send buffer in set bss key req %x %x %x",
9368 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 }
9372
Jeff Johnsone7245742012-09-05 17:12:55 -07009373 wpalMemoryCopy( pSendBuffer+usDataOffset,
9374 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9375 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009376
9377 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009378 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009379
9380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9384 wdiUpdateEDCARspCb, pEventData->pUserData,
9385 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009386}/*WDI_ProcessUpdateEDCAParamsReq*/
9387
9388/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009391
9392 @param pWDICtx: pointer to the WLAN DAL context
9393 pEventData: pointer to the event information structure
9394
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 @see
9396 @return Result of the function call
9397*/
9398WDI_Status
9399WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009400(
Jeff Johnson295189b2012-06-20 16:38:30 -07009401 WDI_ControlBlockType* pWDICtx,
9402 WDI_EventInfoType* pEventData
9403)
9404{
9405 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9406 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009409 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 wpt_uint16 usDataOffset = 0;
9411 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009412 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 wpt_macAddr macBSSID;
9414
9415 tAddBASessionReqMsg halAddBASessionReq;
9416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9417
9418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 -------------------------------------------------------------------------*/
9421 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9422 ( NULL == pEventData->pCBfnc ))
9423 {
9424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 }
9429
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9434 /*-------------------------------------------------------------------------
9435 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 -------------------------------------------------------------------------*/
9438 wpalMutexAcquire(&pWDICtx->wptMutex);
9439
9440 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009443 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9444 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 &macBSSID))
9446 {
9447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9448 "This station does not exist in the WDI Station Table %d");
9449 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 }
9452
9453
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009455
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9459 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9460 __func__, MAC_ADDR_ARRAY(macBSSID));
9461
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 }
9465
9466 /*------------------------------------------------------------------------
9467 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 ------------------------------------------------------------------------*/
9470 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9471 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9473 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9474 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009475
Jeff Johnsone7245742012-09-05 17:12:55 -07009476 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 }
9480
9481
9482 wpalMutexRelease(&pWDICtx->wptMutex);
9483 /*-----------------------------------------------------------------------
9484 Get message buffer
9485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9487 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 sizeof(halAddBASessionReq.addBASessionParams),
9489 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9492 {
9493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9494 "Unable to get send buffer in Add BA session req %x %x %x",
9495 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 }
9499
9500 halAddBASessionReq.addBASessionParams.staIdx =
9501 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9502 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9503 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9504 WDI_MAC_ADDR_LEN);
9505 halAddBASessionReq.addBASessionParams.baTID =
9506 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9507 halAddBASessionReq.addBASessionParams.baPolicy =
9508 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9509 halAddBASessionReq.addBASessionParams.baBufferSize =
9510 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9511 halAddBASessionReq.addBASessionParams.baTimeout =
9512 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9513 halAddBASessionReq.addBASessionParams.baSSN =
9514 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9515 halAddBASessionReq.addBASessionParams.baDirection =
9516 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9517
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 wpalMemoryCopy( pSendBuffer+usDataOffset,
9519 &halAddBASessionReq.addBASessionParams,
9520 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009521
9522 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009524
9525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009528 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9529 wdiAddBASessionRspCb, pEventData->pUserData,
9530 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009531}/*WDI_ProcessAddBASessionReq*/
9532
9533/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009535 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009536
9537 @param pWDICtx: pointer to the WLAN DAL context
9538 pEventData: pointer to the event information structure
9539
Jeff Johnson295189b2012-06-20 16:38:30 -07009540 @see
9541 @return Result of the function call
9542*/
9543WDI_Status
9544WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009545(
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 WDI_ControlBlockType* pWDICtx,
9547 WDI_EventInfoType* pEventData
9548)
9549{
9550 WDI_DelBAReqParamsType* pwdiDelBAParams;
9551 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009554 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 wpt_uint16 usDataOffset = 0;
9556 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 wpt_macAddr macBSSID;
9559 tDelBAParams halDelBAparam;
9560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9561
9562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 -------------------------------------------------------------------------*/
9565 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9566 ( NULL == pEventData->pCBfnc ))
9567 {
9568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 }
9573
9574 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9575 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9576 /*-------------------------------------------------------------------------
9577 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 -------------------------------------------------------------------------*/
9580 wpalMutexAcquire(&pWDICtx->wptMutex);
9581
9582 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9586 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 &macBSSID))
9588 {
9589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9590 "This station does not exist in the WDI Station Table %d");
9591 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 }
9594
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009596
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9600 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9601 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009602
9603 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 }
9606
9607 /*------------------------------------------------------------------------
9608 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 ------------------------------------------------------------------------*/
9611 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9612 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9614 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9615 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009616
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 }
9621
9622 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 sizeof(halDelBAparam),
9625 &pSendBuffer, &usDataOffset, &usSendSize))||
9626 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9627 {
9628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9629 "Unable to get send buffer for DEL BA req %x %x %x",
9630 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 }
9634
9635 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9636 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9637 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9638
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 wpalMemoryCopy( pSendBuffer+usDataOffset,
9640 &halDelBAparam,
9641 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009642
9643 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009644 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009645
9646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009647 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009649 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9650 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009651}/*WDI_ProcessDelBAReq*/
9652
9653#ifdef FEATURE_WLAN_CCX
9654
9655WDI_Status
9656WDI_ProcessTSMStatsReq
9657(
9658 WDI_ControlBlockType* pWDICtx,
9659 WDI_EventInfoType* pEventData
9660)
9661{
9662 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9663 WDI_TsmRspCb wdiTSMRspCb;
9664 wpt_uint8 ucCurrentBSSSesIdx = 0;
9665 WDI_BSSSessionType* pBSSSes = NULL;
9666 wpt_uint8* pSendBuffer = NULL;
9667 wpt_uint16 usDataOffset = 0;
9668 wpt_uint16 usSendSize = 0;
9669 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9670 tTsmStatsParams halTsmStatsReqParams = {0};
9671
9672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9673
9674 /*-------------------------------------------------------------------------
9675 Sanity check
9676 -------------------------------------------------------------------------*/
9677 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9678 ( NULL == pEventData->pCBfnc ))
9679 {
9680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009681 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 WDI_ASSERT(0);
9683 return WDI_STATUS_E_FAILURE;
9684 }
9685
9686 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9687 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9688 /*-------------------------------------------------------------------------
9689 Check to see if we are in the middle of an association, if so queue, if
9690 not it means it is free to process request
9691 -------------------------------------------------------------------------*/
9692 wpalMutexAcquire(&pWDICtx->wptMutex);
9693
9694 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9695 if ( NULL == pBSSSes )
9696 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9698 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9699 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009700
9701 wpalMutexRelease(&pWDICtx->wptMutex);
9702 return WDI_STATUS_E_NOT_ALLOWED;
9703 }
9704
9705 /*------------------------------------------------------------------------
9706 Check if this BSS is being currently processed or queued,
9707 if queued - queue the new request as well
9708 ------------------------------------------------------------------------*/
9709 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9710 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9712 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9713 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009714
9715 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9716 wpalMutexRelease(&pWDICtx->wptMutex);
9717 return wdiStatus;
9718 }
9719
9720 wpalMutexRelease(&pWDICtx->wptMutex);
9721 /*-----------------------------------------------------------------------
9722 Get message buffer
9723 ! TO DO : proper conversion into the HAL Message Request Format
9724 -----------------------------------------------------------------------*/
9725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9726 sizeof(halTsmStatsReqParams),
9727 &pSendBuffer, &usDataOffset, &usSendSize))||
9728 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9729 {
9730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9731 "Unable to get send buffer in set bss key req %x %x %x",
9732 pEventData, pwdiTSMParams, wdiTSMRspCb);
9733 WDI_ASSERT(0);
9734 return WDI_STATUS_E_FAILURE;
9735 }
9736
9737 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9738 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9739 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9740 WDI_MAC_ADDR_LEN);
9741 wpalMemoryCopy( pSendBuffer+usDataOffset,
9742 &halTsmStatsReqParams,
9743 sizeof(halTsmStatsReqParams));
9744
9745 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9746 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9747
9748 /*-------------------------------------------------------------------------
9749 Send TSM Stats Request to HAL
9750 -------------------------------------------------------------------------*/
9751 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9752 wdiTSMRspCb, pEventData->pUserData,
9753 WDI_TSM_STATS_RESP);
9754}/*WDI_ProcessTSMStatsReq*/
9755
9756#endif
9757
9758
9759/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009762
9763 @param pWDICtx: pointer to the WLAN DAL context
9764 pEventData: pointer to the event information structure
9765
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 @see
9767 @return Result of the function call
9768*/
9769WDI_Status
9770WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009771(
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 WDI_ControlBlockType* pWDICtx,
9773 WDI_EventInfoType* pEventData
9774)
9775{
9776 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9777 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 wpt_uint16 usDataOffset = 0;
9780 wpt_uint16 usSendSize = 0;
9781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9782
9783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 -------------------------------------------------------------------------*/
9786 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9787 ( NULL == pEventData->pCBfnc ))
9788 {
9789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 }
9794
9795 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9796 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9797 /*-----------------------------------------------------------------------
9798 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009800 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9803 &pSendBuffer, &usDataOffset, &usSendSize))||
9804 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9805 {
9806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9807 "Unable to get send buffer in set bss key req %x %x %x",
9808 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 }
9812
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 wpalMemoryCopy( pSendBuffer+usDataOffset,
9814 &pwdiFlushAcParams->wdiFlushAcInfo,
9815 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009816
9817 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009818 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009819
9820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9824 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009825}/*WDI_ProcessFlushAcReq*/
9826
9827/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009829 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009830
9831 @param pWDICtx: pointer to the WLAN DAL context
9832 pEventData: pointer to the event information structure
9833
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 @see
9835 @return Result of the function call
9836*/
9837WDI_Status
9838WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009839(
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 WDI_ControlBlockType* pWDICtx,
9841 WDI_EventInfoType* pEventData
9842)
9843{
9844 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9845 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 wpt_uint16 usDataOffset = 0;
9848 wpt_uint16 usSendSize = 0;
9849
9850 tBtAmpEventMsg haltBtAmpEventMsg;
9851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9852
9853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 -------------------------------------------------------------------------*/
9856 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9857 ( NULL == pEventData->pCBfnc ))
9858 {
9859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 }
9864
9865 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9866 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9867 /*-----------------------------------------------------------------------
9868 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009872 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9873 &pSendBuffer, &usDataOffset, &usSendSize))||
9874 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9875 {
9876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9877 "Unable to get send buffer in BT AMP event req %x %x %x",
9878 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 }
9882
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009885 wpalMemoryCopy( pSendBuffer+usDataOffset,
9886 &haltBtAmpEventMsg.btAmpEventParams,
9887 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009888
9889 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009891
9892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009893 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009894 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9896 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009897}/*WDI_ProcessBtAmpEventReq*/
9898
9899/**
9900 @brief Process Add STA self Request function (called when Main FSM
9901 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009902
9903 @param pWDICtx: pointer to the WLAN DAL context
9904 pEventData: pointer to the event information structure
9905
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 @see
9907 @return Result of the function call
9908*/
9909WDI_Status
9910WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009911(
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 WDI_ControlBlockType* pWDICtx,
9913 WDI_EventInfoType* pEventData
9914)
9915{
9916 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9917 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 wpt_uint16 usDataOffset = 0;
9920 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9923
9924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 -------------------------------------------------------------------------*/
9927 if (( NULL == pEventData ) ||
9928 ( NULL == pEventData->pEventData) ||
9929 ( NULL == pEventData->pCBfnc))
9930 {
9931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009932 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 }
9936
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
9941 /*-----------------------------------------------------------------------
9942 Get message buffer
9943 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9945 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 sizeof(tAddStaSelfParams),
9947 &pSendBuffer, &usDataOffset, &usSendSize))||
9948 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
9949 {
9950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9951 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
9952 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
9953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 }
9956
9957 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
9960
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
9963
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
9965 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009966
9967 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009969
9970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9974 wdiAddSTASelfReqRspCb, pEventData->pUserData,
9975 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009976}/*WDI_ProcessAddSTASelfReq*/
9977
9978
9979
9980/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009983
9984 @param pWDICtx: pointer to the WLAN DAL context
9985 pEventData: pointer to the event information structure
9986
Jeff Johnson295189b2012-06-20 16:38:30 -07009987 @see
9988 @return Result of the function call
9989*/
9990WDI_Status
9991WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009992(
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 WDI_ControlBlockType* pWDICtx,
9994 WDI_EventInfoType* pEventData
9995)
9996{
9997 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
9998 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 wpt_uint16 usDataOffset = 0;
10001 wpt_uint16 usSendSize = 0;
10002 tDelStaSelfParams halSetDelSelfSTAParams;
10003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10004
10005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010006 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010007 -------------------------------------------------------------------------*/
10008 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10009 ( NULL == pEventData->pCBfnc ))
10010 {
10011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 }
10016
Jeff Johnsone7245742012-09-05 17:12:55 -070010017 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010018 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10019 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10020
10021 /*-----------------------------------------------------------------------
10022 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010026 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10027 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010029 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10030 {
10031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10032 "Unable to get send buffer in Del Sta Self req %x %x %x",
10033 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 }
10037
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10040
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10042 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010043
10044 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010046
10047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10051 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 WDI_DEL_STA_SELF_RESP);
10053
10054}
10055
Jeff Johnsone7245742012-09-05 17:12:55 -070010056#ifdef FEATURE_OEM_DATA_SUPPORT
10057/**
10058 @brief Process Start Oem Data Request function (called when Main
10059 FSM allows it)
10060
10061 @param pWDICtx: pointer to the WLAN DAL context
10062 pEventData: pointer to the event information structure
10063
10064 @see
10065 @return Result of the function call
10066*/
10067WDI_Status
10068WDI_ProcessStartOemDataReq
10069(
10070 WDI_ControlBlockType* pWDICtx,
10071 WDI_EventInfoType* pEventData
10072)
10073{
10074 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10075 WDI_oemDataRspCb wdiOemDataRspCb;
10076 wpt_uint8* pSendBuffer = NULL;
10077 wpt_uint16 usDataOffset = 0;
10078 wpt_uint16 usSendSize = 0;
10079 wpt_uint16 reqLen;
10080 tStartOemDataReqParams* halStartOemDataReqParams;
10081
10082 /*-------------------------------------------------------------------------
10083 Sanity check
10084 -------------------------------------------------------------------------*/
10085 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10086 ( NULL == pEventData->pCBfnc ))
10087 {
10088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010089 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 WDI_ASSERT(0);
10091 return WDI_STATUS_E_FAILURE;
10092 }
10093
10094 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10095 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10096
10097 /*-----------------------------------------------------------------------
10098 Get message buffer
10099 -----------------------------------------------------------------------*/
10100
10101 reqLen = sizeof(tStartOemDataReqParams);
10102
10103 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10104 WDI_START_OEM_DATA_REQ, reqLen,
10105 &pSendBuffer, &usDataOffset, &usSendSize))||
10106 (usSendSize < (usDataOffset + reqLen)))
10107 {
10108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10109 "Unable to get send buffer in Start Oem Data req %x %x %x",
10110 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10111 WDI_ASSERT(0);
10112 return WDI_STATUS_E_FAILURE;
10113 }
10114
10115 //copying WDI OEM DATA REQ PARAMS to shared memory
10116 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10117
10118 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10119 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10120
10121 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10122 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10123
10124 /*-------------------------------------------------------------------------
10125 Send Start Request to HAL
10126 -------------------------------------------------------------------------*/
10127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10128 wdiOemDataRspCb, pEventData->pUserData,
10129 WDI_START_OEM_DATA_RESP);
10130}/*WDI_ProcessStartOemDataReq*/
10131#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010132
10133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010136
10137 @param pWDICtx: pointer to the WLAN DAL context
10138 pEventData: pointer to the event information structure
10139
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 @see
10141 @return Result of the function call
10142*/
10143WDI_Status
10144WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010145(
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 WDI_ControlBlockType* pWDICtx,
10147 WDI_EventInfoType* pEventData
10148)
10149{
10150 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10151 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 wpt_uint16 usDataOffset = 0;
10154 wpt_uint16 usSendSize = 0;
10155 tHalWlanHostResumeReqParam halResumeReqParams;
10156
10157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10158
10159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 -------------------------------------------------------------------------*/
10162 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10163 ( NULL == pEventData->pCBfnc ))
10164 {
10165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010166 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 }
10170
10171 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10172 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10173
10174 /*-----------------------------------------------------------------------
10175 Get message buffer
10176 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010177 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010178 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10179 &pSendBuffer, &usDataOffset, &usSendSize))||
10180 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10181 {
10182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010184 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 }
10188
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010191
10192 wpalMemoryCopy( pSendBuffer+usDataOffset,
10193 &halResumeReqParams,
10194 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010195
10196 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010197 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010198
10199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010200 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10203 wdiHostResumeRspCb, pEventData->pUserData,
10204 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010205}/*WDI_ProcessHostResumeReq*/
10206
10207/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010208 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010209 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010210
10211 @param pWDICtx: pointer to the WLAN DAL context
10212 pEventData: pointer to the event information structure
10213
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 @see
10215 @return Result of the function call
10216*/
10217WDI_Status
10218WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010219(
Jeff Johnson295189b2012-06-20 16:38:30 -070010220 WDI_ControlBlockType* pWDICtx,
10221 WDI_EventInfoType* pEventData
10222)
10223{
10224 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10225 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 wpt_uint16 usDataOffset = 0;
10228 wpt_uint16 usSendSize = 0;
10229 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10231
10232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010234 -------------------------------------------------------------------------*/
10235 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10236 ( NULL == pEventData->pCBfnc ))
10237 {
10238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010239 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010242 }
10243
10244 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10245 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010246
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 /*-----------------------------------------------------------------------
10248 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010249 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010250 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 sizeof(halTxPerTrackingReqParam),
10253 &pSendBuffer, &usDataOffset, &usSendSize))||
10254 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10255 {
10256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10257 "Unable to get send buffer in set tx per tracking req %x %x %x",
10258 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010262
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10264 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10265 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10266 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010267
10268 wpalMemoryCopy( pSendBuffer+usDataOffset,
10269 &halTxPerTrackingReqParam,
10270 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010271
10272 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010273 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010274
10275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10279 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010280}/*WDI_ProcessSetTxPerTrackingReq*/
10281
10282/*=========================================================================
10283 Indications
10284=========================================================================*/
10285
10286/**
10287 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010288
10289 @param pWDICtx: pointer to the WLAN DAL context
10290 pEventData: pointer to the event information structure
10291
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 @see
10293 @return Result of the function call
10294*/
10295WDI_Status
10296WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010297(
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 WDI_ControlBlockType* pWDICtx,
10299 WDI_EventInfoType* pEventData
10300)
10301{
10302 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 wpt_uint16 usDataOffset = 0;
10305 wpt_uint16 usSendSize = 0;
10306 WDI_Status wdiStatus;
10307 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10309
10310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 -------------------------------------------------------------------------*/
10313 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10314 {
10315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010316 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 }
10320
10321 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10322
10323 /*-----------------------------------------------------------------------
10324 Get message buffer
10325 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010326 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10327 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 sizeof(halWlanSuspendIndparams),
10329 &pSendBuffer, &usDataOffset, &usSendSize))||
10330 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10331 {
10332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10333 "Unable to get send buffer in Suspend Ind ");
10334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010336 }
10337
10338 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10339 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10340
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010342 WDI_GetActiveSessionsCount(pWDICtx);
10343
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10345 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010346
10347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 -------------------------------------------------------------------------*/
10350 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010351 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010352
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10355}/*WDI_ProcessHostSuspendInd*/
10356
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010357
10358
10359/**
10360 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10361
10362 @param pWDICtx: pointer to the WLAN DAL context
10363 pEventData: pointer to the event information structure
10364
10365 @see
10366 @return Result of the function call
10367*/
10368WDI_Status
10369WDI_ProcessTrafficStatsInd
10370(
10371 WDI_ControlBlockType* pWDICtx,
10372 WDI_EventInfoType* pEventData
10373)
10374{
10375 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10376 wpt_uint8* pSendBuffer = NULL;
10377 wpt_uint16 usDataOffset = 0;
10378 wpt_uint16 usSendSize = 0;
10379 WDI_Status wdiStatus;
10380 tStatsClassBIndParams* pStatsClassBIndParams;
10381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10382
10383 /*-------------------------------------------------------------------------
10384 Sanity check
10385 -------------------------------------------------------------------------*/
10386 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10387 {
10388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10389 "%s: Invalid parameters in Traffic Stats ind",__func__);
10390 WDI_ASSERT(0);
10391 return WDI_STATUS_E_FAILURE;
10392 }
10393
10394 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10395
10396 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10397 {
10398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10399 "%s: Invalid parameters in Traffic Stats ind",__func__);
10400 WDI_ASSERT(0);
10401 return WDI_STATUS_E_FAILURE;
10402 }
10403
10404 /*-----------------------------------------------------------------------
10405 Get message buffer
10406 -----------------------------------------------------------------------*/
10407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10408 WDI_TRAFFIC_STATS_IND,
10409 sizeof(tStatsClassBIndParams),
10410 &pSendBuffer, &usDataOffset, &usSendSize))||
10411 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10412 {
10413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10414 "Unable to get send buffer in Traffic Stats Ind ");
10415 WDI_ASSERT(0);
10416 return WDI_STATUS_E_FAILURE;
10417 }
10418
10419 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10420
10421 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10422
10423 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10424 pTrafficStatsIndParams->pTrafficStats,
10425 pTrafficStatsIndParams->length);
10426
10427 /*-------------------------------------------------------------------------
10428 Send Suspend Request to HAL
10429 -------------------------------------------------------------------------*/
10430 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10431 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10432
10433 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10434 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10435}/*WDI_ProcessTrafficStatsInd*/
10436
Jeff Johnson295189b2012-06-20 16:38:30 -070010437/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010439==========================================================================*/
10440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010443
10444 @param pWDICtx: pointer to the WLAN DAL context
10445 pEventData: pointer to the event information structure
10446
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 @see
10448 @return Result of the function call
10449*/
10450WDI_Status
10451WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010452(
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 WDI_ControlBlockType* pWDICtx,
10454 WDI_EventInfoType* pEventData
10455)
10456{
10457 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10458 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 wpt_uint16 usDataOffset = 0;
10461 wpt_uint16 usSendSize = 0;
10462 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10464
10465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010466 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010467 -------------------------------------------------------------------------*/
10468 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10469 ( NULL == pEventData->pCBfnc ))
10470 {
10471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 }
10476
10477 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10478 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10479 /*-----------------------------------------------------------------------
10480 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010481 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010484 sizeof(halSwitchChannelReq.switchChannelParams),
10485 &pSendBuffer, &usDataOffset, &usSendSize))||
10486 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10487 {
10488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10489 "Unable to get send buffer in channel switch req %x %x %x",
10490 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 }
10494
Jeff Johnsone7245742012-09-05 17:12:55 -070010495 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010497#ifndef WLAN_FEATURE_VOWIFI
10498 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010499 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10500#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10503
10504#ifdef WLAN_FEATURE_VOWIFI
10505 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10508 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10509 WDI_MAC_ADDR_LEN);
10510 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10511 pwdiSwitchChParams->wdiChInfo.macBSSId,
10512 WDI_MAC_ADDR_LEN);
10513#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010514 wpalMemoryCopy( pSendBuffer+usDataOffset,
10515 &halSwitchChannelReq.switchChannelParams,
10516 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010517
10518 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010520
10521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010522 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010523 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10525 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010526}/*WDI_ProcessChannelSwitchReq*/
10527
10528/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010529 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010530 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010531
10532 @param pWDICtx: pointer to the WLAN DAL context
10533 pEventData: pointer to the event information structure
10534
Jeff Johnson295189b2012-06-20 16:38:30 -070010535 @see
10536 @return Result of the function call
10537*/
10538WDI_Status
10539WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010540(
Jeff Johnson295189b2012-06-20 16:38:30 -070010541 WDI_ControlBlockType* pWDICtx,
10542 WDI_EventInfoType* pEventData
10543)
10544{
10545 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10546 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010547 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010548 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 wpt_uint16 usDataOffset = 0;
10551 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010553
Jeff Johnsone7245742012-09-05 17:12:55 -070010554 tConfigStaReqMsg halConfigStaReqMsg;
10555 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10557
10558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010560 -------------------------------------------------------------------------*/
10561 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10562 ( NULL == pEventData->pCBfnc ))
10563 {
10564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010568 }
10569
10570 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10571 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10572 /*-------------------------------------------------------------------------
10573 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 -------------------------------------------------------------------------*/
10576 wpalMutexAcquire(&pWDICtx->wptMutex);
10577
10578 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010580 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10582 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10583 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010584
Jeff Johnsone7245742012-09-05 17:12:55 -070010585 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010586 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10588 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10589 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010590
10591 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 }
10594
10595 /*------------------------------------------------------------------------
10596 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010597 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 ------------------------------------------------------------------------*/
10599 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10600 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10602 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10603 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010604
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010606 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010607 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010608 }
10609
10610 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010611
10612 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10613#ifdef WLAN_FEATURE_11AC
10614 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010615 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 else
10617#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010618 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010619
Jeff Johnson295189b2012-06-20 16:38:30 -070010620 /*-----------------------------------------------------------------------
10621 Get message buffer
10622 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010623 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10624 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 {
10628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10629 "Unable to get send buffer in config sta req %x %x %x",
10630 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 }
10634
10635 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010637 &pwdiConfigSTAParams->wdiReqInfo);
10638
10639 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10640 {
10641 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010642 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010643 WDI_STATableFindStaidByAddr(pWDICtx,
10644 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 {
10647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10648 "This station does not exist in the WDI Station Table %d");
10649 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010650 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 }
10653 }
10654 else
10655 {
10656 /* Need to fill in the STA Index to invalid, since at this point we have not
10657 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010659 }
10660
10661 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010663
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 wpalMemoryCopy( pSendBuffer+usDataOffset,
10665 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010666 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010667
10668 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010670
Jeff Johnsone7245742012-09-05 17:12:55 -070010671 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10672 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010673 sizeof(pWDICtx->wdiCachedConfigStaReq));
10674
10675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10679 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010680}/*WDI_ProcessConfigStaReq*/
10681
10682
10683/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010686
10687 @param pWDICtx: pointer to the WLAN DAL context
10688 pEventData: pointer to the event information structure
10689
Jeff Johnson295189b2012-06-20 16:38:30 -070010690 @see
10691 @return Result of the function call
10692*/
10693WDI_Status
10694WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010695(
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 WDI_ControlBlockType* pWDICtx,
10697 WDI_EventInfoType* pEventData
10698)
10699{
10700 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10701 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 wpt_uint16 usDataOffset = 0;
10706 wpt_uint16 usSendSize = 0;
10707 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10710
10711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 -------------------------------------------------------------------------*/
10714 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10715 ( NULL == pEventData->pCBfnc ))
10716 {
10717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010721 }
10722
10723 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10724 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10725 /*-------------------------------------------------------------------------
10726 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010728 -------------------------------------------------------------------------*/
10729 wpalMutexAcquire(&pWDICtx->wptMutex);
10730
10731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10735 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10736 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010737
Jeff Johnsone7245742012-09-05 17:12:55 -070010738 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10742 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010743 }
10744 else
10745 {
10746 /*------------------------------------------------------------------------
10747 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010749 ------------------------------------------------------------------------*/
10750 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10751 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10753 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10754 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10755
10756 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010757 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 }
10760 }
10761 /* If the link is set to enter IDLE - the Session allocated for this BSS
10762 will be deleted on the Set Link State response coming from HAL
10763 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010764 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10766
10767 wpalMutexRelease(&pWDICtx->wptMutex);
10768 /*-----------------------------------------------------------------------
10769 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010772
10773 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010774 sizeof(halLinkStateReqMsg),
10775 &pSendBuffer, &usDataOffset, &usSendSize))||
10776 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10777 {
10778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10779 "Unable to get send buffer in set bss key req %x %x %x",
10780 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10781 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 }
10784
10785 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10786 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10787
10788 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10789 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10790
Jeff Johnsone7245742012-09-05 17:12:55 -070010791 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10793
Jeff Johnsone7245742012-09-05 17:12:55 -070010794 wpalMemoryCopy( pSendBuffer+usDataOffset,
10795 &halLinkStateReqMsg,
10796 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010797
10798 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010799 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010800
10801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10805 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010806}/*WDI_ProcessSetLinkStateReq*/
10807
10808
10809/**
10810 @brief Process Get Stats Request function (called when Main FSM
10811 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010812
10813 @param pWDICtx: pointer to the WLAN DAL context
10814 pEventData: pointer to the event information structure
10815
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 @see
10817 @return Result of the function call
10818*/
10819WDI_Status
10820WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010821(
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 WDI_ControlBlockType* pWDICtx,
10823 WDI_EventInfoType* pEventData
10824)
10825{
10826 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10827 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 wpt_uint16 usDataOffset = 0;
10830 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 WDI_BSSSessionType* pBSSSes = NULL;
10833 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 tHalStatsReqMsg halStatsReqMsg;
10836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10837
10838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 -------------------------------------------------------------------------*/
10841 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10842 ( NULL == pEventData->pCBfnc ) )
10843 {
10844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010848 }
10849
10850 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10851 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10852
10853 /*-------------------------------------------------------------------------
10854 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 -------------------------------------------------------------------------*/
10857 wpalMutexAcquire(&pWDICtx->wptMutex);
10858
10859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10863 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 &macBSSID))
10865 {
10866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10867 "This station does not exist in the WDI Station Table %d");
10868 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010870 }
10871
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10873 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010874 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10876 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10877 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010878
10879 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 }
10882
10883 /*------------------------------------------------------------------------
10884 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010886 ------------------------------------------------------------------------*/
10887 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10888 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10890 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10891 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010892
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 }
10897
10898
10899 wpalMutexRelease(&pWDICtx->wptMutex);
10900
10901 /*-----------------------------------------------------------------------
10902 Get message buffer
10903 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 sizeof(halStatsReqMsg.statsReqParams),
10906 &pSendBuffer, &usDataOffset, &usSendSize))||
10907 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10908 {
10909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10910 "Unable to get send buffer in set bss key req %x %x %x",
10911 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 }
10915
Jeff Johnsone7245742012-09-05 17:12:55 -070010916 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010917 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010918 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010919 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 wpalMemoryCopy( pSendBuffer+usDataOffset,
10921 &halStatsReqMsg.statsReqParams,
10922 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010923
10924 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010926
10927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010929 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10931 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010932}/*WDI_ProcessGetStatsReq*/
10933
10934/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010937
10938 @param pWDICtx: pointer to the WLAN DAL context
10939 pEventData: pointer to the event information structure
10940
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 @see
10942 @return Result of the function call
10943*/
10944WDI_Status
10945WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010946(
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 WDI_ControlBlockType* pWDICtx,
10948 WDI_EventInfoType* pEventData
10949)
10950{
10951 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
10952 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
10953
Jeff Johnsone7245742012-09-05 17:12:55 -070010954 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010955 wpt_uint16 usDataOffset = 0;
10956 wpt_uint16 usSendSize = 0;
10957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10958
10959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010961 -------------------------------------------------------------------------*/
10962 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10963 ( NULL == pEventData->pCBfnc))
10964 {
10965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010969 }
10970
10971 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
10972 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
10973
10974 /*-----------------------------------------------------------------------
10975 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010976 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010977 -----------------------------------------------------------------------*/
10978
Jeff Johnsone7245742012-09-05 17:12:55 -070010979 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010980 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
10981 &pSendBuffer, &usDataOffset, &usSendSize))||
10982 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
10983 {
10984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10985 "Unable to get send buffer in set bss key req %x %x %x",
10986 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
10987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010989 }
10990
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 wpalMemoryCopy( pSendBuffer+usDataOffset,
10992 &pwdiUpdateCfgParams->uConfigBufferLen,
10993 sizeof(wpt_uint32));
10994 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
10995 pwdiUpdateCfgParams->pConfigBuffer,
10996 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070010997
10998 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010999 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011000
11001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011002 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011003 -------------------------------------------------------------------------*/
11004
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11006 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011007
11008}/*WDI_ProcessUpdateCfgReq*/
11009
11010
11011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011012 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011013 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011014
11015 @param pWDICtx: pointer to the WLAN DAL context
11016 pEventData: pointer to the event information structure
11017
Jeff Johnson295189b2012-06-20 16:38:30 -070011018 @see
11019 @return Result of the function call
11020*/
11021WDI_Status
11022WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011023(
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 WDI_ControlBlockType* pWDICtx,
11025 WDI_EventInfoType* pEventData
11026)
11027{
11028 WDI_AddBAReqParamsType* pwdiAddBAParams;
11029 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011030 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011031 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011032 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011033 wpt_uint16 usDataOffset = 0;
11034 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011035 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011036 wpt_macAddr macBSSID;
11037
11038 tAddBAReqMsg halAddBAReq;
11039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11040
11041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011043 -------------------------------------------------------------------------*/
11044 if (( NULL == pEventData ) ||
11045 ( NULL == pEventData->pEventData) ||
11046 ( NULL == pEventData->pCBfnc ))
11047 {
11048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011052 }
11053
11054 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11055 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11056
11057 /*-------------------------------------------------------------------------
11058 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011059 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011060 -------------------------------------------------------------------------*/
11061 wpalMutexAcquire(&pWDICtx->wptMutex);
11062
11063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011064 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011065 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011066 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11067 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011068 &macBSSID))
11069 {
11070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11071 "This station does not exist in the WDI Station Table %d");
11072 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 }
11075
Jeff Johnsone7245742012-09-05 17:12:55 -070011076 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11077 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011078 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11080 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11081 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011082
11083 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011085 }
11086
11087 /*------------------------------------------------------------------------
11088 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 ------------------------------------------------------------------------*/
11091 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11092 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11094 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11095 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011096
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011098 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011099 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011100 }
11101
11102
11103 wpalMutexRelease(&pWDICtx->wptMutex);
11104 /*-----------------------------------------------------------------------
11105 Get message buffer
11106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 sizeof(halAddBAReq.addBAParams),
11109 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011110 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011111 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11112 {
11113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11114 "Unable to get send buffer in Add BA req %x %x %x",
11115 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011118 }
11119
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11122 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11123#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011124 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011125 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11126#endif
11127
Jeff Johnsone7245742012-09-05 17:12:55 -070011128 wpalMemoryCopy( pSendBuffer+usDataOffset,
11129 &halAddBAReq.addBAParams,
11130 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011131
11132 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011133 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011134
11135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011136 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011137 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011138 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11139 wdiAddBARspCb, pEventData->pUserData,
11140 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011141}/*WDI_ProcessAddBAReq*/
11142
11143
11144
11145/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011148
11149 @param pWDICtx: pointer to the WLAN DAL context
11150 pEventData: pointer to the event information structure
11151
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 @see
11153 @return Result of the function call
11154*/
11155WDI_Status
11156WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011157(
Jeff Johnson295189b2012-06-20 16:38:30 -070011158 WDI_ControlBlockType* pWDICtx,
11159 WDI_EventInfoType* pEventData
11160)
11161{
11162 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11163 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011164 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011165 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 wpt_uint16 usDataOffset = 0;
11168 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011169 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011170 wpt_uint16 index;
11171 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011172
Jeff Johnson295189b2012-06-20 16:38:30 -070011173 tTriggerBAReqMsg halTriggerBAReq;
11174 tTriggerBaReqCandidate* halTriggerBACandidate;
11175 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11177
11178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 -------------------------------------------------------------------------*/
11181 if (( NULL == pEventData ) ||
11182 ( NULL == pEventData->pEventData ) ||
11183 ( NULL == pEventData->pCBfnc ))
11184 {
11185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011189 }
11190
11191 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11192 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11193 /*-------------------------------------------------------------------------
11194 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011195 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011196 -------------------------------------------------------------------------*/
11197 wpalMutexAcquire(&pWDICtx->wptMutex);
11198
11199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011200 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011201 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011202 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11203 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 &macBSSID))
11205 {
11206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11207 "This station does not exist in the WDI Station Table %d");
11208 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 }
11211
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11213 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011214 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11216 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11217 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011218
11219 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011221 }
11222
11223 /*------------------------------------------------------------------------
11224 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011226 ------------------------------------------------------------------------*/
11227 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11228 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11230 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11231 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011232
Jeff Johnsone7245742012-09-05 17:12:55 -070011233 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011234 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 }
11237
11238
11239 wpalMutexRelease(&pWDICtx->wptMutex);
11240 /*-----------------------------------------------------------------------
11241 Get message buffer
11242 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011243 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11244 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011245 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11248 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11253 {
11254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11255 "Unable to get send buffer in Trigger BA req %x %x %x",
11256 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011259 }
11260
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011262 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011263 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011264 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11265
Jeff Johnsone7245742012-09-05 17:12:55 -070011266 wpalMemoryCopy( pSendBuffer+usDataOffset,
11267 &halTriggerBAReq.triggerBAParams,
11268 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011269
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11272 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11273 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011274
11275 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 index++)
11277 {
11278 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11279 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11280 halTriggerBACandidate++;
11281 wdiTriggerBACandidate++;
11282 }
11283
11284 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011285 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011286
11287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011288 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011290 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11291 wdiTriggerBARspCb, pEventData->pUserData,
11292 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011293}/*WDI_ProcessTriggerBAReq*/
11294
11295
11296
11297/**
11298 @brief Process Update Beacon Params Request function (called when Main FSM
11299 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011300
11301 @param pWDICtx: pointer to the WLAN DAL context
11302 pEventData: pointer to the event information structure
11303
Jeff Johnson295189b2012-06-20 16:38:30 -070011304 @see
11305 @return Result of the function call
11306*/
11307WDI_Status
11308WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011309(
Jeff Johnson295189b2012-06-20 16:38:30 -070011310 WDI_ControlBlockType* pWDICtx,
11311 WDI_EventInfoType* pEventData
11312)
11313{
11314 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11315 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 wpt_uint16 usDataOffset = 0;
11318 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11321
11322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011324 -------------------------------------------------------------------------*/
11325 if (( NULL == pEventData ) ||
11326 ( NULL == pEventData->pEventData) ||
11327 ( NULL == pEventData->pCBfnc))
11328 {
11329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 }
11334
11335 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11336 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11337 /*-----------------------------------------------------------------------
11338 Get message buffer
11339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 sizeof(halUpdateBeaconParams),
11342 &pSendBuffer, &usDataOffset, &usSendSize))||
11343 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11344 {
11345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11346 "Unable to get send buffer in set bss key req %x %x %x",
11347 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011350 }
11351
11352 /*BSS Index of the BSS*/
11353 halUpdateBeaconParams.bssIdx =
11354 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11355 /*shortPreamble mode. HAL should update all the STA rates when it
11356 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011357 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011358 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11359 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11362 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011363 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011364 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11365
11366 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011367 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011368 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011369 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011371 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011372 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011373 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011374 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011375 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11379 halUpdateBeaconParams.fRIFSMode =
11380 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11383
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11385 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011386
11387 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011389
11390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011391 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11394 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011395}/*WDI_ProcessUpdateBeaconParamsReq*/
11396
11397
11398
11399/**
11400 @brief Process Send Beacon template Request function (called when Main FSM
11401 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011402
11403 @param pWDICtx: pointer to the WLAN DAL context
11404 pEventData: pointer to the event information structure
11405
Jeff Johnson295189b2012-06-20 16:38:30 -070011406 @see
11407 @return Result of the function call
11408*/
11409WDI_Status
11410WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011411(
Jeff Johnson295189b2012-06-20 16:38:30 -070011412 WDI_ControlBlockType* pWDICtx,
11413 WDI_EventInfoType* pEventData
11414)
11415{
11416 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11417 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011418 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011419 wpt_uint16 usDataOffset = 0;
11420 wpt_uint16 usSendSize = 0;
11421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11422
11423 tSendBeaconReqMsg halSendBeaconReq;
11424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 -------------------------------------------------------------------------*/
11427 if (( NULL == pEventData ) ||
11428 ( NULL == pEventData->pEventData ) ||
11429 ( NULL == pEventData->pCBfnc ))
11430 {
11431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 }
11436
11437 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11438 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11439 /*-----------------------------------------------------------------------
11440 Get message buffer
11441 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011442 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011443 sizeof(halSendBeaconReq.sendBeaconParam),
11444 &pSendBuffer, &usDataOffset, &usSendSize))||
11445 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11446 {
11447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11448 "Unable to get send buffer in send beacon req %x %x %x",
11449 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 }
11453
11454 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11455 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11456 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11459 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11460 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11461 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
11462#ifdef WLAN_SOFTAP_FEATURE
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
11465#endif
11466#ifdef WLAN_FEATURE_P2P
Jeff Johnsone7245742012-09-05 17:12:55 -070011467 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011468 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
11469#endif
11470
Jeff Johnsone7245742012-09-05 17:12:55 -070011471 wpalMemoryCopy( pSendBuffer+usDataOffset,
11472 &halSendBeaconReq.sendBeaconParam,
11473 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011474
11475 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011476 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011477
11478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011479 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11482 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011483}/*WDI_ProcessSendBeaconParamsReq*/
11484
11485/**
11486 @brief Process Update Beacon Params Request function (called when Main FSM
11487 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011488
11489 @param pWDICtx: pointer to the WLAN DAL context
11490 pEventData: pointer to the event information structure
11491
Jeff Johnson295189b2012-06-20 16:38:30 -070011492 @see
11493 @return Result of the function call
11494*/
11495WDI_Status
11496WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011497(
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 WDI_ControlBlockType* pWDICtx,
11499 WDI_EventInfoType* pEventData
11500)
11501{
11502 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11503 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011504 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011505 wpt_uint16 usDataOffset = 0;
11506 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11509
11510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011512 -------------------------------------------------------------------------*/
11513 if (( NULL == pEventData ) ||
11514 ( NULL == pEventData->pEventData) ||
11515 ( NULL == pEventData->pCBfnc))
11516 {
11517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 }
11522
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011525 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011526 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11527 /*-----------------------------------------------------------------------
11528 Get message buffer
11529 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 sizeof(halUpdateProbeRspTmplParams),
11532 &pSendBuffer, &usDataOffset, &usSendSize))||
11533 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11534 {
11535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11536 "Unable to get send buffer in set bss key req %x %x %x",
11537 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 }
11541
11542 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011543 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011544 WDI_MAC_ADDR_LEN);
11545
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11548
11549 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11550 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011552
11553
11554 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11555 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11556 WDI_PROBE_REQ_BITMAP_IE_LEN);
11557
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 wpalMemoryCopy( pSendBuffer+usDataOffset,
11559 &halUpdateProbeRspTmplParams,
11560 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011561
11562 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011564
11565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011568 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11569 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11570 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011571}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11572
11573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011574 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011575 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011576
11577 @param pWDICtx: pointer to the WLAN DAL context
11578 pEventData: pointer to the event information structure
11579
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 @see
11581 @return Result of the function call
11582*/
11583WDI_Status
11584WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011585(
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 WDI_ControlBlockType* pWDICtx,
11587 WDI_EventInfoType* pEventData
11588)
11589{
11590
11591 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11592 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11593
11594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 -------------------------------------------------------------------------*/
11597 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011598 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011599 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011600 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11602 {
11603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011607 }
11608
11609 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011610 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11612
11613 /*cache the wdi nv request message here if the the first fragment
11614 * To issue the request to HAL for the next fragment */
11615 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11616 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011617 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11618 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11620
11621 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11622 pWDICtx->pRspCBUserData = pEventData->pUserData;
11623 }
11624
11625 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11626}
11627
11628/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011631
11632 @param pWDICtx: pointer to the WLAN DAL context
11633 pEventData: pointer to the event information structure
11634
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 @see
11636 @return Result of the function call
11637*/
11638WDI_Status WDI_ProcessSetMaxTxPowerReq
11639(
11640 WDI_ControlBlockType* pWDICtx,
11641 WDI_EventInfoType* pEventData
11642)
11643{
11644 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11645 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011647 wpt_uint16 usDataOffset = 0;
11648 wpt_uint16 usSendSize = 0;
11649 tSetMaxTxPwrReq halSetMaxTxPower;
11650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11651
11652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011654 -------------------------------------------------------------------------*/
11655 if (( NULL == pEventData ) ||
11656 ( NULL == pEventData->pEventData ) ||
11657 ( NULL == pEventData->pCBfnc ))
11658 {
11659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11668
11669 /*-----------------------------------------------------------------------
11670 Get message buffer
11671 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011672if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011673 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11674 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011676)))
11677 {
11678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11679 "Unable to get Set Max Tx Power req %x %x %x",
11680 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011683 }
11684
11685 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11686 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11687 WDI_MAC_ADDR_LEN);
11688
11689 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11690 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11691 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011692 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011694
11695 wpalMemoryCopy( pSendBuffer+usDataOffset,
11696 &halSetMaxTxPower.setMaxTxPwrParams,
11697 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011698
11699 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011701
11702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011703 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11706 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11707 WDI_SET_MAX_TX_POWER_RESP);
11708
Jeff Johnson295189b2012-06-20 16:38:30 -070011709}
11710
11711#ifdef WLAN_FEATURE_P2P
11712
11713/**
11714 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11715 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011716
11717 @param pWDICtx: pointer to the WLAN DAL context
11718 pEventData: pointer to the event information structure
11719
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 @see
11721 @return Result of the function call
11722*/
11723WDI_Status
11724WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011725(
Jeff Johnson295189b2012-06-20 16:38:30 -070011726 WDI_ControlBlockType* pWDICtx,
11727 WDI_EventInfoType* pEventData
11728)
11729{
11730 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
11731 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011732 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 wpt_uint16 usDataOffset = 0;
11734 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011735 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11737
11738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 -------------------------------------------------------------------------*/
11741 if (( NULL == pEventData ) ||
11742 ( NULL == pEventData->pEventData) ||
11743 ( NULL == pEventData->pCBfnc))
11744 {
11745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011749 }
11750
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011753 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011754 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
11755 /*-----------------------------------------------------------------------
11756 Get message buffer
11757 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11759 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011760 sizeof(halSetP2PGONOAParams),
11761 &pSendBuffer, &usDataOffset, &usSendSize))||
11762 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
11763 {
11764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11765 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
11766 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
11767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 }
11770
Jeff Johnsone7245742012-09-05 17:12:55 -070011771 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070011772 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070011773 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
11775 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070011776 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011777 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011778 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011779 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011780 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011782 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070011783 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
11784
Jeff Johnsone7245742012-09-05 17:12:55 -070011785 wpalMemoryCopy( pSendBuffer+usDataOffset,
11786 &halSetP2PGONOAParams,
11787 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011788
11789 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011790 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011791
11792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011793 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011795 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11796 wdiP2PGONOAReqRspCb, pEventData->pUserData,
11797 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011798}/*WDI_ProcessP2PGONOAReq*/
11799
11800#endif
11801
11802
11803/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011804 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070011805 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 @param None
11807
11808 @see
11809 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070011810*/
11811void
11812WDI_SetPowerStateCb
11813(
11814 wpt_status status,
11815 unsigned int dxePhyAddr,
11816 void *pContext
11817)
11818{
11819 wpt_status wptStatus;
11820 WDI_ControlBlockType *pCB = NULL;
11821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
11822 if(eWLAN_PAL_STATUS_E_FAILURE == status )
11823 {
11824 //it shouldn't happen, put an error msg
11825 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011826 /*
11827 * Trigger the event to bring the Enter BMPS req function to come
11828 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070011829*/
11830 if( NULL != pContext )
11831 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011832 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070011833 }
11834 else
11835 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011836 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070011837 pCB = &gWDICb;
11838 }
11839 pCB->dxePhyAddr = dxePhyAddr;
11840 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
11841 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11842 {
11843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11844 "Failed to set an event");
11845
Jeff Johnsone7245742012-09-05 17:12:55 -070011846 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011847 }
11848 return;
11849}
11850
11851
11852/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011853 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011854 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011855
11856 @param pWDICtx: pointer to the WLAN DAL context
11857 pEventData: pointer to the event information structure
11858
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 @see
11860 @return Result of the function call
11861*/
11862WDI_Status
11863WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011864(
Jeff Johnson295189b2012-06-20 16:38:30 -070011865 WDI_ControlBlockType* pWDICtx,
11866 WDI_EventInfoType* pEventData
11867)
11868{
Jeff Johnson43971f52012-07-17 12:26:56 -070011869 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011870 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011871 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011872 wpt_uint16 usDataOffset = 0;
11873 wpt_uint16 usSendSize = 0;
11874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11875
11876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011877 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 -------------------------------------------------------------------------*/
11879 if (( NULL == pEventData ) ||
11880 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
11881 {
11882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011886 }
11887
11888 /*-----------------------------------------------------------------------
11889 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011890 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011891 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011892 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011893 0,
11894 &pSendBuffer, &usDataOffset, &usSendSize))||
11895 ( usSendSize < (usDataOffset )))
11896 {
11897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11898 "Unable to get send buffer in Enter IMPS req %x %x",
11899 pEventData, wdiEnterImpsRspCb);
11900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011902 }
11903
11904 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011905 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11906 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011907 {
11908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11909 "WDI Init failed to reset an event");
11910
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011912 return VOS_STATUS_E_FAILURE;
11913 }
11914
11915 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011916 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
11917 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
11918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11919 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
11920 WDI_ASSERT(0);
11921 return WDI_STATUS_E_FAILURE;
11922 }
Jeff Johnson295189b2012-06-20 16:38:30 -070011923
11924 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070011925 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011926 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011927 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11928 WDI_SET_POWER_STATE_TIMEOUT);
11929 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 {
11931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11932 "WDI Init failed to wait on an event");
11933
Jeff Johnsone7245742012-09-05 17:12:55 -070011934 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 return VOS_STATUS_E_FAILURE;
11936 }
11937
11938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11942 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011943}/*WDI_ProcessEnterImpsReq*/
11944
11945/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011946 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011948
11949 @param pWDICtx: pointer to the WLAN DAL context
11950 pEventData: pointer to the event information structure
11951
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 @see
11953 @return Result of the function call
11954*/
11955WDI_Status
11956WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011957(
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 WDI_ControlBlockType* pWDICtx,
11959 WDI_EventInfoType* pEventData
11960)
11961{
11962 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 wpt_uint16 usDataOffset = 0;
11965 wpt_uint16 usSendSize = 0;
11966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11967
11968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011970 -------------------------------------------------------------------------*/
11971 if (( NULL == pEventData ) ||
11972 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
11973 {
11974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 }
11979
11980 /*-----------------------------------------------------------------------
11981 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011982 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 0,
11986 &pSendBuffer, &usDataOffset, &usSendSize))||
11987 ( usSendSize < (usDataOffset )))
11988 {
11989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11990 "Unable to get send buffer in Exit IMPS req %x %x",
11991 pEventData, wdiExitImpsRspCb);
11992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011994 }
11995
11996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011997 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011998 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011999 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12000 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012001}/*WDI_ProcessExitImpsReq*/
12002
12003/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012006
12007 @param pWDICtx: pointer to the WLAN DAL context
12008 pEventData: pointer to the event information structure
12009
Jeff Johnson295189b2012-06-20 16:38:30 -070012010 @see
12011 @return Result of the function call
12012*/
12013WDI_Status
12014WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012015(
Jeff Johnson295189b2012-06-20 16:38:30 -070012016 WDI_ControlBlockType* pWDICtx,
12017 WDI_EventInfoType* pEventData
12018)
12019{
12020 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12021 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 wpt_uint16 usDataOffset = 0;
12024 wpt_uint16 usSendSize = 0;
12025 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012026 wpt_status wptStatus;
12027
Jeff Johnson295189b2012-06-20 16:38:30 -070012028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12029
12030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 -------------------------------------------------------------------------*/
12033 if (( NULL == pEventData ) ||
12034 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12035 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12036 {
12037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 }
12042
12043 /*-----------------------------------------------------------------------
12044 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 sizeof(enterBmpsReq),
12049 &pSendBuffer, &usDataOffset, &usSendSize))||
12050 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12051 {
12052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12053 "Unable to get send buffer in Enter BMPS req %x %x %x",
12054 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012057 }
12058
12059 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012060 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12061 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 {
12063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12064 "WDI Init failed to reset an event");
12065
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 return VOS_STATUS_E_FAILURE;
12068 }
12069
12070 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012071 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12072 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12073 {
12074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12075 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12076 WDI_ASSERT(0);
12077 return WDI_STATUS_E_FAILURE;
12078 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012079
12080/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012081 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012082 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012083 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12084 WDI_SET_POWER_STATE_TIMEOUT);
12085 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012086 {
12087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12088 "WDI Init failed to wait on an event");
12089
Jeff Johnsone7245742012-09-05 17:12:55 -070012090 WDI_ASSERT(0);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012091 return VOS_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 }
12093
12094 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12095
12096 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12097 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12098 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12099 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12100
12101 // For CCX and 11R Roaming
12102 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12103 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12104 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12105
12106 wpalMemoryCopy( pSendBuffer+usDataOffset,
12107 &enterBmpsReq,
12108 sizeof(enterBmpsReq));
12109
12110 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012111 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012112
12113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012114 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012116 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12117 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012118}/*WDI_ProcessEnterBmpsReq*/
12119
12120/**
12121 @brief Process Exit BMPS Request function (called when Main FSM
12122 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012123
12124 @param pWDICtx: pointer to the WLAN DAL context
12125 pEventData: pointer to the event information structure
12126
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 @see
12128 @return Result of the function call
12129*/
12130WDI_Status
12131WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012132(
Jeff Johnson295189b2012-06-20 16:38:30 -070012133 WDI_ControlBlockType* pWDICtx,
12134 WDI_EventInfoType* pEventData
12135)
12136{
12137 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12138 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 wpt_uint16 usDataOffset = 0;
12141 wpt_uint16 usSendSize = 0;
12142 tHalExitBmpsReqParams exitBmpsReq;
12143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12144
12145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012147 -------------------------------------------------------------------------*/
12148 if (( NULL == pEventData ) ||
12149 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12150 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12151 {
12152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012153 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 }
12157
12158 /*-----------------------------------------------------------------------
12159 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012162 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012163 sizeof(exitBmpsReq),
12164 &pSendBuffer, &usDataOffset, &usSendSize))||
12165 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12166 {
12167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12168 "Unable to get send buffer in Exit BMPS req %x %x %x",
12169 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012172 }
12173 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12174
Jeff Johnsone7245742012-09-05 17:12:55 -070012175 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12176
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 wpalMemoryCopy( pSendBuffer+usDataOffset,
12178 &exitBmpsReq,
12179 sizeof(exitBmpsReq));
12180
12181 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012182 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012183
12184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012186 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012187 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12188 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012189}/*WDI_ProcessExitBmpsReq*/
12190
12191/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012194
12195 @param pWDICtx: pointer to the WLAN DAL context
12196 pEventData: pointer to the event information structure
12197
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 @see
12199 @return Result of the function call
12200*/
12201WDI_Status
12202WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012203(
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 WDI_ControlBlockType* pWDICtx,
12205 WDI_EventInfoType* pEventData
12206)
12207{
12208 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12209 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 wpt_uint16 usDataOffset = 0;
12212 wpt_uint16 usSendSize = 0;
12213 tUapsdReqParams enterUapsdReq;
12214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12215
12216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012218 -------------------------------------------------------------------------*/
12219 if (( NULL == pEventData ) ||
12220 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12221 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12222 {
12223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012224 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 }
12228
12229 /*-----------------------------------------------------------------------
12230 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012231 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012233 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 sizeof(enterUapsdReq),
12235 &pSendBuffer, &usDataOffset, &usSendSize))||
12236 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12237 {
12238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12239 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12240 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012243 }
12244
12245 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12246 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12247 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12248 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12249 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12250 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12251 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12252 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012254
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 wpalMemoryCopy( pSendBuffer+usDataOffset,
12256 &enterUapsdReq,
12257 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012258
12259 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012261
12262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012263 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012264 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12266 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012267}/*WDI_ProcessEnterUapsdReq*/
12268
12269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012270 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012271 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012272
12273 @param pWDICtx: pointer to the WLAN DAL context
12274 pEventData: pointer to the event information structure
12275
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 @see
12277 @return Result of the function call
12278*/
12279WDI_Status
12280WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012281(
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 WDI_ControlBlockType* pWDICtx,
12283 WDI_EventInfoType* pEventData
12284)
12285{
12286 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012288 wpt_uint16 usDataOffset = 0;
12289 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012290 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12291 wpt_uint8 bssIdx = 0;
12292
Jeff Johnson295189b2012-06-20 16:38:30 -070012293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12294
12295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 -------------------------------------------------------------------------*/
12298 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012299 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012300 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12301 {
12302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 }
12307
12308 /*-----------------------------------------------------------------------
12309 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012310 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012313 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012314 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012315 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012316 {
12317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12318 "Unable to get send buffer in Exit UAPSD req %x %x",
12319 pEventData, wdiExitUapsdRspCb);
12320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012322 }
12323
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012324 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12325
12326 wpalMemoryCopy( pSendBuffer+usDataOffset,
12327 &bssIdx,
12328 sizeof(wpt_uint8));
12329
12330 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12331 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12332
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012334 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12337 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012338}/*WDI_ProcessExitUapsdReq*/
12339
12340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012341 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012342 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012343
12344 @param pWDICtx: pointer to the WLAN DAL context
12345 pEventData: pointer to the event information structure
12346
Jeff Johnson295189b2012-06-20 16:38:30 -070012347 @see
12348 @return Result of the function call
12349*/
12350WDI_Status
12351WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012352(
Jeff Johnson295189b2012-06-20 16:38:30 -070012353 WDI_ControlBlockType* pWDICtx,
12354 WDI_EventInfoType* pEventData
12355)
12356{
12357 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12358 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012359 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 wpt_uint16 usDataOffset = 0;
12361 wpt_uint16 usSendSize = 0;
12362 tUapsdInfo uapsdAcParamsReq;
12363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12364
12365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012367 -------------------------------------------------------------------------*/
12368 if (( NULL == pEventData ) ||
12369 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12370 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12371 {
12372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012376 }
12377
12378 /*-----------------------------------------------------------------------
12379 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012380 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012381 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 sizeof(uapsdAcParamsReq),
12384 &pSendBuffer, &usDataOffset, &usSendSize))||
12385 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12386 {
12387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12388 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12389 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 }
12393
12394 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12395 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12396 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12397 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12398 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12399 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12400
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 wpalMemoryCopy( pSendBuffer+usDataOffset,
12402 &uapsdAcParamsReq,
12403 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012404
12405 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012407
12408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12412 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012413}/*WDI_ProcessSetUapsdAcParamsReq*/
12414
12415/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012418
12419 @param pWDICtx: pointer to the WLAN DAL context
12420 pEventData: pointer to the event information structure
12421
Jeff Johnson295189b2012-06-20 16:38:30 -070012422 @see
12423 @return Result of the function call
12424*/
12425WDI_Status
12426WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012427(
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 WDI_ControlBlockType* pWDICtx,
12429 WDI_EventInfoType* pEventData
12430)
12431{
12432 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12433 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012435 wpt_uint16 usDataOffset = 0;
12436 wpt_uint16 usSendSize = 0;
12437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12438
12439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012441 -------------------------------------------------------------------------*/
12442 if (( NULL == pEventData ) ||
12443 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12444 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12445 {
12446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012450 }
12451
12452 /*-----------------------------------------------------------------------
12453 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012455 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012456 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012457 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12458 &pSendBuffer, &usDataOffset, &usSendSize))||
12459 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12460 {
12461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12462 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12463 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12464 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012466 }
12467
Jeff Johnsone7245742012-09-05 17:12:55 -070012468 wpalMemoryCopy( pSendBuffer+usDataOffset,
12469 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12470 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012471
12472 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012473 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012474
12475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012476 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012477 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12479 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012480}/*WDI_ProcessUpdateUapsdParamsReq*/
12481
12482/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012483 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012484 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012485
12486 @param pWDICtx: pointer to the WLAN DAL context
12487 pEventData: pointer to the event information structure
12488
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 @see
12490 @return Result of the function call
12491*/
12492WDI_Status
12493WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012494(
Jeff Johnson295189b2012-06-20 16:38:30 -070012495 WDI_ControlBlockType* pWDICtx,
12496 WDI_EventInfoType* pEventData
12497)
12498{
12499 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12500 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 wpt_uint16 usDataOffset = 0;
12503 wpt_uint16 usSendSize = 0;
12504 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12505
12506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12507
12508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 -------------------------------------------------------------------------*/
12511 if (( NULL == pEventData ) ||
12512 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12513 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12514 {
12515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 }
12520
12521 /*-----------------------------------------------------------------------
12522 Get message buffer
12523 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012524 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012525 sizeof(halRxpFilterParams),
12526 &pSendBuffer, &usDataOffset, &usSendSize))||
12527 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12528 {
12529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12530 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12531 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 }
12535
Jeff Johnsone7245742012-09-05 17:12:55 -070012536 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012537 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12540
Jeff Johnsone7245742012-09-05 17:12:55 -070012541 wpalMemoryCopy( pSendBuffer+usDataOffset,
12542 &halRxpFilterParams,
12543 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012544
12545 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012547
12548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12552 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012553}/*WDI_ProcessConfigureRxpFilterReq*/
12554
12555/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012557 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012558
12559 @param pWDICtx: pointer to the WLAN DAL context
12560 pEventData: pointer to the event information structure
12561
Jeff Johnson295189b2012-06-20 16:38:30 -070012562 @see
12563 @return Result of the function call
12564*/
12565WDI_Status
12566WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012567(
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 WDI_ControlBlockType* pWDICtx,
12569 WDI_EventInfoType* pEventData
12570)
12571{
12572 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12573 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 wpt_uint16 usDataOffset = 0;
12576 wpt_uint16 usSendSize = 0;
12577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12578
12579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 -------------------------------------------------------------------------*/
12582 if (( NULL == pEventData ) ||
12583 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12584 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12585 {
12586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012590 }
12591
12592 /*-----------------------------------------------------------------------
12593 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012594 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12598 &pSendBuffer, &usDataOffset, &usSendSize))||
12599 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12600 {
12601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12602 "Unable to get send buffer in Set beacon filter req %x %x %x",
12603 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 }
12607
Jeff Johnsone7245742012-09-05 17:12:55 -070012608 wpalMemoryCopy( pSendBuffer+usDataOffset,
12609 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12610 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12611 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12612 &pwdiBeaconFilterParams->aFilters[0],
12613 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012614
12615 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012617
12618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012621 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12622 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012623}/*WDI_ProcessSetBeaconFilterReq*/
12624
12625/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012626 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012627 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012628
12629 @param pWDICtx: pointer to the WLAN DAL context
12630 pEventData: pointer to the event information structure
12631
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 @see
12633 @return Result of the function call
12634*/
12635WDI_Status
12636WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012637(
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 WDI_ControlBlockType* pWDICtx,
12639 WDI_EventInfoType* pEventData
12640)
12641{
12642 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12643 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012644 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 wpt_uint16 usDataOffset = 0;
12646 wpt_uint16 usSendSize = 0;
12647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12648
12649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 -------------------------------------------------------------------------*/
12652 if (( NULL == pEventData ) ||
12653 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12654 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12655 {
12656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012660 }
12661
12662 /*-----------------------------------------------------------------------
12663 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12668 &pSendBuffer, &usDataOffset, &usSendSize))||
12669 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12670 {
12671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12672 "Unable to get send buffer in remove beacon filter req %x %x %x",
12673 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012676 }
12677
Jeff Johnsone7245742012-09-05 17:12:55 -070012678 wpalMemoryCopy( pSendBuffer+usDataOffset,
12679 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12680 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012681
12682 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012683 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012684
12685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012686 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012687 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012688 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12689 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012690}
12691
12692/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012694 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012695
12696 @param pWDICtx: pointer to the WLAN DAL context
12697 pEventData: pointer to the event information structure
12698
Jeff Johnson295189b2012-06-20 16:38:30 -070012699 @see
12700 @return Result of the function call
12701*/
12702WDI_Status
12703WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012704(
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 WDI_ControlBlockType* pWDICtx,
12706 WDI_EventInfoType* pEventData
12707)
12708{
12709 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12710 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012711 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 wpt_uint16 usDataOffset = 0;
12713 wpt_uint16 usSendSize = 0;
12714 tHalRSSIThresholds rssiThresholdsReq;
12715 WDI_Status ret_status = 0;
12716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12717
12718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 -------------------------------------------------------------------------*/
12721 if (( NULL == pEventData ) ||
12722 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
12723 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
12724 {
12725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 }
12730
12731 /*-----------------------------------------------------------------------
12732 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 sizeof(rssiThresholdsReq),
12737 &pSendBuffer, &usDataOffset, &usSendSize))||
12738 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
12739 {
12740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12741 "Unable to get send buffer in remove beacon filter req %x %x %x",
12742 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
12743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012745 }
12746
Jeff Johnsone7245742012-09-05 17:12:55 -070012747 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012748 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070012749 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012750 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012753 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012754 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012755 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012756 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012759 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012760 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012761 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012762 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070012763 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070012765 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012766 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
12767
Jeff Johnsone7245742012-09-05 17:12:55 -070012768 wpalMemoryCopy( pSendBuffer+usDataOffset,
12769 &rssiThresholdsReq,
12770 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012771
12772 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012773 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012774
12775 /*-------------------------------------------------------------------------
12776 Send Set threshold req to HAL
12777 -------------------------------------------------------------------------*/
12778 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12779 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
12780 {
12781 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
12782 // req. Then as a result of processing the threshold cross ind, we trigger
12783 // a Set threshold req, then we need to indicate to WDI that it needs to
12784 // go to busy state as a result of the indication as we sent a req in the
12785 // same WDI context.
12786 // Hence expected state transition is to busy.
12787 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
12788 }
12789
12790 return ret_status;
12791}
12792
12793/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012794 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012795 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012796
12797 @param pWDICtx: pointer to the WLAN DAL context
12798 pEventData: pointer to the event information structure
12799
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 @see
12801 @return Result of the function call
12802*/
12803WDI_Status
12804WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012805(
Jeff Johnson295189b2012-06-20 16:38:30 -070012806 WDI_ControlBlockType* pWDICtx,
12807 WDI_EventInfoType* pEventData
12808)
12809{
12810 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
12811 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 wpt_uint16 usDataOffset = 0;
12814 wpt_uint16 usSendSize = 0;
12815 tHalHostOffloadReq hostOffloadParams;
12816 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012817 wpt_uint8 ucCurrentBSSSesIdx = 0;
12818 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012819
12820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12821
12822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012824 -------------------------------------------------------------------------*/
12825 if (( NULL == pEventData ) ||
12826 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
12827 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
12828 {
12829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 }
12834
12835 /*-----------------------------------------------------------------------
12836 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012840 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
12841 &pSendBuffer, &usDataOffset, &usSendSize))||
12842 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
12843 {
12844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12845 "Unable to get send buffer in host offload req %x %x %x",
12846 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
12847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012849 }
12850
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012851 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12852 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
12853 &pBSSSes);
12854 if ( NULL == pBSSSes )
12855 {
12856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012857 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012858 return WDI_STATUS_E_FAILURE;
12859 }
12860
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
12862 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070012863
Jeff Johnson295189b2012-06-20 16:38:30 -070012864 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
12865 {
12866 // ARP Offload
12867 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
12868 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
12869 4);
12870 }
12871 else
12872 {
12873 // NS Offload
12874 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
12875 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
12876 16);
12877
12878#ifdef WLAN_NS_OFFLOAD
12879 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
12880 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
12881 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
12882 16);
12883 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
12884 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
12885 16);
12886 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
12887 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
12888 16);
12889 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
12890 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
12891 16);
12892 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
12893 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
12894 6);
12895 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
12896 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
12897 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070012898
Jeff Johnson295189b2012-06-20 16:38:30 -070012899#endif // WLAN_NS_OFFLOAD
12900 }
12901
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012902 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
12903
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 // copy hostOffloadParams into pSendBuffer
12905 wpalMemoryCopy( pSendBuffer+usDataOffset,
12906 &hostOffloadParams,
12907 sizeof(hostOffloadParams));
12908
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012909 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070012910 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012911 // copy nsOffloadParams into pSendBuffer
12912 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 &nsOffloadParams,
12914 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012915 }
12916 else
12917 {
12918#ifdef WLAN_NS_OFFLOAD
12919 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
12920 {
12921 // copy nsOffloadParams into pSendBuffer
12922 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
12923 &nsOffloadParams,
12924 sizeof(nsOffloadParams));
12925 }
12926#endif
12927 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012928
12929 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012931
12932 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012933 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012935 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12936 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012937}/*WDI_ProcessHostOffloadReq*/
12938
12939/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012942
12943 @param pWDICtx: pointer to the WLAN DAL context
12944 pEventData: pointer to the event information structure
12945
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 @see
12947 @return Result of the function call
12948*/
12949WDI_Status
12950WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012951(
Jeff Johnson295189b2012-06-20 16:38:30 -070012952 WDI_ControlBlockType* pWDICtx,
12953 WDI_EventInfoType* pEventData
12954)
12955{
12956 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
12957 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 wpt_uint16 usDataOffset = 0;
12960 wpt_uint16 usSendSize = 0;
12961 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012962 wpt_uint8 ucCurrentBSSSesIdx = 0;
12963 WDI_BSSSessionType* pBSSSes = NULL;
12964
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12966
12967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012969 -------------------------------------------------------------------------*/
12970 if (( NULL == pEventData ) ||
12971 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
12972 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
12973 {
12974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12975 "Invalid parameters in Keep Alive req");
12976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012978 }
12979
12980 /*-----------------------------------------------------------------------
12981 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012982 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012985 sizeof(keepAliveReq),
12986 &pSendBuffer, &usDataOffset, &usSendSize))||
12987 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
12988 {
12989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12990 "Unable to get send buffer in keep alive req %x %x %x",
12991 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
12992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 }
12995
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012996 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12997 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
12998 &pBSSSes);
12999 if ( NULL == pBSSSes )
13000 {
13001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013002 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013003 return WDI_STATUS_E_FAILURE;
13004 }
13005
Jeff Johnson295189b2012-06-20 16:38:30 -070013006 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13007 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13008
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013009 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013010
Jeff Johnson295189b2012-06-20 16:38:30 -070013011 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13012 {
13013 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13014 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13015 HAL_IPV4_ADDR_LEN);
13016 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13017 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 wpalMemoryCopy(keepAliveReq.destMacAddr,
13020 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13021 HAL_MAC_ADDR_LEN);
13022 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013023
13024 wpalMemoryCopy( pSendBuffer+usDataOffset,
13025 &keepAliveReq,
13026 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013027
13028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13029 "Process keep alive req %d",sizeof(keepAliveReq));
13030
13031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13032 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13033
13034 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013036
13037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13038 "Sending keep alive req to HAL");
13039
13040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013042 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013043 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13044 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013045}/*WDI_ProcessKeepAliveReq*/
13046
13047
13048/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013051
13052 @param pWDICtx: pointer to the WLAN DAL context
13053 pEventData: pointer to the event information structure
13054
Jeff Johnson295189b2012-06-20 16:38:30 -070013055 @see
13056 @return Result of the function call
13057*/
13058WDI_Status
13059WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013060(
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 WDI_ControlBlockType* pWDICtx,
13062 WDI_EventInfoType* pEventData
13063)
13064{
13065 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13066 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 wpt_uint16 usDataOffset = 0;
13069 wpt_uint16 usSendSize = 0;
13070 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013071 wpt_uint8 ucCurrentBSSSesIdx = 0;
13072 WDI_BSSSessionType* pBSSSes = NULL;
13073
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13075
13076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013077 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 -------------------------------------------------------------------------*/
13079 if (( NULL == pEventData ) ||
13080 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13081 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13082 {
13083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 }
13088
13089 /*-----------------------------------------------------------------------
13090 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013091 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013093 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013094 sizeof(wowlAddBcPtrnReq),
13095 &pSendBuffer, &usDataOffset, &usSendSize))||
13096 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13097 {
13098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13099 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13100 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 }
13104
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013105 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13106 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13107 &pBSSSes);
13108 if ( NULL == pBSSSes )
13109 {
13110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013111 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013112 return WDI_STATUS_E_FAILURE;
13113 }
13114
Jeff Johnsone7245742012-09-05 17:12:55 -070013115 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013117 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013118 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013119 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013120 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013121 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13123
13124 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13125 {
13126 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13127 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13128 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13129 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13130 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13131 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13132 }
13133 else
13134 {
13135 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13136 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13137 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13138 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13139 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13140 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13141
13142 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13143 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13144 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13145 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13146 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13147 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13148 }
13149
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013150 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13151
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 wpalMemoryCopy( pSendBuffer+usDataOffset,
13153 &wowlAddBcPtrnReq,
13154 sizeof(wowlAddBcPtrnReq));
13155
13156 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013157 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013158
13159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013160 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013161 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13163 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013164}/*WDI_ProcessWowlAddBcPtrnReq*/
13165
13166/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013169
13170 @param pWDICtx: pointer to the WLAN DAL context
13171 pEventData: pointer to the event information structure
13172
Jeff Johnson295189b2012-06-20 16:38:30 -070013173 @see
13174 @return Result of the function call
13175*/
13176WDI_Status
13177WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013178(
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 WDI_ControlBlockType* pWDICtx,
13180 WDI_EventInfoType* pEventData
13181)
13182{
13183 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13184 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 wpt_uint16 usDataOffset = 0;
13187 wpt_uint16 usSendSize = 0;
13188 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013189 wpt_uint8 ucCurrentBSSSesIdx = 0;
13190 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13192
13193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 -------------------------------------------------------------------------*/
13196 if (( NULL == pEventData ) ||
13197 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13198 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13199 {
13200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 }
13205
13206 /*-----------------------------------------------------------------------
13207 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013208 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 sizeof(wowlDelBcPtrnReq),
13212 &pSendBuffer, &usDataOffset, &usSendSize))||
13213 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13214 {
13215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13216 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13217 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 }
13221
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013222 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13223 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13224 &pBSSSes);
13225 if ( NULL == pBSSSes )
13226 {
13227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013228 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013229 return WDI_STATUS_E_FAILURE;
13230 }
13231
Jeff Johnsone7245742012-09-05 17:12:55 -070013232 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013234
13235 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13236
Jeff Johnsone7245742012-09-05 17:12:55 -070013237 wpalMemoryCopy( pSendBuffer+usDataOffset,
13238 &wowlDelBcPtrnReq,
13239 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013240
13241 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013243
13244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13248 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013249}/*WDI_ProcessWowlDelBcPtrnReq*/
13250
13251/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013254
13255 @param pWDICtx: pointer to the WLAN DAL context
13256 pEventData: pointer to the event information structure
13257
Jeff Johnson295189b2012-06-20 16:38:30 -070013258 @see
13259 @return Result of the function call
13260*/
13261WDI_Status
13262WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013263(
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 WDI_ControlBlockType* pWDICtx,
13265 WDI_EventInfoType* pEventData
13266)
13267{
13268 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13269 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013270 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013271 wpt_uint16 usDataOffset = 0;
13272 wpt_uint16 usSendSize = 0;
13273 tHalWowlEnterParams wowlEnterReq;
13274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13275
13276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 -------------------------------------------------------------------------*/
13279 if (( NULL == pEventData ) ||
13280 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13281 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13282 {
13283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 }
13288
13289 /*-----------------------------------------------------------------------
13290 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013291 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013292 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 sizeof(wowlEnterReq),
13295 &pSendBuffer, &usDataOffset, &usSendSize))||
13296 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13297 {
13298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13299 "Unable to get send buffer in Wowl enter req %x %x %x",
13300 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 }
13304
Jeff Johnsone7245742012-09-05 17:12:55 -070013305 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013306 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013307 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013312 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013317 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013318 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013319 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13321
13322#ifdef WLAN_WAKEUP_EVENTS
13323 wowlEnterReq.ucWoWEAPIDRequestEnable =
13324 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13325
13326 wowlEnterReq.ucWoWEAPOL4WayEnable =
13327 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13328
13329 wowlEnterReq.ucWowNetScanOffloadMatch =
13330 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13331
13332 wowlEnterReq.ucWowGTKRekeyError =
13333 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13334
13335 wowlEnterReq.ucWoWBSSConnLoss =
13336 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13337#endif // WLAN_WAKEUP_EVENTS
13338
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013339 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13340
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13342 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13343 sizeof(tSirMacAddr));
13344
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 wpalMemoryCopy( pSendBuffer+usDataOffset,
13346 &wowlEnterReq,
13347 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013348
13349 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013350 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013351
13352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013353 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013354 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013355 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13356 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013357}/*WDI_ProcessWowlEnterReq*/
13358
13359/**
13360 @brief Process Wowl exit Request function (called when Main FSM
13361 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013362
13363 @param pWDICtx: pointer to the WLAN DAL context
13364 pEventData: pointer to the event information structure
13365
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 @see
13367 @return Result of the function call
13368*/
13369WDI_Status
13370WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013371(
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 WDI_ControlBlockType* pWDICtx,
13373 WDI_EventInfoType* pEventData
13374)
13375{
13376 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013377 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 wpt_uint16 usDataOffset = 0;
13380 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013381 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13383
13384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 -------------------------------------------------------------------------*/
13387 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013388 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13390 {
13391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013395 }
13396
13397 /*-----------------------------------------------------------------------
13398 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013402 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013404 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 {
13406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13407 "Unable to get send buffer in Wowl Exit req %x %x",
13408 pEventData, wdiWowlExitCb);
13409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013411 }
13412
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013413 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13414
13415 wpalMemoryCopy( pSendBuffer+usDataOffset,
13416 &wowlExitparams,
13417 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013419 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13422 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013423}/*WDI_ProcessWowlExitReq*/
13424
13425/**
13426 @brief Process Configure Apps Cpu Wakeup State Request function
13427 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013428
13429 @param pWDICtx: pointer to the WLAN DAL context
13430 pEventData: pointer to the event information structure
13431
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 @see
13433 @return Result of the function call
13434*/
13435WDI_Status
13436WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013437(
Jeff Johnson295189b2012-06-20 16:38:30 -070013438 WDI_ControlBlockType* pWDICtx,
13439 WDI_EventInfoType* pEventData
13440)
13441{
13442 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13443 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 wpt_uint16 usDataOffset = 0;
13446 wpt_uint16 usSendSize = 0;
13447 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13449
13450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 -------------------------------------------------------------------------*/
13453 if (( NULL == pEventData ) ||
13454 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13455 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13456 {
13457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 }
13462
13463 /*-----------------------------------------------------------------------
13464 Get message buffer
13465 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 sizeof(halCfgAppsCpuWakeupStateReqParams),
13468 &pSendBuffer, &usDataOffset, &usSendSize))||
13469 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13470 {
13471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13472 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13473 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 }
13477
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13480
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 wpalMemoryCopy( pSendBuffer+usDataOffset,
13482 &halCfgAppsCpuWakeupStateReqParams,
13483 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013484
13485 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013487
13488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013491 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13492 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13493 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013494}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13495
13496#ifdef WLAN_FEATURE_VOWIFI_11R
13497/**
13498 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13499 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013500
13501 @param pWDICtx: pointer to the WLAN DAL context
13502 pEventData: pointer to the event information structure
13503
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 @see
13505 @return Result of the function call
13506*/
13507WDI_Status
13508WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013509(
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 WDI_ControlBlockType* pWDICtx,
13511 WDI_EventInfoType* pEventData
13512)
13513{
13514 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13515 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013516 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013518 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013519 wpt_uint16 usDataOffset = 0;
13520 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013521 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 wpt_macAddr macBSSID;
13523 tAggrAddTsReq halAggrAddTsReq;
13524 int i;
13525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13526
13527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013529 -------------------------------------------------------------------------*/
13530 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13531 ( NULL == pEventData->pCBfnc ))
13532 {
13533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 }
13538 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13539 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13540 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13541 /*-------------------------------------------------------------------------
13542 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013543 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 -------------------------------------------------------------------------*/
13545 wpalMutexAcquire(&pWDICtx->wptMutex);
13546
13547 /*------------------------------------------------------------------------
13548 Find the BSS for which the request is made and identify WDI session
13549 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013550 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13551 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 &macBSSID))
13553 {
13554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13555 "This station does not exist in the WDI Station Table %d");
13556 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 }
13559
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13561 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13564 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13565 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013566
13567 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013568 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013569 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013570
Jeff Johnson295189b2012-06-20 16:38:30 -070013571 /*------------------------------------------------------------------------
13572 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 ------------------------------------------------------------------------*/
13575 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13576 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13578 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13579 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013580
Jeff Johnsone7245742012-09-05 17:12:55 -070013581 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013584 }
13585
13586 wpalMutexRelease(&pWDICtx->wptMutex);
13587 /*-----------------------------------------------------------------------
13588 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013589 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013591 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 sizeof(tAggrAddTsParams),
13593 &pSendBuffer, &usDataOffset, &usSendSize))||
13594 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13595 {
13596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13597 "Unable to get send buffer in set bss key req %x %x %x",
13598 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013601 }
13602
Jeff Johnsone7245742012-09-05 17:12:55 -070013603 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013604 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013605 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13607
13608 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13609 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013610 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013611 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13616 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013617 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13619 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13622 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013623 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13625 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013626 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13628 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013629 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013630 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13631 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13634 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013635 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013636 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13637 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013638 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013639 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013640 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013641 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013642
13643
13644 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013650 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013651 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013652 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013653 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013654 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013655 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013656 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013660 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013661 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013664 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013666 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013667 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013669 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013671 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013672 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013673 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13674 }
13675
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 wpalMemoryCopy( pSendBuffer+usDataOffset,
13677 &halAggrAddTsReq,
13678 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013679
13680 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013681 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013682
13683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070013688 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013689}/*WDI_ProcessAggrAddTSpecReq*/
13690#endif /* WLAN_FEATURE_VOWIFI_11R */
13691
13692/**
13693 @brief Process Shutdown Request function (called when Main FSM
13694 allows it)
13695
13696 @param pWDICtx: pointer to the WLAN DAL context
13697 pEventData: pointer to the event information structure
13698
13699 @see
13700 @return Result of the function call
13701*/
13702WDI_Status
13703WDI_ProcessShutdownReq
13704(
13705 WDI_ControlBlockType* pWDICtx,
13706 WDI_EventInfoType* pEventData
13707 )
13708{
13709 wpt_status wptStatus;
13710
13711
13712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13713
13714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 -------------------------------------------------------------------------*/
13717 if ( NULL == pEventData )
13718 {
13719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013721 WDI_ASSERT(0);
13722 return WDI_STATUS_E_FAILURE;
13723 }
13724
13725 wpalMutexAcquire(&pWDICtx->wptMutex);
13726
13727
13728 gWDIInitialized = eWLAN_PAL_FALSE;
13729 /*! TO DO: stop the data services */
13730 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13731 {
13732 /*Stop the STA Table !UT- check this logic again
13733 It is safer to do it here than on the response - because a stop is imminent*/
13734 WDI_STATableStop(pWDICtx);
13735
13736 /* Stop Transport Driver, DXE */
13737 WDTS_Stop(pWDICtx);
13738 }
13739
13740 /*Clear all pending request*/
13741 WDI_ClearPendingRequests(pWDICtx);
13742 /* Close Data transport*/
13743 /* FTM mode does not open Data Path */
13744 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13745 {
13746 WDTS_Close(pWDICtx);
13747 }
13748 /*Close the STA Table !UT- check this logic again*/
13749 WDI_STATableClose(pWDICtx);
13750 /*close the PAL */
13751 wptStatus = wpalClose(pWDICtx->pPALContext);
13752 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13753 {
13754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13755 "Failed to wpal Close %d", wptStatus);
13756 WDI_ASSERT(0);
13757 }
13758
13759 /*Transition back to init state*/
13760 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
13761
13762 wpalMutexRelease(&pWDICtx->wptMutex);
13763
13764 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070013766
13767
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013769}/*WDI_ProcessShutdownReq*/
13770
13771/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070013773========================================================================*/
13774
13775/**
13776 @brief Process Start Response function (called when a response
13777 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013778
13779 @param pWDICtx: pointer to the WLAN DAL context
13780 pEventData: pointer to the event information structure
13781
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 @see
13783 @return Result of the function call
13784*/
13785WDI_Status
13786WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013787(
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 WDI_ControlBlockType* pWDICtx,
13789 WDI_EventInfoType* pEventData
13790)
13791{
13792 WDI_StartRspParamsType wdiRspParams;
13793 WDI_StartRspCb wdiStartRspCb = NULL;
13794
13795 tHalMacStartRspParams* startRspParams;
13796
13797#ifndef HAL_SELF_STA_PER_BSS
13798 WDI_AddStaParams wdiAddSTAParam = {0};
13799#endif
13800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13801
Jeff Johnsone7245742012-09-05 17:12:55 -070013802 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013804 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013805 -------------------------------------------------------------------------*/
13806 if (( NULL == pEventData ) ||
13807 ( NULL == pEventData->pEventData) ||
13808 ( NULL == wdiStartRspCb ))
13809 {
13810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013814 }
13815
13816 /*-------------------------------------------------------------------------
13817 Extract response and send it to UMAC
13818 -------------------------------------------------------------------------*/
13819 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
13820 {
13821 // not enough data was received
13822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13823 "Invalid response length in Start Resp Expect %x Rcvd %x",
13824 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
13825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 }
13828
13829 /*-------------------------------------------------------------------------
13830 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013831 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 -------------------------------------------------------------------------*/
13833 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
13834
13835 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
13836 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
13837 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
13838 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
13839 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
13840 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
13841 wdiRspParams.wlanReportedVersion.major =
13842 startRspParams->wcnssWlanVersion.major;
13843 wdiRspParams.wlanReportedVersion.minor =
13844 startRspParams->wcnssWlanVersion.minor;
13845 wdiRspParams.wlanReportedVersion.version =
13846 startRspParams->wcnssWlanVersion.version;
13847 wdiRspParams.wlanReportedVersion.revision =
13848 startRspParams->wcnssWlanVersion.revision;
13849 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
13850 startRspParams->wcnssCrmVersionString,
13851 sizeof(wdiRspParams.wcnssSoftwareVersion));
13852 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
13853 startRspParams->wcnssWlanVersionString,
13854 sizeof(wdiRspParams.wcnssHardwareVersion));
13855 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
13856
Pratik Bhalgatd4404592012-11-22 17:49:14 +053013857 /*Save the HAL Version*/
13858 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
13859
Jeff Johnson295189b2012-06-20 16:38:30 -070013860 wpalMutexAcquire(&pWDICtx->wptMutex);
13861 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
13862 {
13863 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
13864
13865 /*Cache the start response for further use*/
13866 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070013867 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 sizeof(pWDICtx->wdiCachedStartRspParams));
13869
13870 }
13871 else
13872 {
13873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13874 "Failed to start device with status %s(%d)",
13875 WDI_getHALStatusMsgString(startRspParams->status),
13876 startRspParams->status);
13877
13878 /*Set the expected state transition to stopped - because the start has
13879 failed*/
13880 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13881
13882 wpalMutexRelease(&pWDICtx->wptMutex);
13883
13884 /*Notify UMAC*/
13885 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070013886
Jeff Johnson295189b2012-06-20 16:38:30 -070013887 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
13888
13889 /*Although the response is an error - it was processed by our function
13890 so as far as the caller is concerned this is a succesful reponse processing*/
13891 return WDI_STATUS_SUCCESS;
13892 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013893
Jeff Johnson295189b2012-06-20 16:38:30 -070013894 wpalMutexRelease(&pWDICtx->wptMutex);
13895
13896 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
13897 {
13898 /* FTM mode does not need to execute below */
13899 /* Notify UMAC */
13900 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13901 return WDI_STATUS_SUCCESS;
13902 }
13903
13904 /* START the Data transport */
13905 WDTS_startTransport(pWDICtx);
13906
13907 /*Start the STA Table !- check this logic again*/
13908 WDI_STATableStart(pWDICtx);
13909
13910#ifndef HAL_SELF_STA_PER_BSS
13911 /* Store the Self STA Index */
13912 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
13913
13914 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
13915 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
13916 WDI_MAC_ADDR_LEN);
13917
13918 /* At this point add the self-STA */
13919
13920 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
13921 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
13922 /*! TO DO: wdiAddSTAParam.dpuSig */
13923 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
13924 /*! TO DO: wdiAddSTAParam.ucHTCapable */
13925 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
13926
13927 //all DPU indices are the same for self STA
13928 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
13929 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070013930 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070013931 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
13932 WDI_MAC_ADDR_LEN);
13933 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
13934 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
13935
13936 /* Note: Since we don't get an explicit config STA request for self STA, we
13937 add the self STA upon receiving the Start response message. But the
13938 self STA entry in the table is deleted when WDI gets an explicit delete STA
13939 request */
13940 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
13941#endif
13942
13943 /*Notify UMAC*/
13944 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13945
Jeff Johnsone7245742012-09-05 17:12:55 -070013946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013947}/*WDI_ProcessStartRsp*/
13948
13949
13950/**
13951 @brief Process Stop Response function (called when a response
13952 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013953
13954 @param pWDICtx: pointer to the WLAN DAL context
13955 pEventData: pointer to the event information structure
13956
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 @see
13958 @return Result of the function call
13959*/
13960WDI_Status
13961WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013962(
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 WDI_ControlBlockType* pWDICtx,
13964 WDI_EventInfoType* pEventData
13965)
13966{
13967 WDI_Status wdiStatus;
13968 WDI_StopRspCb wdiStopRspCb = NULL;
13969
Jeff Johnsone7245742012-09-05 17:12:55 -070013970 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13972
Jeff Johnsone7245742012-09-05 17:12:55 -070013973 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 -------------------------------------------------------------------------*/
13977 if (( NULL == pEventData ) ||
13978 ( NULL == pEventData->pEventData) ||
13979 ( NULL == wdiStopRspCb ))
13980 {
13981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 }
13986
13987 /*-------------------------------------------------------------------------
13988 Extract response and send it to UMAC
13989 -------------------------------------------------------------------------*/
13990 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
13991 {
13992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13993 "Invalid response length in Stop Resp %x %x",
13994 pEventData->uEventDataSize);
13995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013997 }
13998
13999 /*-------------------------------------------------------------------------
14000 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14004 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 sizeof(halMacStopRspMsg.stopRspParams));
14006
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014008
14009 wpalMutexAcquire(&pWDICtx->wptMutex);
14010
14011 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 --------------------------------------------------------------------------*/
14014 if ( WDI_STATUS_SUCCESS != wdiStatus )
14015 {
14016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14017 "Failed to stop the device with status %s (%d)",
14018 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14019 halMacStopRspMsg.stopRspParams.status);
14020
Jeff Johnsone7245742012-09-05 17:12:55 -070014021 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14022
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014026
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14028
14029 /*Transition now as WDI may get preempted imediately after it sends
14030 up the Stop Response and it will not get to process the state transition
14031 from Main Rsp function*/
14032 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14033 wpalMutexRelease(&pWDICtx->wptMutex);
14034
14035 /*! TO DO: - STOP the Data transport */
14036
14037 /*Notify UMAC*/
14038 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14039
Jeff Johnsone7245742012-09-05 17:12:55 -070014040 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014041}/*WDI_ProcessStopRsp*/
14042
14043/**
14044 @brief Process Close Rsp function (called when a response
14045 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014046
14047 @param pWDICtx: pointer to the WLAN DAL context
14048 pEventData: pointer to the event information structure
14049
Jeff Johnson295189b2012-06-20 16:38:30 -070014050 @see
14051 @return Result of the function call
14052*/
14053WDI_Status
14054WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014055(
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 WDI_ControlBlockType* pWDICtx,
14057 WDI_EventInfoType* pEventData
14058)
14059{
14060 /*There is no close response comming from HAL - function just kept for
14061 simmetry */
14062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014064}/*WDI_ProcessCloseRsp*/
14065
14066
14067/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014068 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014069============================================================================*/
14070
14071/**
14072 @brief Process Init Scan Rsp function (called when a response
14073 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014074
14075 @param pWDICtx: pointer to the WLAN DAL context
14076 pEventData: pointer to the event information structure
14077
Jeff Johnson295189b2012-06-20 16:38:30 -070014078 @see
14079 @return Result of the function call
14080*/
14081WDI_Status
14082WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014083(
Jeff Johnson295189b2012-06-20 16:38:30 -070014084 WDI_ControlBlockType* pWDICtx,
14085 WDI_EventInfoType* pEventData
14086)
14087{
14088 WDI_Status wdiStatus;
14089 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014091 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14093
14094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 -------------------------------------------------------------------------*/
14097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14098 ( NULL == pEventData->pEventData))
14099 {
14100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 }
14105
14106 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14107 if( NULL == wdiInitScanRspCb)
14108 {
14109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014110 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014113 }
14114
14115 /*-------------------------------------------------------------------------
14116 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14120 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014121 sizeof(halInitScanRspMsg.initScanRspParams));
14122
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014124
14125 if ( pWDICtx->bInBmps )
14126 {
14127 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014128 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14129 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14131 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14132 WDI_ASSERT(0);
14133 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 }
14135
14136 /*Notify UMAC*/
14137 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14138
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014140}/*WDI_ProcessInitScanRsp*/
14141
14142
14143/**
14144 @brief Process Start Scan Rsp function (called when a response
14145 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014146
14147 @param pWDICtx: pointer to the WLAN DAL context
14148 pEventData: pointer to the event information structure
14149
Jeff Johnson295189b2012-06-20 16:38:30 -070014150 @see
14151 @return Result of the function call
14152*/
14153WDI_Status
14154WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014155(
Jeff Johnson295189b2012-06-20 16:38:30 -070014156 WDI_ControlBlockType* pWDICtx,
14157 WDI_EventInfoType* pEventData
14158)
14159{
14160 WDI_StartScanRspParamsType wdiStartScanParams;
14161 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014162
14163 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14165
14166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014168 -------------------------------------------------------------------------*/
14169 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14170 ( NULL == pEventData->pEventData))
14171 {
14172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014176 }
14177
14178 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14179 if( NULL == wdiStartScanRspCb)
14180 {
14181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014182 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 }
14186
14187 /*-------------------------------------------------------------------------
14188 Extract response and send it to UMAC
14189 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014190 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14191 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 sizeof(halStartScanRspMsg.startScanRspParams));
14193
14194 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14195 halStartScanRspMsg.startScanRspParams.status);
14196#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014197 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014198 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014199 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014200 halStartScanRspMsg.startScanRspParams.startTSF,
14201 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014202#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014203
14204 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14205 {
14206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14207 "Start scan failed with status %s (%d)",
14208 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14209 halStartScanRspMsg.startScanRspParams.status);
14210 /* send the status to UMAC, don't return from here*/
14211 }
14212
14213 /*Notify UMAC*/
14214 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14215
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014217
14218}/*WDI_ProcessStartScanRsp*/
14219
14220
14221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014222 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014223 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014224
14225 @param pWDICtx: pointer to the WLAN DAL context
14226 pEventData: pointer to the event information structure
14227
Jeff Johnson295189b2012-06-20 16:38:30 -070014228 @see
14229 @return Result of the function call
14230*/
14231WDI_Status
14232WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014233(
Jeff Johnson295189b2012-06-20 16:38:30 -070014234 WDI_ControlBlockType* pWDICtx,
14235 WDI_EventInfoType* pEventData
14236)
14237{
14238 WDI_Status wdiStatus;
14239 tHalEndScanRspMsg halEndScanRspMsg;
14240 WDI_EndScanRspCb wdiEndScanRspCb;
14241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14242
14243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 -------------------------------------------------------------------------*/
14246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14247 ( NULL == pEventData->pEventData))
14248 {
14249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 }
14254
14255 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14256
14257 /*-------------------------------------------------------------------------
14258 Extract response and send it to UMAC
14259 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014260 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14261 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 sizeof(halEndScanRspMsg.endScanRspParams));
14263
Jeff Johnsone7245742012-09-05 17:12:55 -070014264 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014265
14266 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14267 {
14268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14269 "End Scan failed with status %s (%d )",
14270 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14271 halEndScanRspMsg.endScanRspParams.status);
14272 /* send the status to UMAC, don't return from here*/
14273 }
14274
14275 /*Notify UMAC*/
14276 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14277
Jeff Johnsone7245742012-09-05 17:12:55 -070014278 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014279}/*WDI_ProcessEndScanRsp*/
14280
14281
14282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014283 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014285
14286 @param pWDICtx: pointer to the WLAN DAL context
14287 pEventData: pointer to the event information structure
14288
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 @see
14290 @return Result of the function call
14291*/
14292WDI_Status
14293WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014294(
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 WDI_ControlBlockType* pWDICtx,
14296 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014297)
Jeff Johnson295189b2012-06-20 16:38:30 -070014298{
14299 WDI_Status wdiStatus;
14300 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014301
14302 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14304
14305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014307 -------------------------------------------------------------------------*/
14308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14309 ( NULL == pEventData->pEventData))
14310 {
14311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 }
14316
14317 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14318
14319 /*-------------------------------------------------------------------------
14320 Extract response and send it to UMAC
14321 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14323 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14325
Jeff Johnsone7245742012-09-05 17:12:55 -070014326 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014327
14328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 halFinishScanRspMsg.finishScanRspParams.status);
14331
14332 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14333 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14334 {
14335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14336 "Finish Scan failed with status %s (%d)",
14337 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14338 halFinishScanRspMsg.finishScanRspParams.status);
14339 /* send the status to UMAC, don't return from here*/
14340 }
14341
14342 /*Notify UMAC*/
14343 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14344
Jeff Johnsone7245742012-09-05 17:12:55 -070014345 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014346}/*WDI_ProcessFinishScanRsp*/
14347
14348/**
14349 @brief Process Join Response function (called when a response
14350 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014351
14352 @param pWDICtx: pointer to the WLAN DAL context
14353 pEventData: pointer to the event information structure
14354
Jeff Johnson295189b2012-06-20 16:38:30 -070014355 @see
14356 @return Result of the function call
14357*/
14358WDI_Status
14359WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014360(
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 WDI_ControlBlockType* pWDICtx,
14362 WDI_EventInfoType* pEventData
14363)
14364{
14365 WDI_Status wdiStatus;
14366 WDI_JoinRspCb wdiJoinRspCb;
14367 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014368
14369 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14371
14372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 -------------------------------------------------------------------------*/
14375 if (( NULL == pWDICtx ) ||
14376 ( NULL == pWDICtx->pfncRspCB ) ||
14377 ( NULL == pEventData ) ||
14378 ( NULL == pEventData->pEventData))
14379 {
14380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 }
14385
14386 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14387
14388 /*-------------------------------------------------------------------------
14389 Extract response and send it to UMAC
14390 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014391 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14392 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 sizeof(halJoinRspMsg.joinRspParams));
14394
Jeff Johnsone7245742012-09-05 17:12:55 -070014395 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014396
14397 wpalMutexAcquire(&pWDICtx->wptMutex);
14398
14399 /*-----------------------------------------------------------------------
14400 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14405 {
14406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14408 "association no longer in progress %d - mysterious HAL response",
14409 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014410
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014412 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 }
14415
14416 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14417
14418 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 -----------------------------------------------------------------------*/
14421 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14422 {
14423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14424 "Join only allowed in Joining state - failure state is %d "
14425 "strange HAL response", pBSSSes->wdiAssocState);
14426
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14428
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014431 }
14432
14433
14434 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 -----------------------------------------------------------------------*/
14437 if ( WDI_STATUS_SUCCESS != wdiStatus )
14438 {
14439 /*Association was failed by HAL - remove session*/
14440 WDI_DeleteSession(pWDICtx, pBSSSes);
14441
14442 /*Association no longer in progress */
14443 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14444
14445 /*Association no longer in progress - prepare pending assoc for processing*/
14446 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014447
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 }
14449 else
14450 {
14451 /*Transition to state Joining - this may be redundant as we are supposed
14452 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014453 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 }
14455
14456 wpalMutexRelease(&pWDICtx->wptMutex);
14457
14458 /*Notify UMAC*/
14459 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14460
Jeff Johnsone7245742012-09-05 17:12:55 -070014461 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014462}/*WDI_ProcessJoinRsp*/
14463
14464
14465/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014468
14469 @param pWDICtx: pointer to the WLAN DAL context
14470 pEventData: pointer to the event information structure
14471
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 @see
14473 @return Result of the function call
14474*/
14475WDI_Status
14476WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014477(
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 WDI_ControlBlockType* pWDICtx,
14479 WDI_EventInfoType* pEventData
14480)
14481{
14482 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14483 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 WDI_BSSSessionType* pBSSSes = NULL;
14486
Jeff Johnsone7245742012-09-05 17:12:55 -070014487 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014488 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14489 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014490
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14492
14493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014495 -------------------------------------------------------------------------*/
14496 if (( NULL == pEventData ) ||
14497 ( NULL == pEventData->pEventData))
14498 {
14499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 }
14504
14505 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14506
14507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014508 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14511 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 sizeof(halConfigBssRspMsg.configBssRspParams));
14513
14514 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14515 halConfigBssRspMsg.configBssRspParams.status);
14516 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14517 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14520 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014521
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014523
14524 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014526
14527 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014529
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014531
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014533 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014534 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14535 #endif
14536 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14537 halConfigBssRspMsg.configBssRspParams.staMac,
14538 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014539
Jeff Johnson295189b2012-06-20 16:38:30 -070014540 wpalMutexAcquire(&pWDICtx->wptMutex);
14541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014542 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014544 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14545 wdiConfigBSSParams.macBSSID,
14546 &pBSSSes);
14547
Jeff Johnson295189b2012-06-20 16:38:30 -070014548 /*-----------------------------------------------------------------------
14549 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 -----------------------------------------------------------------------*/
14552 if ( NULL == pBSSSes )
14553 {
14554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14555 "Association sequence for this BSS does not yet exist "
14556 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014557
14558 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14559
Jeff Johnson295189b2012-06-20 16:38:30 -070014560 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014561 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014563
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 /*Save data for this BSS*/
14565 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14566 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014567 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014569 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014570 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014571 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014575 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14577 pBSSSes->bcastStaIdx =
14578 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014579
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014581
Jeff Johnson295189b2012-06-20 16:38:30 -070014582 /*-------------------------------------------------------------------------
14583 Add Peer STA
14584 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14587 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014588
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 wdiAddSTAParam.ucHTCapable =
14593 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14594 wdiAddSTAParam.ucStaType =
14595 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14596
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14599 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014601
14602 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14603 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14604 WDI_MAC_ADDR_LEN);
14605
Jeff Johnson295189b2012-06-20 16:38:30 -070014606 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014608 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014609 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014612 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014613 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014615 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014619
Jeff Johnson295189b2012-06-20 16:38:30 -070014620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14621 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014622
Jeff Johnson295189b2012-06-20 16:38:30 -070014623 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14624 /*-------------------------------------------------------------------------
14625 Add Broadcast STA only in AP mode
14626 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 WDI_BSS_OPERATIONAL_MODE_AP )
14629 {
14630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14631 "Add BCAST STA to table for index: %d",
14632 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014633
14634 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014636
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14638 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14639 }
14640 wpalMutexRelease(&pWDICtx->wptMutex);
14641 }
14642 else
14643 {
14644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14645 "Config BSS RSP failed with status : %s(%d)",
14646 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014647 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014648 halConfigBssRspMsg.configBssRspParams.status);
14649
Jeff Johnsone7245742012-09-05 17:12:55 -070014650
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 /*Association was failed by HAL - remove session*/
14652 WDI_DeleteSession(pWDICtx, pBSSSes);
14653
14654 /*Association no longer in progress */
14655 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14656
14657 /*Association no longer in progress - prepare pending assoc for processing*/
14658 WDI_DequeueAssocRequest(pWDICtx);
14659
14660 }
14661
14662 /*Notify UMAC*/
14663 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14664
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014666}/*WDI_ProcessConfigBSSRsp*/
14667
14668
14669/**
14670 @brief Process Del BSS Response function (called when a response
14671 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014672
14673 @param pWDICtx: pointer to the WLAN DAL context
14674 pEventData: pointer to the event information structure
14675
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 @see
14677 @return Result of the function call
14678*/
14679WDI_Status
14680WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014681(
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 WDI_ControlBlockType* pWDICtx,
14683 WDI_EventInfoType* pEventData
14684)
14685{
14686 WDI_DelBSSRspParamsType wdiDelBSSParams;
14687 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 WDI_BSSSessionType* pBSSSes = NULL;
14690
Jeff Johnsone7245742012-09-05 17:12:55 -070014691 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14693
14694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 -------------------------------------------------------------------------*/
14697 if (( NULL == pEventData ) ||
14698 ( NULL == pEventData->pEventData))
14699 {
14700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014704 }
14705
14706 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
14707
14708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014709 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014710 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014711 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
14712 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 sizeof(halDelBssRspMsg.deleteBssRspParams));
14714
14715
14716 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014718
14719 wpalMutexAcquire(&pWDICtx->wptMutex);
14720
14721 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
14725 halDelBssRspMsg.deleteBssRspParams.bssIdx,
14726 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014727
14728 /*-----------------------------------------------------------------------
14729 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 -----------------------------------------------------------------------*/
14732 if ( NULL == pBSSSes )
14733 {
14734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14735 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014736 "association no longer in progress - mysterious HAL response");
14737
14738 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14739
14740 wpalMutexRelease(&pWDICtx->wptMutex);
14741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014743
14744 /*Extract BSSID for the response to UMAC*/
14745 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
14746 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
14747
14748 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
14749
14750 /*-----------------------------------------------------------------------
14751 The current session will be deleted
14752 -----------------------------------------------------------------------*/
14753 WDI_DeleteSession(pWDICtx, pBSSSes);
14754
14755
14756 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
14757 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014759 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014760 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014761
14762 /* Delete the STA's in this BSS */
14763 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
14764
Jeff Johnson295189b2012-06-20 16:38:30 -070014765 wpalMutexRelease(&pWDICtx->wptMutex);
14766
14767 /*Notify UMAC*/
14768 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
14769
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014771}/*WDI_ProcessDelBSSRsp*/
14772
14773/**
14774 @brief Process Post Assoc Rsp function (called when a response
14775 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014776
14777 @param pWDICtx: pointer to the WLAN DAL context
14778 pEventData: pointer to the event information structure
14779
Jeff Johnson295189b2012-06-20 16:38:30 -070014780 @see
14781 @return Result of the function call
14782*/
14783WDI_Status
14784WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014785(
Jeff Johnson295189b2012-06-20 16:38:30 -070014786 WDI_ControlBlockType* pWDICtx,
14787 WDI_EventInfoType* pEventData
14788)
14789{
14790 WDI_PostAssocRspParamsType wdiPostAssocParams;
14791 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014792 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14796
14797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 -------------------------------------------------------------------------*/
14800 if (( NULL == pEventData ) ||
14801 ( NULL == pEventData->pEventData))
14802 {
14803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014807 }
14808
14809 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
14810
14811 /*-------------------------------------------------------------------------
14812 Extract response and send it to UMAC
14813 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014814 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
14815 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 sizeof(halPostAssocRspMsg.postAssocRspParams));
14817
14818 /*Extract the Post Assoc STA Params */
14819
Jeff Johnsone7245742012-09-05 17:12:55 -070014820 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014822 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014823 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14826
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 wdiPostAssocParams.wdiStatus =
14828 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014829
14830 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14831 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
14833 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 WDI_MAC_ADDR_LEN);
14835
14836 /* Extract Post Assoc BSS Params */
14837
Jeff Johnsone7245742012-09-05 17:12:55 -070014838 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
14839 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
14840 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014841
14842 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14843 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014844 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
14846 .macSTA, WDI_MAC_ADDR_LEN);
14847
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14850
Jeff Johnsone7245742012-09-05 17:12:55 -070014851 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014852 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
14853
14854 wdiPostAssocParams.bssParams.ucBSSIdx =
14855 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14856
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
14859
14860 wpalMutexAcquire(&pWDICtx->wptMutex);
14861
14862 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070014867 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014868
14869 /*-----------------------------------------------------------------------
14870 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 -----------------------------------------------------------------------*/
14873 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14876 {
14877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14878 "Association sequence for this BSS does not yet exist or "
14879 "association no longer in progress - mysterious HAL response");
14880
Jeff Johnsone7245742012-09-05 17:12:55 -070014881 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14882
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 }
14886
14887 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 -----------------------------------------------------------------------*/
14890 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14891 {
14892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14893 "Post Assoc not allowed before JOIN - failing request "
14894 "strange HAL response");
14895
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14897
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 }
14901
14902 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 -----------------------------------------------------------------------*/
14905 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
14906 {
14907 /*Association was failed by HAL - remove session*/
14908 WDI_DeleteSession(pWDICtx, pBSSSes);
14909 }
14910 else
14911 {
14912 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014914
14915 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014916 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014918 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
14924
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14927 }
14928
14929 /*Association no longer in progress */
14930 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14931
14932 /*Association no longer in progress - prepare pending assoc for processing*/
14933 WDI_DequeueAssocRequest(pWDICtx);
14934
14935 wpalMutexRelease(&pWDICtx->wptMutex);
14936
14937 /*Notify UMAC*/
14938 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
14939
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014941}/*WDI_ProcessPostAssocRsp*/
14942
14943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014946
14947 @param pWDICtx: pointer to the WLAN DAL context
14948 pEventData: pointer to the event information structure
14949
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 @see
14951 @return Result of the function call
14952*/
14953WDI_Status
14954WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014955(
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 WDI_ControlBlockType* pWDICtx,
14957 WDI_EventInfoType* pEventData
14958)
14959{
14960 WDI_DelSTARspParamsType wdiDelSTARsp;
14961 WDI_DelSTARspCb wdiDelSTARspCb;
14962 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014963 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14965
14966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 -------------------------------------------------------------------------*/
14969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14970 ( NULL == pEventData->pEventData))
14971 {
14972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 }
14977
14978 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
14979
14980 /*-------------------------------------------------------------------------
14981 Extract response and send it to UMAC
14982 -------------------------------------------------------------------------*/
14983 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 sizeof(halDelStaRspMsg.delStaRspParams));
14986
14987 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014988 wdiDelSTARsp.wdiStatus =
14989 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014990
14991 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
14992
14993 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
14994 if(staType == WDI_STA_ENTRY_SELF)
14995 {
14996 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
14997
14998 /* At this point add the self-STA */
14999
15000 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15001 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15002 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15003
15004#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15005#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15006
15007 //all DPU indices are the same for self STA
15008 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15009 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15010 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15011 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15012 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15013 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015014
15015 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 }
15017 else
15018 {
15019 //Delete the station in the table
15020 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15021 }
15022
15023 /*Notify UMAC*/
15024 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15025
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015027}/*WDI_ProcessDelSTARsp*/
15028
15029
15030/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015031 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015032==========================================================================*/
15033
15034/**
15035 @brief Process Set BSS Key Rsp function (called when a response
15036 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015037
15038 @param pWDICtx: pointer to the WLAN DAL context
15039 pEventData: pointer to the event information structure
15040
Jeff Johnson295189b2012-06-20 16:38:30 -070015041 @see
15042 @return Result of the function call
15043*/
15044WDI_Status
15045WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015046(
Jeff Johnson295189b2012-06-20 16:38:30 -070015047 WDI_ControlBlockType* pWDICtx,
15048 WDI_EventInfoType* pEventData
15049)
15050{
15051 WDI_Status wdiStatus;
15052 eHalStatus halStatus;
15053 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15055
15056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 -------------------------------------------------------------------------*/
15059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15060 ( NULL == pEventData->pEventData))
15061 {
15062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015066 }
15067
15068 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15069
15070 /*-------------------------------------------------------------------------
15071 Extract response and send it to UMAC
15072 -------------------------------------------------------------------------*/
15073 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015074 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015075
15076 if ( eHAL_STATUS_SUCCESS != halStatus )
15077 {
15078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15079 "Set BSS Key failed with status %s (%d)",
15080 WDI_getHALStatusMsgString(halStatus),
15081 halStatus);
15082 /* send the status to UMAC, don't return from here*/
15083 }
15084
15085 /*Notify UMAC*/
15086 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15087
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015089}/*WDI_ProcessSetBssKeyRsp*/
15090
15091/**
15092 @brief Process Remove BSS Key Rsp function (called when a response
15093 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015094
15095 @param pWDICtx: pointer to the WLAN DAL context
15096 pEventData: pointer to the event information structure
15097
Jeff Johnson295189b2012-06-20 16:38:30 -070015098 @see
15099 @return Result of the function call
15100*/
15101WDI_Status
15102WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015103(
Jeff Johnson295189b2012-06-20 16:38:30 -070015104 WDI_ControlBlockType* pWDICtx,
15105 WDI_EventInfoType* pEventData
15106)
15107{
15108 WDI_Status wdiStatus;
15109 eHalStatus halStatus;
15110 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15112
15113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 -------------------------------------------------------------------------*/
15116 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15117 ( NULL == pEventData->pEventData))
15118 {
15119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015120 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015122 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015123 }
15124
15125 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15126
15127 /*-------------------------------------------------------------------------
15128 Extract response and send it to UMAC
15129 -------------------------------------------------------------------------*/
15130 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015131 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015132
15133 if ( eHAL_STATUS_SUCCESS != halStatus )
15134 {
15135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15136 "Remove BSS Key failed with status %s (%d )",
15137 WDI_getHALStatusMsgString(halStatus),
15138 halStatus);
15139 /* send the status to UMAC, don't return from here*/
15140 }
15141
15142 /*Notify UMAC*/
15143 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15144
Jeff Johnsone7245742012-09-05 17:12:55 -070015145 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015146}/*WDI_ProcessSetBssKeyRsp*/
15147
15148
15149/**
15150 @brief Process Set STA Key Rsp function (called when a response
15151 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015152
15153 @param pWDICtx: pointer to the WLAN DAL context
15154 pEventData: pointer to the event information structure
15155
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 @see
15157 @return Result of the function call
15158*/
15159WDI_Status
15160WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015161(
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 WDI_ControlBlockType* pWDICtx,
15163 WDI_EventInfoType* pEventData
15164)
15165{
15166 WDI_Status wdiStatus;
15167 eHalStatus halStatus;
15168 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15170
15171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 -------------------------------------------------------------------------*/
15174 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15175 ( NULL == pEventData->pEventData))
15176 {
15177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015178 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 }
15182
15183 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15184
15185 /*-------------------------------------------------------------------------
15186 Extract response and send it to UMAC
15187 -------------------------------------------------------------------------*/
15188 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015190
15191 if ( eHAL_STATUS_SUCCESS != halStatus )
15192 {
15193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15194 "Set STA Key failed with status %s (%d)",
15195 WDI_getHALStatusMsgString(halStatus),
15196 halStatus);
15197 /* send the status to UMAC, don't return from here*/
15198 }
15199
15200 /*Notify UMAC*/
15201 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15202
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015204}/*WDI_ProcessSetSTAKeyRsp*/
15205
15206/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015207 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015209
15210 @param pWDICtx: pointer to the WLAN DAL context
15211 pEventData: pointer to the event information structure
15212
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 @see
15214 @return Result of the function call
15215*/
15216WDI_Status
15217WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015218(
Jeff Johnson295189b2012-06-20 16:38:30 -070015219 WDI_ControlBlockType* pWDICtx,
15220 WDI_EventInfoType* pEventData
15221)
15222{
15223 WDI_Status wdiStatus;
15224 eHalStatus halStatus;
15225 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15227
15228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015229 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 -------------------------------------------------------------------------*/
15231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15232 ( NULL == pEventData->pEventData))
15233 {
15234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015238 }
15239
15240 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15241
15242 /*-------------------------------------------------------------------------
15243 Extract response and send it to UMAC
15244 -------------------------------------------------------------------------*/
15245 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015247
15248 if ( eHAL_STATUS_SUCCESS != halStatus )
15249 {
15250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15251 "Remove STA Key failed with status %s (%d)",
15252 WDI_getHALStatusMsgString(halStatus),
15253 halStatus);
15254 /* send the status to UMAC, don't return from here*/
15255 }
15256
15257 /*Notify UMAC*/
15258 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15259
Jeff Johnsone7245742012-09-05 17:12:55 -070015260 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015261}/*WDI_ProcessRemoveStaKeyRsp*/
15262
15263/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015266
15267 @param pWDICtx: pointer to the WLAN DAL context
15268 pEventData: pointer to the event information structure
15269
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 @see
15271 @return Result of the function call
15272*/
15273WDI_Status
15274WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015275(
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 WDI_ControlBlockType* pWDICtx,
15277 WDI_EventInfoType* pEventData
15278)
15279{
15280 WDI_Status wdiStatus;
15281 eHalStatus halStatus;
15282 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15284
15285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015287 -------------------------------------------------------------------------*/
15288 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15289 ( NULL == pEventData->pEventData))
15290 {
15291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 }
15296
15297 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15298
15299 /*-------------------------------------------------------------------------
15300 Extract response and send it to UMAC
15301 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 wpalMemoryCopy( &halStatus,
15303 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 sizeof(halStatus));
15305
Jeff Johnsone7245742012-09-05 17:12:55 -070015306 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015307
15308 if ( eHAL_STATUS_SUCCESS != halStatus )
15309 {
15310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15311 "Set STA Key failed with status %s (%d)",
15312 WDI_getHALStatusMsgString(halStatus),
15313 halStatus);
15314 /* send the status to UMAC, don't return from here*/
15315 }
15316
15317 /*Notify UMAC*/
15318 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15319
Jeff Johnsone7245742012-09-05 17:12:55 -070015320 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015321}/*WDI_ProcessSetSTABcastKeyRsp*/
15322
15323/**
15324 @brief Process Remove STA Bcast Key Rsp function (called when a
15325 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015326
15327 @param pWDICtx: pointer to the WLAN DAL context
15328 pEventData: pointer to the event information structure
15329
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 @see
15331 @return Result of the function call
15332*/
15333WDI_Status
15334WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015335(
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 WDI_ControlBlockType* pWDICtx,
15337 WDI_EventInfoType* pEventData
15338)
15339{
15340 WDI_Status wdiStatus;
15341 eHalStatus halStatus;
15342 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15344
15345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 -------------------------------------------------------------------------*/
15348 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15349 ( NULL == pEventData->pEventData))
15350 {
15351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 }
15356
15357 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15358
15359 /*-------------------------------------------------------------------------
15360 Extract response and send it to UMAC
15361 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 wpalMemoryCopy( &halStatus,
15363 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 sizeof(halStatus));
15365
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015367
15368 if ( eHAL_STATUS_SUCCESS != halStatus )
15369 {
15370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15371 "Remove STA Key failed with status %s (%d)",
15372 WDI_getHALStatusMsgString(halStatus),
15373 halStatus);
15374 /* send the status to UMAC, don't return from here*/
15375 }
15376
15377 /*Notify UMAC*/
15378 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15379
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015381}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15382
15383
15384/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015385 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015386==========================================================================*/
15387
15388/**
15389 @brief Process Add TSpec Rsp function (called when a response
15390 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015391
15392 @param pWDICtx: pointer to the WLAN DAL context
15393 pEventData: pointer to the event information structure
15394
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 @see
15396 @return Result of the function call
15397*/
15398WDI_Status
15399WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015400(
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 WDI_ControlBlockType* pWDICtx,
15402 WDI_EventInfoType* pEventData
15403)
15404{
15405 WDI_Status wdiStatus;
15406 eHalStatus halStatus;
15407 WDI_AddTsRspCb wdiAddTsRspCb;
15408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15409
15410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015412 -------------------------------------------------------------------------*/
15413 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15414 ( NULL == pEventData->pEventData))
15415 {
15416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 }
15421
15422 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15423
15424 /*-------------------------------------------------------------------------
15425 Extract response and send it to UMAC
15426 -------------------------------------------------------------------------*/
15427 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015428 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015429
15430 /*Notify UMAC*/
15431 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15432
Jeff Johnsone7245742012-09-05 17:12:55 -070015433 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015434}/*WDI_ProcessAddTSpecRsp*/
15435
15436
15437/**
15438 @brief Process Del TSpec Rsp function (called when a response
15439 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015440
15441 @param pWDICtx: pointer to the WLAN DAL context
15442 pEventData: pointer to the event information structure
15443
Jeff Johnson295189b2012-06-20 16:38:30 -070015444 @see
15445 @return Result of the function call
15446*/
15447WDI_Status
15448WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015449(
Jeff Johnson295189b2012-06-20 16:38:30 -070015450 WDI_ControlBlockType* pWDICtx,
15451 WDI_EventInfoType* pEventData
15452)
15453{
15454 WDI_Status wdiStatus;
15455 eHalStatus halStatus;
15456 WDI_DelTsRspCb wdiDelTsRspCb;
15457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15458
15459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015461 -------------------------------------------------------------------------*/
15462 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15463 ( NULL == pEventData->pEventData))
15464 {
15465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 }
15470
15471 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15472
15473 /*-------------------------------------------------------------------------
15474 Extract response and send it to UMAC
15475 -------------------------------------------------------------------------*/
15476 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015477 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015478
15479 /*Notify UMAC*/
15480 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15481
Jeff Johnsone7245742012-09-05 17:12:55 -070015482 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015483}/*WDI_ProcessDelTSpecRsp*/
15484
15485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015488
15489 @param pWDICtx: pointer to the WLAN DAL context
15490 pEventData: pointer to the event information structure
15491
Jeff Johnson295189b2012-06-20 16:38:30 -070015492 @see
15493 @return Result of the function call
15494*/
15495WDI_Status
15496WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015497(
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 WDI_ControlBlockType* pWDICtx,
15499 WDI_EventInfoType* pEventData
15500)
15501{
15502 WDI_Status wdiStatus;
15503 eHalStatus halStatus;
15504 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15506
15507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015509 -------------------------------------------------------------------------*/
15510 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15511 ( NULL == pEventData->pEventData))
15512 {
15513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 }
15518
15519 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15520
15521 /*-------------------------------------------------------------------------
15522 Extract response and send it to UMAC
15523 -------------------------------------------------------------------------*/
15524 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015525 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015526
15527 /*Notify UMAC*/
15528 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15529
Jeff Johnsone7245742012-09-05 17:12:55 -070015530 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015531}/*WDI_ProcessUpdateEDCAParamsRsp*/
15532
15533
15534/**
15535 @brief Process Add BA Rsp function (called when a response
15536 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015537
15538 @param pWDICtx: pointer to the WLAN DAL context
15539 pEventData: pointer to the event information structure
15540
Jeff Johnson295189b2012-06-20 16:38:30 -070015541 @see
15542 @return Result of the function call
15543*/
15544WDI_Status
15545WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015546(
Jeff Johnson295189b2012-06-20 16:38:30 -070015547 WDI_ControlBlockType* pWDICtx,
15548 WDI_EventInfoType* pEventData
15549)
15550{
15551 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15552
15553 tAddBASessionRspParams halBASessionRsp;
15554 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15555
Jeff Johnsone7245742012-09-05 17:12:55 -070015556
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15558
15559 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015560 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 -------------------------------------------------------------------------*/
15562 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15563 ( NULL == pEventData->pEventData))
15564 {
15565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015566 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 }
15570
15571 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15572
15573 /*-------------------------------------------------------------------------
15574 Extract response and send it to UMAC
15575 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015576 wpalMemoryCopy( &halBASessionRsp,
15577 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 sizeof(halBASessionRsp));
15579
15580 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15581
Jeff Johnson43971f52012-07-17 12:26:56 -070015582 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015583 {
15584 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15585 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15586 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15587 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15588 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15589 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15590 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15591 }
15592
15593 /*Notify UMAC*/
15594 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15595
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015597}/*WDI_ProcessAddSessionBARsp*/
15598
15599
15600/**
15601 @brief Process Del BA Rsp function (called when a response
15602 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015603
15604 @param pWDICtx: pointer to the WLAN DAL context
15605 pEventData: pointer to the event information structure
15606
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 @see
15608 @return Result of the function call
15609*/
15610WDI_Status
15611WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015612(
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 WDI_ControlBlockType* pWDICtx,
15614 WDI_EventInfoType* pEventData
15615)
15616{
15617 WDI_Status wdiStatus;
15618 eHalStatus halStatus;
15619 WDI_DelBARspCb wdiDelBARspCb;
15620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15621
15622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015624 -------------------------------------------------------------------------*/
15625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15626 ( NULL == pEventData->pEventData))
15627 {
15628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015632 }
15633
15634 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15635
15636 /*-------------------------------------------------------------------------
15637 Extract response and send it to UMAC
15638 -------------------------------------------------------------------------*/
15639 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015641
15642 if ( eHAL_STATUS_SUCCESS == halStatus )
15643 {
15644 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15645 }
15646
15647 /*Notify UMAC*/
15648 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15649
Jeff Johnsone7245742012-09-05 17:12:55 -070015650 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015651}/*WDI_ProcessDelBARsp*/
15652
15653#ifdef FEATURE_WLAN_CCX
15654/**
15655 @brief Process TSM Stats Rsp function (called when a response
15656 is being received over the bus from HAL)
15657
15658 @param pWDICtx: pointer to the WLAN DAL context
15659 pEventData: pointer to the event information structure
15660
15661 @see
15662 @return Result of the function call
15663*/
15664WDI_Status
15665WDI_ProcessTsmStatsRsp
15666(
15667 WDI_ControlBlockType* pWDICtx,
15668 WDI_EventInfoType* pEventData
15669)
15670{
15671 WDI_TsmRspCb wdiTsmStatsRspCb;
15672 tTsmStatsRspMsg halTsmStatsRspMsg;
15673 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15675
15676 /*-------------------------------------------------------------------------
15677 Sanity check
15678 -------------------------------------------------------------------------*/
15679 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15680 ( NULL == pEventData->pEventData))
15681 {
15682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015683 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 WDI_ASSERT(0);
15685 return WDI_STATUS_E_FAILURE;
15686 }
15687
15688 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
15689
15690 /*-------------------------------------------------------------------------
15691 Unpack HAL Response Message - the header was already extracted by the
15692 main Response Handling procedure
15693 -------------------------------------------------------------------------*/
15694 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
15695 pEventData->pEventData,
15696 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
15697
15698 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
15699 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
15700 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
15701 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
15702 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
15703 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
15704 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
15705 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
15706 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
15707 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
15708 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15709 halTsmStatsRspMsg.tsmStatsRspParams.status);
15710
15711 /*Notify UMAC*/
15712 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
15713
15714 return WDI_STATUS_SUCCESS;
15715}/*WDI_ProcessTsmStatsRsp*/
15716
15717#endif
15718
15719
15720
15721/**
15722 @brief Process Flush AC Rsp function (called when a response
15723 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015724
15725 @param pWDICtx: pointer to the WLAN DAL context
15726 pEventData: pointer to the event information structure
15727
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 @see
15729 @return Result of the function call
15730*/
15731WDI_Status
15732WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015733(
Jeff Johnson295189b2012-06-20 16:38:30 -070015734 WDI_ControlBlockType* pWDICtx,
15735 WDI_EventInfoType* pEventData
15736)
15737{
15738 WDI_Status wdiStatus;
15739 eHalStatus halStatus;
15740 WDI_FlushAcRspCb wdiFlushAcRspCb;
15741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15742
15743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015745 -------------------------------------------------------------------------*/
15746 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15747 ( NULL == pEventData->pEventData))
15748 {
15749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015753 }
15754
15755 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
15756
15757 /*-------------------------------------------------------------------------
15758 Extract response and send it to UMAC
15759 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015760 wpalMemoryCopy( &halStatus,
15761 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015762 sizeof(halStatus));
15763
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015765
15766 /*Notify UMAC*/
15767 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15768
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015770}/*WDI_ProcessFlushAcRsp*/
15771
15772/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015774 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015775
15776 @param pWDICtx: pointer to the WLAN DAL context
15777 pEventData: pointer to the event information structure
15778
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 @see
15780 @return Result of the function call
15781*/
15782WDI_Status
15783WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015784(
Jeff Johnson295189b2012-06-20 16:38:30 -070015785 WDI_ControlBlockType* pWDICtx,
15786 WDI_EventInfoType* pEventData
15787)
15788{
15789 WDI_Status wdiStatus;
15790 eHalStatus halStatus;
15791 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
15792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15793
15794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 -------------------------------------------------------------------------*/
15797 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15798 ( NULL == pEventData->pEventData))
15799 {
15800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015801 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 }
15805
15806 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
15807
15808 /*-------------------------------------------------------------------------
15809 Extract response and send it to UMAC
15810 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015811 wpalMemoryCopy( &halStatus,
15812 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015813 sizeof(halStatus));
15814
Jeff Johnsone7245742012-09-05 17:12:55 -070015815 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015816
15817 /*Notify UMAC*/
15818 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15819
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015821}/*WDI_ProcessBtAmpEventRsp*/
15822
15823
15824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015827
15828 @param pWDICtx: pointer to the WLAN DAL context
15829 pEventData: pointer to the event information structure
15830
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 @see
15832 @return Result of the function call
15833*/
15834WDI_Status
15835WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015836(
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 WDI_ControlBlockType* pWDICtx,
15838 WDI_EventInfoType* pEventData
15839)
15840{
15841 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
15842 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
15843 tAddStaSelfRspMsg halAddStaSelfRsp;
15844 WDI_AddStaParams wdiAddSTAParam = {0};
15845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15846
15847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 -------------------------------------------------------------------------*/
15850 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15851 ( NULL == pEventData->pEventData))
15852 {
15853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 }
15858
Jeff Johnsone7245742012-09-05 17:12:55 -070015859 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
15861
15862 /*-------------------------------------------------------------------------
15863 Extract response and send it to UMAC
15864 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
15866 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
15868
15869
Jeff Johnsone7245742012-09-05 17:12:55 -070015870 wdiAddSTASelfParams.wdiStatus =
15871 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015872
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015876 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
15879
15880 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
15881 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
15882 WDI_MAC_ADDR_LEN);
15883
15884
15885#ifdef HAL_SELF_STA_PER_BSS
15886
15887 /* At this point add the self-STA */
15888
15889 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15890 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15891 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15892
15893 //all DPU indices are the same for self STA
15894
15895 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015896 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
15898 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
15899 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
15900 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
15901 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
15902
15903 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
15904 WDI_MAC_ADDR_LEN);
15905
15906 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15907 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
15908
Jeff Johnsone7245742012-09-05 17:12:55 -070015909 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
15911 {
15912 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15913 }
15914#endif
15915
15916 /*Notify UMAC*/
15917 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
15918
Jeff Johnsone7245742012-09-05 17:12:55 -070015919 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015920}/*WDI_ProcessAddSTASelfRsp*/
15921
15922
15923
15924/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015927
15928 @param pWDICtx: pointer to the WLAN DAL context
15929 pEventData: pointer to the event information structure
15930
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 @see
15932 @return Result of the function call
15933*/
15934WDI_Status
15935WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015936(
Jeff Johnson295189b2012-06-20 16:38:30 -070015937 WDI_ControlBlockType* pWDICtx,
15938 WDI_EventInfoType* pEventData
15939)
15940{
15941 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
15942 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
15943 tDelStaSelfRspParams delStaSelfRspParams;
15944 wpt_uint8 ucStaIdx;
15945
15946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15947
15948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 -------------------------------------------------------------------------*/
15951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15952 ( NULL == pEventData->pEventData))
15953 {
15954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015958 }
15959
15960 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
15961
15962 /*-------------------------------------------------------------------------
15963 Extract response and send it to UMAC
15964 -------------------------------------------------------------------------*/
15965
Jeff Johnsone7245742012-09-05 17:12:55 -070015966 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015967 (wpt_uint8*)pEventData->pEventData,
15968 sizeof(tDelStaSelfRspParams));
15969
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 wdiDelStaSelfRspParams.wdiStatus =
15971 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015972
Jeff Johnsone7245742012-09-05 17:12:55 -070015973 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070015974 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
15975 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
15976 {
15977 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 delStaSelfRspParams.selfMacAddr,
15980 &ucStaIdx);
15981 if(WDI_STATUS_E_FAILURE == wdiStatus)
15982 {
15983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015984 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 }
15988 WDI_STATableDelSta(pWDICtx, ucStaIdx);
15989 }
15990
15991 /*Notify UMAC*/
15992 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
15993
15994 return WDI_STATUS_SUCCESS;
15995}
15996
Jeff Johnsone7245742012-09-05 17:12:55 -070015997#ifdef FEATURE_OEM_DATA_SUPPORT
15998/**
15999 @brief Start Oem Data Rsp function (called when a
16000 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016001
Jeff Johnsone7245742012-09-05 17:12:55 -070016002 @param pWDICtx: pointer to the WLAN DAL context
16003 pEventData: pointer to the event information structure
16004
16005 @see
16006 @return Result of the function call
16007*/
16008#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16009
16010WDI_Status
16011WDI_ProcessStartOemDataRsp
16012(
16013 WDI_ControlBlockType* pWDICtx,
16014 WDI_EventInfoType* pEventData
16015)
16016{
16017 WDI_oemDataRspCb wdiOemDataRspCb;
16018 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16019 tStartOemDataRspParams* halStartOemDataRspParams;
16020
16021 /*-------------------------------------------------------------------------
16022 Sanity check
16023 -------------------------------------------------------------------------*/
16024 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16025 ( NULL == pEventData->pEventData))
16026 {
16027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016028 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 WDI_ASSERT(0);
16030 return WDI_STATUS_E_FAILURE;
16031 }
16032
16033 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16034
16035 /*-------------------------------------------------------------------------
16036 Extract response and send it to UMAC
16037 -------------------------------------------------------------------------*/
16038 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16039
16040
16041 //It is the responsibility of the application code to check for failure
16042 //conditions!
16043
16044 //Allocate memory for WDI OEM DATA RSP structure
16045 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16046
16047 if(NULL == wdiOemDataRspParams)
16048 {
16049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16050 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16051 pWDICtx, pEventData, pEventData->pEventData);
16052 WDI_ASSERT(0);
16053 return WDI_STATUS_E_FAILURE;
16054 }
16055
16056 /* Populate WDI structure members */
16057 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16058
16059 /*Notify UMAC*/
16060 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16061
16062 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16063 wpalMemoryFree(wdiOemDataRspParams);
16064
16065 return WDI_STATUS_SUCCESS;
16066}/*WDI_PrcoessStartOemDataRsp*/
16067#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016068
16069/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016070 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016071===========================================================================*/
16072
16073/**
16074 @brief Process Channel Switch Rsp function (called when a response
16075 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016076
16077 @param pWDICtx: pointer to the WLAN DAL context
16078 pEventData: pointer to the event information structure
16079
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 @see
16081 @return Result of the function call
16082*/
16083WDI_Status
16084WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016085(
Jeff Johnson295189b2012-06-20 16:38:30 -070016086 WDI_ControlBlockType* pWDICtx,
16087 WDI_EventInfoType* pEventData
16088)
16089{
16090 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16091 WDI_SwitchChRspCb wdiChSwitchRspCb;
16092 tSwitchChannelRspParams halSwitchChannelRsp;
16093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16094
16095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 -------------------------------------------------------------------------*/
16098 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16099 ( NULL == pEventData->pEventData))
16100 {
16101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016102 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016105 }
16106
16107 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16108
16109 /*-------------------------------------------------------------------------
16110 Extract response and send it to UMAC
16111 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016112 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016113 (wpt_uint8*)pEventData->pEventData,
16114 sizeof(halSwitchChannelRsp));
16115
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 wdiSwitchChRsp.wdiStatus =
16117 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16119
16120#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016122#endif
16123
16124 /*Notify UMAC*/
16125 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16126
Jeff Johnsone7245742012-09-05 17:12:55 -070016127 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016128}/*WDI_ProcessChannelSwitchRsp*/
16129
16130
16131/**
16132 @brief Process Config STA Rsp function (called when a response
16133 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016134
16135 @param pWDICtx: pointer to the WLAN DAL context
16136 pEventData: pointer to the event information structure
16137
Jeff Johnson295189b2012-06-20 16:38:30 -070016138 @see
16139 @return Result of the function call
16140*/
16141WDI_Status
16142WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016143(
Jeff Johnson295189b2012-06-20 16:38:30 -070016144 WDI_ControlBlockType* pWDICtx,
16145 WDI_EventInfoType* pEventData
16146)
16147{
16148 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16149 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16150 WDI_AddStaParams wdiAddSTAParam;
16151
16152 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016153 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016154
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16157
16158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 -------------------------------------------------------------------------*/
16161 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16162 ( NULL == pEventData->pEventData))
16163 {
16164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016165 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 }
16169
16170 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16171
16172 /*-------------------------------------------------------------------------
16173 Extract response and send it to UMAC
16174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16176 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016177 sizeof(halConfigStaRsp.configStaRspParams));
16178
16179
16180 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16181 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16182 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16183 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16184 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16185
16186 /* MAC Address of STA - take from cache as it does not come back in the
16187 response*/
16188 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016189 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016190 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016191
16192 wdiCfgSTAParams.wdiStatus =
16193 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016194
16195 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16196 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16197 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16198
16199 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16200 {
16201 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16202 {
16203 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16206 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016207
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 wdiAddSTAParam.ucHTCapable =
16212 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16213 wdiAddSTAParam.ucStaType =
16214 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16215
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016217 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16218 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016219 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016220
16221 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16222 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16223 WDI_MAC_ADDR_LEN);
16224
16225 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16226 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16227 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016228
16229 if ( NULL == pBSSSes )
16230 {
16231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16232 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016233
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016235 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 }
16237
16238 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016239 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016241 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016242 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016243 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016244 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 halConfigStaRsp.configStaRspParams.ucBcastSig;
16247 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16248 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016249
Jeff Johnson295189b2012-06-20 16:38:30 -070016250 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16251 }
16252 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16253 {
16254 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16255
Jeff Johnsone7245742012-09-05 17:12:55 -070016256 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016258 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016259 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016260 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016261 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016267 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016268 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016269 halConfigStaRsp.configStaRspParams.ucUcastSig;
16270 }
16271 }
16272
16273 /*Notify UMAC*/
16274 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16275
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016277}/*WDI_ProcessConfigStaRsp*/
16278
16279
16280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016281 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016283
16284 @param pWDICtx: pointer to the WLAN DAL context
16285 pEventData: pointer to the event information structure
16286
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 @see
16288 @return Result of the function call
16289*/
16290WDI_Status
16291WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016292(
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 WDI_ControlBlockType* pWDICtx,
16294 WDI_EventInfoType* pEventData
16295)
16296{
16297 WDI_Status wdiStatus;
16298 eHalStatus halStatus;
16299 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16300
16301 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16304
16305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016307 -------------------------------------------------------------------------*/
16308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16309 ( NULL == pEventData->pEventData))
16310 {
16311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 }
16316
16317 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16318
16319 wpalMutexAcquire(&pWDICtx->wptMutex);
16320
16321 /*If the link is being transitioned to idle - the BSS is to be deleted
16322 - this type of ending a session is possible when UMAC has failed an
16323 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016324 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016325 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16326 {
16327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016328 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016329 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16331 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16332 &pBSSSes);
16333
Jeff Johnson295189b2012-06-20 16:38:30 -070016334 /*-----------------------------------------------------------------------
16335 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016336 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016337 -----------------------------------------------------------------------*/
16338 if ( NULL == pBSSSes )
16339 {
16340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16341 "Set link response received outside association session");
16342 }
16343 else
16344 {
16345 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16346 will be del BSS coming after this to stop the beaconing & cleaning up the
16347 sessions*/
16348 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16349 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16350 {
16351 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016352 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016353 -----------------------------------------------------------------------*/
16354 WDI_DeleteSession(pWDICtx, pBSSSes);
16355
16356 /*-----------------------------------------------------------------------
16357 Check to see if this association is in progress - if so disable the
16358 flag as this has ended
16359 -----------------------------------------------------------------------*/
16360 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016361 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016362 /*Association no longer in progress */
16363 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16364 /*Association no longer in progress - prepare pending assoc for processing*/
16365 WDI_DequeueAssocRequest(pWDICtx);
16366 }
16367 }
16368 }
16369 }
16370 /* If the link state has been set to POST ASSOC, reset the "association in
16371 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016372 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16374 {
16375 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16376 WDI_DequeueAssocRequest(pWDICtx);
16377 }
16378
16379 wpalMutexRelease(&pWDICtx->wptMutex);
16380
16381 /*-------------------------------------------------------------------------
16382 Extract response and send it to UMAC
16383 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016384 wpalMemoryCopy( &halStatus,
16385 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016386 sizeof(halStatus));
16387
Jeff Johnsone7245742012-09-05 17:12:55 -070016388 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016389
16390 /*Notify UMAC*/
16391 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16392
Jeff Johnsone7245742012-09-05 17:12:55 -070016393 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016394}/*WDI_ProcessSetLinkStateRsp*/
16395
16396/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016399
16400 @param pWDICtx: pointer to the WLAN DAL context
16401 pEventData: pointer to the event information structure
16402
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 @see
16404 @return Result of the function call
16405*/
16406WDI_Status
16407WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016408(
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 WDI_ControlBlockType* pWDICtx,
16410 WDI_EventInfoType* pEventData
16411)
16412{
16413 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16414 WDI_GetStatsRspCb wdiGetStatsRspCb;
16415 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016416
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16418
16419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 -------------------------------------------------------------------------*/
16422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16423 ( NULL == pEventData->pEventData))
16424 {
16425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 }
16430
16431 /*-------------------------------------------------------------------------
16432 Extract response and send it to UMAC
16433 -------------------------------------------------------------------------*/
16434 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16435
16436 /*allocate the stats response buffer */
16437 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16438 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16439 + sizeof(WDI_GetStatsRspParamsType));
16440
16441 if(NULL == wdiGetStatsRsp)
16442 {
16443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16444 "Failed to allocate memory in Get Stats Response %x %x %x ",
16445 pWDICtx, pEventData, pEventData->pEventData);
16446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 }
16449
16450 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16451
16452 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16453 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16454 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16455 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16456 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16457 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16458
16459 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16460 wpalMemoryCopy(wdiGetStatsRsp + 1,
16461 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16462 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16463
16464 /*Notify UMAC*/
16465 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16466
16467 wpalMemoryFree(wdiGetStatsRsp);
16468
Jeff Johnsone7245742012-09-05 17:12:55 -070016469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016470}/*WDI_ProcessGetStatsRsp*/
16471
16472
16473/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016474 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016475 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016476
16477 @param pWDICtx: pointer to the WLAN DAL context
16478 pEventData: pointer to the event information structure
16479
Jeff Johnson295189b2012-06-20 16:38:30 -070016480 @see
16481 @return Result of the function call
16482*/
16483WDI_Status
16484WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016485(
Jeff Johnson295189b2012-06-20 16:38:30 -070016486 WDI_ControlBlockType* pWDICtx,
16487 WDI_EventInfoType* pEventData
16488)
16489{
16490 WDI_Status wdiStatus;
16491 eHalStatus halStatus;
16492 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16494
16495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016497 -------------------------------------------------------------------------*/
16498 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16499 ( NULL == pEventData->pEventData))
16500 {
16501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 }
16506
16507 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16508
16509 /*-------------------------------------------------------------------------
16510 Extract response and send it to UMAC
16511 -------------------------------------------------------------------------*/
16512 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016513 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016514
16515 /*Notify UMAC*/
16516 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16517
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016519}/*WDI_ProcessUpdateCfgRsp*/
16520
16521
16522
16523/**
16524 @brief Process Add BA Rsp function (called when a response
16525 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016526
16527 @param pWDICtx: pointer to the WLAN DAL context
16528 pEventData: pointer to the event information structure
16529
Jeff Johnson295189b2012-06-20 16:38:30 -070016530 @see
16531 @return Result of the function call
16532*/
16533WDI_Status
16534WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016535(
Jeff Johnson295189b2012-06-20 16:38:30 -070016536 WDI_ControlBlockType* pWDICtx,
16537 WDI_EventInfoType* pEventData
16538)
16539{
16540 WDI_AddBARspCb wdiAddBARspCb;
16541
16542 tAddBARspParams halAddBARsp;
16543 WDI_AddBARspinfoType wdiAddBARsp;
16544
16545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16546
16547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 -------------------------------------------------------------------------*/
16550 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16551 ( NULL == pEventData->pEventData))
16552 {
16553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016554 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 }
16558
16559 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16560
16561 /*-------------------------------------------------------------------------
16562 Extract response and send it to UMAC
16563 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 wpalMemoryCopy( &halAddBARsp,
16565 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016566 sizeof(halAddBARsp));
16567
16568 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16569
Jeff Johnson43971f52012-07-17 12:26:56 -070016570 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 {
16572 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16573 }
16574
16575 /*Notify UMAC*/
16576 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16577
Jeff Johnsone7245742012-09-05 17:12:55 -070016578 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016579}/*WDI_ProcessAddSessionBARsp*/
16580
16581/**
16582 @brief Process Add BA Rsp function (called when a response
16583 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016584
16585 @param pWDICtx: pointer to the WLAN DAL context
16586 pEventData: pointer to the event information structure
16587
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 @see
16589 @return Result of the function call
16590*/
16591WDI_Status
16592WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016593(
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 WDI_ControlBlockType* pWDICtx,
16595 WDI_EventInfoType* pEventData
16596)
16597{
16598 WDI_TriggerBARspCb wdiTriggerBARspCb;
16599
16600 tTriggerBARspParams* halTriggerBARsp;
16601 tTriggerBaRspCandidate* halBaCandidate;
16602 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16603 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16604 wpt_uint16 index;
16605 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016606
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16608
16609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 -------------------------------------------------------------------------*/
16612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16613 ( NULL == pEventData->pEventData))
16614 {
16615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 }
16620
16621 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16622
16623 /*-------------------------------------------------------------------------
16624 Extract response and send it to UMAC
16625 -------------------------------------------------------------------------*/
16626 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
16627
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
16629 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 sizeof(WDI_TriggerBARspCandidateType));
16631 if(NULL == wdiTriggerBARsp)
16632 {
16633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16634 "Failed to allocate memory in Trigger BA Response %x %x %x ",
16635 pWDICtx, pEventData, pEventData->pEventData);
16636 wpalMemoryFree(halTriggerBARsp);
16637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 }
16640
16641 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
16642
16643 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
16644 {
16645 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070016646 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016647 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
16648
16649 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
16650 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
16651
16652 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
16653 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016654 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
16656 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
16657 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 halBaCandidate->baInfo[TidIndex].startingSeqNum;
16662 }
16663 wdiTriggerBARspCandidate++;
16664 halBaCandidate++;
16665 }
16666 }
16667
16668 /*Notify UMAC*/
16669 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
16670
16671 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070016672 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016673}/*WDI_ProcessAddSessionBARsp*/
16674
16675/**
16676 @brief Process Update Beacon Params Rsp function (called when a response
16677 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016678
16679 @param pWDICtx: pointer to the WLAN DAL context
16680 pEventData: pointer to the event information structure
16681
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 @see
16683 @return Result of the function call
16684*/
16685WDI_Status
16686WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016687(
Jeff Johnson295189b2012-06-20 16:38:30 -070016688 WDI_ControlBlockType* pWDICtx,
16689 WDI_EventInfoType* pEventData
16690)
16691{
16692 WDI_Status wdiStatus;
16693 eHalStatus halStatus;
16694 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
16695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16696
16697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016698 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 -------------------------------------------------------------------------*/
16700 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16701 ( NULL == pEventData->pEventData))
16702 {
16703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016704 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016705 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016707 }
16708
16709 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
16710
16711 /*-------------------------------------------------------------------------
16712 Extract response and send it to UMAC
16713 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 wpalMemoryCopy( &halStatus,
16715 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 sizeof(halStatus));
16717
Jeff Johnsone7245742012-09-05 17:12:55 -070016718 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016719
16720 /*Notify UMAC*/
16721 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16722
Jeff Johnsone7245742012-09-05 17:12:55 -070016723 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016724}/*WDI_ProcessUpdateBeaconParamsRsp*/
16725
16726/**
16727 @brief Process Send Beacon template Rsp function (called when a response
16728 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016729
16730 @param pWDICtx: pointer to the WLAN DAL context
16731 pEventData: pointer to the event information structure
16732
Jeff Johnson295189b2012-06-20 16:38:30 -070016733 @see
16734 @return Result of the function call
16735*/
16736WDI_Status
16737WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016738(
Jeff Johnson295189b2012-06-20 16:38:30 -070016739 WDI_ControlBlockType* pWDICtx,
16740 WDI_EventInfoType* pEventData
16741)
16742{
16743 WDI_Status wdiStatus;
16744 eHalStatus halStatus;
16745 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
16746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16747
16748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016750 -------------------------------------------------------------------------*/
16751 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16752 ( NULL == pEventData->pEventData))
16753 {
16754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 }
16759
16760 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
16761
16762 /*-------------------------------------------------------------------------
16763 Extract response and send it to UMAC
16764 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016765 wpalMemoryCopy( &halStatus,
16766 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016767 sizeof(halStatus));
16768
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016770
16771 /*Notify UMAC*/
16772 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16773
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016775}/*WDI_ProcessSendBeaconParamsRsp*/
16776
Jeff Johnsone7245742012-09-05 17:12:55 -070016777
Jeff Johnson295189b2012-06-20 16:38:30 -070016778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016779 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016781
16782 @param pWDICtx: pointer to the WLAN DAL context
16783 pEventData: pointer to the event information structure
16784
Jeff Johnson295189b2012-06-20 16:38:30 -070016785 @see
16786 @return Result of the function call
16787*/
16788WDI_Status
16789WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016790(
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 WDI_ControlBlockType* pWDICtx,
16792 WDI_EventInfoType* pEventData
16793)
16794{
16795 WDI_Status wdiStatus;
16796 eHalStatus halStatus;
16797 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
16798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16799
16800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016802 -------------------------------------------------------------------------*/
16803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16804 ( NULL == pEventData->pEventData))
16805 {
16806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 }
16811
16812 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
16813
16814 /*-------------------------------------------------------------------------
16815 Extract response and send it to UMAC
16816 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016817 wpalMemoryCopy( &halStatus,
16818 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 sizeof(halStatus));
16820
Jeff Johnsone7245742012-09-05 17:12:55 -070016821 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016822
16823 /*Notify UMAC*/
16824 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16825
Jeff Johnsone7245742012-09-05 17:12:55 -070016826 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016827}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
16828
16829 /**
16830 @brief Process Set Max Tx Power Rsp function (called when a response
16831 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016832
16833 @param pWDICtx: pointer to the WLAN DAL context
16834 pEventData: pointer to the event information structure
16835
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 @see
16837 @return Result of the function call
16838*/
16839WDI_Status
16840WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016841(
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 WDI_ControlBlockType* pWDICtx,
16843 WDI_EventInfoType* pEventData
16844)
16845{
16846 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070016847
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070016849
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
16851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16852
16853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016855 -------------------------------------------------------------------------*/
16856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16857 ( NULL == pEventData->pEventData))
16858 {
16859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016863 }
16864
16865 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
16866
16867 /*-------------------------------------------------------------------------
16868 Extract response and send it to UMAC
16869 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016870 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
16871 pEventData->pEventData,
16872 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016873
16874 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
16875 {
16876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16877 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 }
16881
Jeff Johnsone7245742012-09-05 17:12:55 -070016882 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070016883 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070016884 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070016885
16886 /*Notify UMAC*/
16887 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
16888
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016890}
16891
16892#ifdef WLAN_FEATURE_P2P
16893/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016894 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016896
16897 @param pWDICtx: pointer to the WLAN DAL context
16898 pEventData: pointer to the event information structure
16899
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 @see
16901 @return Result of the function call
16902*/
16903WDI_Status
16904WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016905(
Jeff Johnson295189b2012-06-20 16:38:30 -070016906 WDI_ControlBlockType* pWDICtx,
16907 WDI_EventInfoType* pEventData
16908)
16909{
16910 WDI_Status wdiStatus;
16911 eHalStatus halStatus;
16912 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
16913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16914
16915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016917 -------------------------------------------------------------------------*/
16918 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16919 ( NULL == pEventData->pEventData))
16920 {
16921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016925 }
16926
16927 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
16928
16929 /*-------------------------------------------------------------------------
16930 Extract response and send it to UMAC
16931 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016932 wpalMemoryCopy( &halStatus,
16933 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 sizeof(halStatus));
16935
Jeff Johnsone7245742012-09-05 17:12:55 -070016936 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016937
16938 /*Notify UMAC*/
16939 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16940
Jeff Johnsone7245742012-09-05 17:12:55 -070016941 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016942}/*WDI_ProcessP2PGONOARsp*/
16943#endif
16944/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016945 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016947
16948 @param pWDICtx: pointer to the WLAN DAL context
16949 pEventData: pointer to the event information structure
16950
Jeff Johnson295189b2012-06-20 16:38:30 -070016951 @see
16952 @return Result of the function call
16953*/
16954WDI_Status
16955WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016956(
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 WDI_ControlBlockType* pWDICtx,
16958 WDI_EventInfoType* pEventData
16959)
16960{
16961 WDI_Status wdiStatus;
16962 eHalStatus halStatus;
16963 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016964 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16966
16967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 -------------------------------------------------------------------------*/
16970 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16971 ( NULL == pEventData->pEventData))
16972 {
16973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016974 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 }
16978
16979 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
16980
16981 /*-------------------------------------------------------------------------
16982 Extract response and send it to UMAC
16983 -------------------------------------------------------------------------*/
16984 halStatus = *((eHalStatus*)pEventData->pEventData);
16985
Jeff Johnsone7245742012-09-05 17:12:55 -070016986 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016987
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016988 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
16989 * Other module states are taken care by PMC.
16990 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
16991 */
16992 if (wdiStatus != WDI_STATUS_SUCCESS) {
16993
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070016994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16995 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
16996 halStatus);
16997 /* Call Back is not required as we are putting the DXE in FULL
16998 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016999 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17000
17001 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17003 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17004 WDI_ASSERT(0);
17005 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017006 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 /*Notify UMAC*/
17008 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17009
Jeff Johnsone7245742012-09-05 17:12:55 -070017010 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017011}/*WDI_ProcessEnterImpsRsp*/
17012
17013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017014 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017015 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017016
17017 @param pWDICtx: pointer to the WLAN DAL context
17018 pEventData: pointer to the event information structure
17019
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 @see
17021 @return Result of the function call
17022*/
17023WDI_Status
17024WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017025(
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 WDI_ControlBlockType* pWDICtx,
17027 WDI_EventInfoType* pEventData
17028)
17029{
17030 WDI_Status wdiStatus;
17031 eHalStatus halStatus;
17032 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017033 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17035
17036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017038 -------------------------------------------------------------------------*/
17039 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17040 ( NULL == pEventData->pEventData))
17041 {
17042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 }
17047
17048 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17049
17050 /*-------------------------------------------------------------------------
17051 Extract response and send it to UMAC
17052 -------------------------------------------------------------------------*/
17053 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017054 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017055
17056 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017057 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17058 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17059 {
17060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17061 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17062 WDI_ASSERT(0);
17063 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 /*Notify UMAC*/
17065 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17066
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017068}/*WDI_ProcessExitImpsRsp*/
17069
17070/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017072 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017073
17074 @param pWDICtx: pointer to the WLAN DAL context
17075 pEventData: pointer to the event information structure
17076
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 @see
17078 @return Result of the function call
17079*/
17080WDI_Status
17081WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017082(
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 WDI_ControlBlockType* pWDICtx,
17084 WDI_EventInfoType* pEventData
17085)
17086{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017087 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17088 tHalEnterBmpsRspParams halEnterBmpsRsp;
17089 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17090 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017091 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17093
17094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017096 -------------------------------------------------------------------------*/
17097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17098 ( NULL == pEventData->pEventData))
17099 {
17100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017104 }
17105
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017107 Extract response and send it to UMAC
17108 -------------------------------------------------------------------------*/
17109 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17110 {
17111 wpalMemoryCopy( &halEnterBmpsRsp,
17112 pEventData->pEventData,
17113 sizeof(halEnterBmpsRsp));
17114
17115 //Used to print debug message
17116 halStatus = halEnterBmpsRsp.status;
17117 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17118 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17119 }
17120 else
17121 {
17122 halStatus = *((eHalStatus*)pEventData->pEventData);
17123 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17124 }
17125
17126 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017127
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017128 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17129 * Other module states are taken care by PMC.
17130 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17131 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017132 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17133 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017134
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017136 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17137 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017138 /* Call Back is not required as we are putting the DXE in FULL
17139 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017140 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17141 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17142 {
17143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17144 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17145 WDI_ASSERT(0);
17146 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017147 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017148 }
17149
Jeff Johnson295189b2012-06-20 16:38:30 -070017150 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017151 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017152
Jeff Johnsone7245742012-09-05 17:12:55 -070017153 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017154}/*WDI_ProcessEnterBmpsRsp*/
17155
17156/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017157 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017158 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017159
17160 @param pWDICtx: pointer to the WLAN DAL context
17161 pEventData: pointer to the event information structure
17162
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 @see
17164 @return Result of the function call
17165*/
17166WDI_Status
17167WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017168(
Jeff Johnson295189b2012-06-20 16:38:30 -070017169 WDI_ControlBlockType* pWDICtx,
17170 WDI_EventInfoType* pEventData
17171)
17172{
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 eHalStatus halStatus;
17174 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017175 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017176 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17177 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17179
17180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 -------------------------------------------------------------------------*/
17183 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17184 ( NULL == pEventData->pEventData))
17185 {
17186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 }
17191
17192 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17193
17194 /*-------------------------------------------------------------------------
17195 Extract response and send it to UMAC
17196 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017197
17198 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17199 {
17200 wpalMemoryCopy( &halExitBmpsRsp,
17201 pEventData->pEventData,
17202 sizeof(halExitBmpsRsp));
17203
17204 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17205 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17206 }
17207 else
17208 {
17209 halStatus = *((eHalStatus*)pEventData->pEventData);
17210 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17211 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017212
17213 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017214 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17215 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17216 {
17217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17218 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17219 WDI_ASSERT(0);
17220 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017221 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17222
17223 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017224 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017225
Jeff Johnsone7245742012-09-05 17:12:55 -070017226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017227}/*WDI_ProcessExitBmpsRsp*/
17228
17229/**
17230 @brief Process Enter UAPSD Rsp function (called when a response
17231 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017232
17233 @param pWDICtx: pointer to the WLAN DAL context
17234 pEventData: pointer to the event information structure
17235
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 @see
17237 @return Result of the function call
17238*/
17239WDI_Status
17240WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017241(
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 WDI_ControlBlockType* pWDICtx,
17243 WDI_EventInfoType* pEventData
17244)
17245{
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017247 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017248 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017249 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17250
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17252
17253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017255 -------------------------------------------------------------------------*/
17256 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17257 ( NULL == pEventData->pEventData))
17258 {
17259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 }
17264
17265 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17266
17267 /*-------------------------------------------------------------------------
17268 Extract response and send it to UMAC
17269 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017270 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17271 {
17272 wpalMemoryCopy( &halEnterUapsdRsp,
17273 pEventData->pEventData,
17274 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017275
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017276 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17277 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17278 }
17279 else
17280 {
17281 halStatus = *((eHalStatus*)pEventData->pEventData);
17282 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17283 }
17284
17285 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017286 {
17287 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17288 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17289 // the traffic to decide when to suspend the trigger frames when there is no traffic
17290 // activity on the trigger enabled ACs
17291 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17292
17293#ifdef WLAN_PERF
17294 // Increment the BD signature to refresh the fast path BD utilization
17295 pWDICtx->uBdSigSerialNum++;
17296#endif
17297 }
17298
17299 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017300 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017301
Jeff Johnsone7245742012-09-05 17:12:55 -070017302 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017303}/*WDI_ProcessEnterUapsdRsp*/
17304
17305/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017306 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017307 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017308
17309 @param pWDICtx: pointer to the WLAN DAL context
17310 pEventData: pointer to the event information structure
17311
Jeff Johnson295189b2012-06-20 16:38:30 -070017312 @see
17313 @return Result of the function call
17314*/
17315WDI_Status
17316WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017317(
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 WDI_ControlBlockType* pWDICtx,
17319 WDI_EventInfoType* pEventData
17320)
17321{
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 eHalStatus halStatus;
17323 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017324 tHalExitUapsdRspParams halExitUapsdRsp;
17325 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17327
17328 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017329 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017330 -------------------------------------------------------------------------*/
17331 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17332 ( NULL == pEventData->pEventData))
17333 {
17334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017335 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017338 }
17339
17340 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17341
17342 /*-------------------------------------------------------------------------
17343 Extract response and send it to UMAC
17344 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017345 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17346 {
17347 wpalMemoryCopy( &halExitUapsdRsp,
17348 pEventData->pEventData,
17349 sizeof(halExitUapsdRsp));
17350
17351 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17352 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17353 }
17354 else
17355 {
17356 halStatus = *((eHalStatus*)pEventData->pEventData);
17357 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17358 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017359 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17360 // directly instead of the FW WQ.
17361 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17362
17363#ifdef WLAN_PERF
17364 // Increment the BD signature to refresh the fast path BD utilization
17365 pWDICtx->uBdSigSerialNum++;
17366#endif
17367
17368 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017369 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017370
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017372}/*WDI_ProcessExitUapsdRsp*/
17373
17374/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017375 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017376 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017377
17378 @param pWDICtx: pointer to the WLAN DAL context
17379 pEventData: pointer to the event information structure
17380
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 @see
17382 @return Result of the function call
17383*/
17384WDI_Status
17385WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017386(
Jeff Johnson295189b2012-06-20 16:38:30 -070017387 WDI_ControlBlockType* pWDICtx,
17388 WDI_EventInfoType* pEventData
17389)
17390{
17391 WDI_Status wdiStatus;
17392 eHalStatus halStatus;
17393 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17395
17396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017397 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017398 -------------------------------------------------------------------------*/
17399 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17400 ( NULL == pEventData->pEventData))
17401 {
17402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017406 }
17407
17408 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17409
17410 /*-------------------------------------------------------------------------
17411 Extract response and send it to UMAC
17412 -------------------------------------------------------------------------*/
17413 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017414 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017415
17416 /*Notify UMAC*/
17417 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17418
Jeff Johnsone7245742012-09-05 17:12:55 -070017419 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017420}/*WDI_ProcessSetUapsdAcParamsRsp*/
17421
17422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017423 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017424 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017425
17426 @param pWDICtx: pointer to the WLAN DAL context
17427 pEventData: pointer to the event information structure
17428
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 @see
17430 @return Result of the function call
17431*/
17432WDI_Status
17433WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017434(
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 WDI_ControlBlockType* pWDICtx,
17436 WDI_EventInfoType* pEventData
17437)
17438{
17439 WDI_Status wdiStatus;
17440 eHalStatus halStatus;
17441 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17443
17444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 -------------------------------------------------------------------------*/
17447 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17448 ( NULL == pEventData->pEventData))
17449 {
17450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017451 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017454 }
17455
17456 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17457
17458 /*-------------------------------------------------------------------------
17459 Extract response and send it to UMAC
17460 -------------------------------------------------------------------------*/
17461 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017462 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017463
17464 /*Notify UMAC*/
17465 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17466
Jeff Johnsone7245742012-09-05 17:12:55 -070017467 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017468}/*WDI_ProcessUpdateUapsdParamsRsp*/
17469
17470/**
17471 @brief Process Configure RXP filter Rsp function (called when a
17472 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017473
17474 @param pWDICtx: pointer to the WLAN DAL context
17475 pEventData: pointer to the event information structure
17476
Jeff Johnson295189b2012-06-20 16:38:30 -070017477 @see
17478 @return Result of the function call
17479*/
17480WDI_Status
17481WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017482(
Jeff Johnson295189b2012-06-20 16:38:30 -070017483 WDI_ControlBlockType* pWDICtx,
17484 WDI_EventInfoType* pEventData
17485)
17486{
17487 WDI_Status wdiStatus;
17488 eHalStatus halStatus;
17489 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17491
17492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017493 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 -------------------------------------------------------------------------*/
17495 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17496 ( NULL == pEventData->pEventData))
17497 {
17498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017499 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017502 }
17503
17504 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17505
17506 /*-------------------------------------------------------------------------
17507 Extract response and send it to UMAC
17508 -------------------------------------------------------------------------*/
17509 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017510 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017511
17512 /*Notify UMAC*/
17513 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17514
Jeff Johnsone7245742012-09-05 17:12:55 -070017515 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017516}/*WDI_ProcessConfigureRxpFilterRsp*/
17517
17518/**
17519 @brief Process Set beacon filter Rsp function (called when a
17520 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017521
17522 @param pWDICtx: pointer to the WLAN DAL context
17523 pEventData: pointer to the event information structure
17524
Jeff Johnson295189b2012-06-20 16:38:30 -070017525 @see
17526 @return Result of the function call
17527*/
17528WDI_Status
17529WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017530(
Jeff Johnson295189b2012-06-20 16:38:30 -070017531 WDI_ControlBlockType* pWDICtx,
17532 WDI_EventInfoType* pEventData
17533)
17534{
17535 WDI_Status wdiStatus;
17536 eHalStatus halStatus;
17537 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17539
17540 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017541 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 -------------------------------------------------------------------------*/
17543 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17544 ( NULL == pEventData->pEventData))
17545 {
17546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017547 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017550 }
17551
17552 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17553
17554 /*-------------------------------------------------------------------------
17555 Extract response and send it to UMAC
17556 -------------------------------------------------------------------------*/
17557 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017558 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017559
17560 /*Notify UMAC*/
17561 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17562
Jeff Johnsone7245742012-09-05 17:12:55 -070017563 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017564}/*WDI_ProcessSetBeaconFilterRsp*/
17565
17566/**
17567 @brief Process remove beacon filter Rsp function (called when a
17568 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017569
17570 @param pWDICtx: pointer to the WLAN DAL context
17571 pEventData: pointer to the event information structure
17572
Jeff Johnson295189b2012-06-20 16:38:30 -070017573 @see
17574 @return Result of the function call
17575*/
17576WDI_Status
17577WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017578(
Jeff Johnson295189b2012-06-20 16:38:30 -070017579 WDI_ControlBlockType* pWDICtx,
17580 WDI_EventInfoType* pEventData
17581)
17582{
17583 WDI_Status wdiStatus;
17584 eHalStatus halStatus;
17585 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
17586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17587
17588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017590 -------------------------------------------------------------------------*/
17591 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17592 ( NULL == pEventData->pEventData))
17593 {
17594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017595 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 }
17599
17600 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
17601
17602 /*-------------------------------------------------------------------------
17603 Extract response and send it to UMAC
17604 -------------------------------------------------------------------------*/
17605 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017607
17608 /*Notify UMAC*/
17609 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17610
Jeff Johnsone7245742012-09-05 17:12:55 -070017611 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017612}/*WDI_ProcessRemBeaconFilterRsp*/
17613
17614/**
17615 @brief Process set RSSI thresholds Rsp function (called when a
17616 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017617
17618 @param pWDICtx: pointer to the WLAN DAL context
17619 pEventData: pointer to the event information structure
17620
Jeff Johnson295189b2012-06-20 16:38:30 -070017621 @see
17622 @return Result of the function call
17623*/
17624WDI_Status
17625WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017626(
Jeff Johnson295189b2012-06-20 16:38:30 -070017627 WDI_ControlBlockType* pWDICtx,
17628 WDI_EventInfoType* pEventData
17629)
17630{
17631 WDI_Status wdiStatus;
17632 eHalStatus halStatus;
17633 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
17634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17635
17636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017638 -------------------------------------------------------------------------*/
17639 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17640 ( NULL == pEventData->pEventData))
17641 {
17642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017646 }
17647
17648 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
17649
17650 /*-------------------------------------------------------------------------
17651 Extract response and send it to UMAC
17652 -------------------------------------------------------------------------*/
17653 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017654 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017655
17656 /*Notify UMAC*/
17657 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
17658
Jeff Johnsone7245742012-09-05 17:12:55 -070017659 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017660}/*WDI_ProcessSetRSSIThresoldsRsp*/
17661
17662/**
17663 @brief Process host offload Rsp function (called when a
17664 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017665
17666 @param pWDICtx: pointer to the WLAN DAL context
17667 pEventData: pointer to the event information structure
17668
Jeff Johnson295189b2012-06-20 16:38:30 -070017669 @see
17670 @return Result of the function call
17671*/
17672WDI_Status
17673WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017674(
Jeff Johnson295189b2012-06-20 16:38:30 -070017675 WDI_ControlBlockType* pWDICtx,
17676 WDI_EventInfoType* pEventData
17677)
17678{
17679 WDI_Status wdiStatus;
17680 eHalStatus halStatus;
17681 WDI_HostOffloadCb wdiHostOffloadCb;
17682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17683
17684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017685 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 -------------------------------------------------------------------------*/
17687 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17688 ( NULL == pEventData->pEventData))
17689 {
17690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017694 }
17695
17696 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
17697
17698 /*-------------------------------------------------------------------------
17699 Extract response and send it to UMAC
17700 -------------------------------------------------------------------------*/
17701 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017702 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017703
17704 /*Notify UMAC*/
17705 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
17706
Jeff Johnsone7245742012-09-05 17:12:55 -070017707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017708}/*WDI_ProcessHostOffloadRsp*/
17709
17710/**
17711 @brief Process keep alive Rsp function (called when a
17712 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017713
17714 @param pWDICtx: pointer to the WLAN DAL context
17715 pEventData: pointer to the event information structure
17716
Jeff Johnson295189b2012-06-20 16:38:30 -070017717 @see
17718 @return Result of the function call
17719*/
17720WDI_Status
17721WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017722(
Jeff Johnson295189b2012-06-20 16:38:30 -070017723 WDI_ControlBlockType* pWDICtx,
17724 WDI_EventInfoType* pEventData
17725)
17726{
17727 WDI_Status wdiStatus;
17728 eHalStatus halStatus;
17729 WDI_KeepAliveCb wdiKeepAliveCb;
17730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17732 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
17733
17734
17735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 -------------------------------------------------------------------------*/
17738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17739 ( NULL == pEventData->pEventData))
17740 {
17741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017745 }
17746
Jeff Johnsone7245742012-09-05 17:12:55 -070017747 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
17748
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 /*-------------------------------------------------------------------------
17750 Extract response and send it to UMAC
17751 -------------------------------------------------------------------------*/
17752 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017753 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017754
17755 /*Notify UMAC*/
17756 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
17757
Jeff Johnsone7245742012-09-05 17:12:55 -070017758 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017759}/*WDI_ProcessKeepAliveRsp*/
17760
17761/**
17762 @brief Process wowl add ptrn Rsp function (called when a
17763 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017764
17765 @param pWDICtx: pointer to the WLAN DAL context
17766 pEventData: pointer to the event information structure
17767
Jeff Johnson295189b2012-06-20 16:38:30 -070017768 @see
17769 @return Result of the function call
17770*/
17771WDI_Status
17772WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017773(
Jeff Johnson295189b2012-06-20 16:38:30 -070017774 WDI_ControlBlockType* pWDICtx,
17775 WDI_EventInfoType* pEventData
17776)
17777{
Jeff Johnson295189b2012-06-20 16:38:30 -070017778 eHalStatus halStatus;
17779 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017780 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
17781 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
17782
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17784
17785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 -------------------------------------------------------------------------*/
17788 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17789 ( NULL == pEventData->pEventData))
17790 {
17791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017795 }
17796
17797 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
17798
17799 /*-------------------------------------------------------------------------
17800 Extract response and send it to UMAC
17801 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017802 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17803 {
17804 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
17805 pEventData->pEventData,
17806 sizeof(halAddWowlBcastPtrRsp));
17807
17808 wdiWowlAddBcPtrRsp.wdiStatus =
17809 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
17810 }
17811 else
17812 {
17813 halStatus = *((eHalStatus*)pEventData->pEventData);
17814 wdiWowlAddBcPtrRsp.wdiStatus =
17815 WDI_HAL_2_WDI_STATUS(halStatus);
17816 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017817
17818 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017819 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017820
Jeff Johnsone7245742012-09-05 17:12:55 -070017821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017822}/*WDI_ProcessWowlAddBcPtrnRsp*/
17823
17824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017825 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017827
17828 @param pWDICtx: pointer to the WLAN DAL context
17829 pEventData: pointer to the event information structure
17830
Jeff Johnson295189b2012-06-20 16:38:30 -070017831 @see
17832 @return Result of the function call
17833*/
17834WDI_Status
17835WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017836(
Jeff Johnson295189b2012-06-20 16:38:30 -070017837 WDI_ControlBlockType* pWDICtx,
17838 WDI_EventInfoType* pEventData
17839)
17840{
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 eHalStatus halStatus;
17842 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017843 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
17844 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17846
17847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 -------------------------------------------------------------------------*/
17850 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17851 ( NULL == pEventData->pEventData))
17852 {
17853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017857 }
17858
17859 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
17860
17861 /*-------------------------------------------------------------------------
17862 Extract response and send it to UMAC
17863 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017864 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17865 {
17866 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
17867 pEventData->pEventData,
17868 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017869
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017870 wdiWowlDelBcstPtrRsp.wdiStatus =
17871 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
17872 }
17873 else
17874 {
17875 halStatus = *((eHalStatus*)pEventData->pEventData);
17876 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17877 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017878 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017879 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017880
Jeff Johnsone7245742012-09-05 17:12:55 -070017881 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017882}/*WDI_ProcessWowlDelBcPtrnRsp*/
17883
17884/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017885 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017886 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017887
17888 @param pWDICtx: pointer to the WLAN DAL context
17889 pEventData: pointer to the event information structure
17890
Jeff Johnson295189b2012-06-20 16:38:30 -070017891 @see
17892 @return Result of the function call
17893*/
17894WDI_Status
17895WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017896(
Jeff Johnson295189b2012-06-20 16:38:30 -070017897 WDI_ControlBlockType* pWDICtx,
17898 WDI_EventInfoType* pEventData
17899)
17900{
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 eHalStatus halStatus;
17902 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017903 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
17904 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17906
17907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 -------------------------------------------------------------------------*/
17910 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17911 ( NULL == pEventData->pEventData))
17912 {
17913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017914 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 }
17918
17919 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
17920
17921 /*-------------------------------------------------------------------------
17922 Extract response and send it to UMAC
17923 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017924 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17925 {
17926 wpalMemoryCopy( &halEnterWowlRspParams,
17927 (wpt_uint8*)pEventData->pEventData,
17928 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017929
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017930 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
17931 wdiwowlEnterRsp.status =
17932 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
17933 }
17934 else
17935 {
17936 halStatus = *((eHalStatus*)pEventData->pEventData);
17937 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17938 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017939 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017940 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017941
Jeff Johnsone7245742012-09-05 17:12:55 -070017942 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017943}/*WDI_ProcessWowlEnterRsp*/
17944
17945/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017948
17949 @param pWDICtx: pointer to the WLAN DAL context
17950 pEventData: pointer to the event information structure
17951
Jeff Johnson295189b2012-06-20 16:38:30 -070017952 @see
17953 @return Result of the function call
17954*/
17955WDI_Status
17956WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017957(
Jeff Johnson295189b2012-06-20 16:38:30 -070017958 WDI_ControlBlockType* pWDICtx,
17959 WDI_EventInfoType* pEventData
17960)
17961{
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 eHalStatus halStatus;
17963 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017964 tHalExitWowlRspParams halExitWowlRspParams;
17965 WDI_WowlExitRspParamsType wdiWowlExitRsp;
17966
Jeff Johnson295189b2012-06-20 16:38:30 -070017967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17968
17969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017971 -------------------------------------------------------------------------*/
17972 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17973 ( NULL == pEventData->pEventData))
17974 {
17975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017979 }
17980
17981 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
17982
17983 /*-------------------------------------------------------------------------
17984 Extract response and send it to UMAC
17985 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017986 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17987 {
17988 wpalMemoryCopy( &halExitWowlRspParams,
17989 pEventData->pEventData,
17990 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017991
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017992 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
17993 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
17994
17995 }
17996 else
17997 {
17998 halStatus = *((eHalStatus*)pEventData->pEventData);
17999 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18000 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018002 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018003
Jeff Johnsone7245742012-09-05 17:12:55 -070018004 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018005}/*WDI_ProcessWowlExitRsp*/
18006
18007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018008 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018009 (called when a response is being received over the bus
18010 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018011
18012 @param pWDICtx: pointer to the WLAN DAL context
18013 pEventData: pointer to the event information structure
18014
Jeff Johnson295189b2012-06-20 16:38:30 -070018015 @see
18016 @return Result of the function call
18017*/
18018WDI_Status
18019WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018020(
Jeff Johnson295189b2012-06-20 16:38:30 -070018021 WDI_ControlBlockType* pWDICtx,
18022 WDI_EventInfoType* pEventData
18023)
18024{
18025 WDI_Status wdiStatus;
18026 eHalStatus halStatus;
18027 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18029
18030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018032 -------------------------------------------------------------------------*/
18033 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18034 ( NULL == pEventData->pEventData))
18035 {
18036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018040 }
18041
18042 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18043
18044 /*-------------------------------------------------------------------------
18045 Extract response and send it to UMAC
18046 -------------------------------------------------------------------------*/
18047 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018048 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018049
18050 /*Notify UMAC*/
18051 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18052
Jeff Johnsone7245742012-09-05 17:12:55 -070018053 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018054}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18055
18056
18057/**
18058 @brief Process Nv download(called when a response
18059 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018060
18061 @param pWDICtx: pointer to the WLAN DAL context
18062 pEventData: pointer to the event information structure
18063
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 @see
18065 @return Result of the function call
18066*/
18067WDI_Status
18068WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018069(
Jeff Johnson295189b2012-06-20 16:38:30 -070018070 WDI_ControlBlockType* pWDICtx,
18071 WDI_EventInfoType* pEventData
18072)
18073{
18074
18075 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18076 tHalNvImgDownloadRspParams halNvDownloadRsp;
18077 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18078
18079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018081 -------------------------------------------------------------------------*/
18082 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18083 ( NULL == pEventData->pEventData))
18084 {
18085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 }
18090
18091 /*-------------------------------------------------------------------------
18092 Extract response and send it to UMAC
18093 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018094 wpalMemoryCopy( &halNvDownloadRsp,
18095 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 sizeof(halNvDownloadRsp));
18097
18098 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18099
18100 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018101 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18102 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018103 {
18104 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018105 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018106 }
18107 else
18108 {
18109 /*Reset the Nv related global information in WDI context information */
18110 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18111 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18112 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18113 /*call WDA callback function for last fragment */
18114 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18115 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18116 }
18117
Jeff Johnsone7245742012-09-05 17:12:55 -070018118 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018119}
18120#ifdef WLAN_FEATURE_VOWIFI_11R
18121/**
18122 @brief Process Add TSpec Rsp function (called when a response
18123 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018124
18125 @param pWDICtx: pointer to the WLAN DAL context
18126 pEventData: pointer to the event information structure
18127
Jeff Johnson295189b2012-06-20 16:38:30 -070018128 @see
18129 @return Result of the function call
18130*/
18131WDI_Status
18132WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018133(
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 WDI_ControlBlockType* pWDICtx,
18135 WDI_EventInfoType* pEventData
18136)
18137{
18138 WDI_Status wdiStatus;
18139 tAggrAddTsRspParams aggrAddTsRsp;
18140 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18142
18143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018145 -------------------------------------------------------------------------*/
18146 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18147 ( NULL == pEventData->pEventData))
18148 {
18149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018153 }
18154
18155 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18156
18157 /*-------------------------------------------------------------------------
18158 Extract response and send it to UMAC
18159 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018160 wpalMemoryCopy( &aggrAddTsRsp,
18161 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 sizeof(aggrAddTsRsp));
18163
18164 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018165 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018166
18167 /*Notify UMAC*/
18168 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18169
Jeff Johnsone7245742012-09-05 17:12:55 -070018170 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018171}/*WDI_ProcessAddTSpecRsp*/
18172#endif /* WLAN_FEATURE_VOWIFI_11R */
18173
18174/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018175 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018177
18178 @param pWDICtx: pointer to the WLAN DAL context
18179 pEventData: pointer to the event information structure
18180
Jeff Johnson295189b2012-06-20 16:38:30 -070018181 @see
18182 @return Result of the function call
18183*/
18184WDI_Status
18185WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018186(
Jeff Johnson295189b2012-06-20 16:38:30 -070018187 WDI_ControlBlockType* pWDICtx,
18188 WDI_EventInfoType* pEventData
18189)
18190{
18191 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18192 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18193 tHalHostResumeRspParams hostResumeRspMsg;
18194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18195
18196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018198 -------------------------------------------------------------------------*/
18199 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18200 ( NULL == pEventData->pEventData))
18201 {
18202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 }
18207
18208 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18209
18210 /*-------------------------------------------------------------------------
18211 Extract response and send it to UMAC
18212 -------------------------------------------------------------------------*/
18213
Jeff Johnsone7245742012-09-05 17:12:55 -070018214 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018215 (wpt_uint8*)pEventData->pEventData,
18216 sizeof(hostResumeRspMsg));
18217
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 wdiResumeRspParams.wdiStatus =
18219 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018220
18221 /*Notify UMAC*/
18222 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18223
18224 return WDI_STATUS_SUCCESS;
18225}
18226
18227/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018228 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018229 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018230
18231 @param pWDICtx: pointer to the WLAN DAL context
18232 pEventData: pointer to the event information structure
18233
Jeff Johnson295189b2012-06-20 16:38:30 -070018234 @see
18235 @return Result of the function call
18236*/
18237WDI_Status
18238WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018239(
Jeff Johnson295189b2012-06-20 16:38:30 -070018240 WDI_ControlBlockType* pWDICtx,
18241 WDI_EventInfoType* pEventData
18242)
18243{
18244 WDI_Status wdiStatus;
18245 eHalStatus halStatus;
18246 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18248
18249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 -------------------------------------------------------------------------*/
18252 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18253 ( NULL == pEventData->pEventData))
18254 {
18255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018260
18261 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018262
18263 /*-------------------------------------------------------------------------
18264 Extract response and send it to UMAC
18265 -------------------------------------------------------------------------*/
18266 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018267 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018268
18269 /*Notify UMAC*/
18270 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18271
Jeff Johnsone7245742012-09-05 17:12:55 -070018272 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018273}/*WDI_ProcessSetTxPerTrackingRsp*/
18274
18275/*==========================================================================
18276 Indications from HAL
18277 ==========================================================================*/
18278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018279 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 indication of this kind is being received over the bus
18281 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018282
18283 @param pWDICtx: pointer to the WLAN DAL context
18284 pEventData: pointer to the event information structure
18285
Jeff Johnson295189b2012-06-20 16:38:30 -070018286 @see
18287 @return Result of the function call
18288*/
18289WDI_Status
18290WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018291(
Jeff Johnson295189b2012-06-20 16:38:30 -070018292 WDI_ControlBlockType* pWDICtx,
18293 WDI_EventInfoType* pEventData
18294)
18295{
18296 WDI_LowLevelIndType wdiInd;
18297 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18299
18300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018302 -------------------------------------------------------------------------*/
18303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18304 ( NULL == pEventData->pEventData))
18305 {
18306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018310 }
18311
18312 /*-------------------------------------------------------------------------
18313 Extract indication and send it to UMAC
18314 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018315 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18316 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018317 sizeof(tHalRSSINotification));
18318
18319 /*Fill in the indication parameters*/
18320 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18321 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18322 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18323 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18324 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18325 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18326 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18327 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18328 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18329 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18330 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18331 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18332 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018333 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18334 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018335
18336 /*Notify UMAC*/
18337 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018338
18339 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018340}/*WDI_ProcessLowRSSIInd*/
18341
18342
18343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018344 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018345 an indication of this kind is being received over the
18346 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018347
18348 @param pWDICtx: pointer to the WLAN DAL context
18349 pEventData: pointer to the event information structure
18350
Jeff Johnson295189b2012-06-20 16:38:30 -070018351 @see
18352 @return Result of the function call
18353*/
18354WDI_Status
18355WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018356(
Jeff Johnson295189b2012-06-20 16:38:30 -070018357 WDI_ControlBlockType* pWDICtx,
18358 WDI_EventInfoType* pEventData
18359)
18360{
18361 WDI_Status wdiStatus;
18362 eHalStatus halStatus;
18363 WDI_LowLevelIndType wdiInd;
18364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18365
18366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018368 -------------------------------------------------------------------------*/
18369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18370 ( NULL == pEventData->pEventData))
18371 {
18372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018376 }
18377
18378 /*-------------------------------------------------------------------------
18379 Extract indication and send it to UMAC
18380 -------------------------------------------------------------------------*/
18381 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18382 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018383 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018384
18385 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018386 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
18387
Jeff Johnson295189b2012-06-20 16:38:30 -070018388 /*Notify UMAC*/
18389 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018390
18391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018392}/*WDI_ProcessMissedBeaconInd*/
18393
18394
18395/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018396 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 an indication of this kind is being received over the
18398 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018399
18400 @param pWDICtx: pointer to the WLAN DAL context
18401 pEventData: pointer to the event information structure
18402
Jeff Johnson295189b2012-06-20 16:38:30 -070018403 @see
18404 @return Result of the function call
18405*/
18406WDI_Status
18407WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018408(
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 WDI_ControlBlockType* pWDICtx,
18410 WDI_EventInfoType* pEventData
18411)
18412{
18413 WDI_Status wdiStatus;
18414 eHalStatus halStatus;
18415 WDI_LowLevelIndType wdiInd;
18416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18417
18418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 -------------------------------------------------------------------------*/
18421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18422 ( NULL == pEventData->pEventData))
18423 {
18424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018428 }
18429
18430 /*-------------------------------------------------------------------------
18431 Extract indication and send it to UMAC
18432 -------------------------------------------------------------------------*/
18433 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18434 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018435 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018436
18437 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018438 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018439 /* ! TO DO - fill in from HAL struct:
18440 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18441
18442 /*Notify UMAC*/
18443 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018444
18445 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018446}/*WDI_ProcessUnkAddrFrameInd*/
18447
18448
18449/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018450 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018451 indication of this kind is being received over the bus
18452 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018453
18454 @param pWDICtx: pointer to the WLAN DAL context
18455 pEventData: pointer to the event information structure
18456
Jeff Johnson295189b2012-06-20 16:38:30 -070018457 @see
18458 @return Result of the function call
18459*/
18460WDI_Status
18461WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018462(
Jeff Johnson295189b2012-06-20 16:38:30 -070018463 WDI_ControlBlockType* pWDICtx,
18464 WDI_EventInfoType* pEventData
18465)
18466{
18467 WDI_LowLevelIndType wdiInd;
18468 tpSirMicFailureInd pHalMicFailureInd;
18469
18470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18471
18472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018473 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 -------------------------------------------------------------------------*/
18475 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18476 ( NULL == pEventData->pEventData))
18477 {
18478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018479 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018482 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018483
Jeff Johnson295189b2012-06-20 16:38:30 -070018484 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18485 /*-------------------------------------------------------------------------
18486 Extract indication and send it to UMAC
18487 -------------------------------------------------------------------------*/
18488
18489 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018490 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018491 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18492 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18493 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18494 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18495 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18496 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18497 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18498 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018499 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018501 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018502 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018503 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018504 pHalMicFailureInd->info.keyId;
18505 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18506 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18507 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18508 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
18509 /*Notify UMAC*/
18510 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018511
18512 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018513}/*WDI_ProcessMicFailureInd*/
18514
18515
18516/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018517 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 an indication of this kind is being received over the
18519 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018520
18521 @param pWDICtx: pointer to the WLAN DAL context
18522 pEventData: pointer to the event information structure
18523
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 @see
18525 @return Result of the function call
18526*/
18527WDI_Status
18528WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018529(
Jeff Johnson295189b2012-06-20 16:38:30 -070018530 WDI_ControlBlockType* pWDICtx,
18531 WDI_EventInfoType* pEventData
18532)
18533{
18534 WDI_Status wdiStatus;
18535 eHalStatus halStatus;
18536 WDI_LowLevelIndType wdiInd;
18537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18538
18539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018541 -------------------------------------------------------------------------*/
18542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18543 ( NULL == pEventData->pEventData))
18544 {
18545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 }
18550
18551 /*-------------------------------------------------------------------------
18552 Extract indication and send it to UMAC
18553 -------------------------------------------------------------------------*/
18554
18555 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18556 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018557 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018558
18559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18560 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070018561
Jeff Johnson295189b2012-06-20 16:38:30 -070018562 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018563 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
18564 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018565
18566 /*Notify UMAC*/
18567 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018568
18569 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018570}/*WDI_ProcessFatalErrorInd*/
18571
18572/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018573 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018574 an indication of this kind is being received over the
18575 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018576
18577 @param pWDICtx: pointer to the WLAN DAL context
18578 pEventData: pointer to the event information structure
18579
Jeff Johnson295189b2012-06-20 16:38:30 -070018580 @see
18581 @return Result of the function call
18582*/
18583WDI_Status
18584WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018585(
Jeff Johnson295189b2012-06-20 16:38:30 -070018586 WDI_ControlBlockType* pWDICtx,
18587 WDI_EventInfoType* pEventData
18588)
18589{
18590 tDeleteStaContextParams halDelSTACtx;
18591 WDI_LowLevelIndType wdiInd;
18592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18593
18594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 -------------------------------------------------------------------------*/
18597 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18598 ( NULL == pEventData->pEventData))
18599 {
18600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 }
18605
18606 /*-------------------------------------------------------------------------
18607 Extract indication and send it to UMAC
18608 -------------------------------------------------------------------------*/
18609
18610 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 wpalMemoryCopy( &halDelSTACtx,
18612 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018613 sizeof(halDelSTACtx));
18614
18615 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018617
18618 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
18619 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
18620 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
18621 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
18622
Jeff Johnsone7245742012-09-05 17:12:55 -070018623 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018625 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018626 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018627 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
18628 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070018629
18630 /*Notify UMAC*/
18631 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018632
18633 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018634}/*WDI_ProcessDelSTAInd*/
18635
18636/**
18637*@brief Process Coex Indication function (called when
18638 an indication of this kind is being received over the
18639 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018640
18641 @param pWDICtx: pointer to the WLAN DAL context
18642 pEventData: pointer to the event information structure
18643
Jeff Johnson295189b2012-06-20 16:38:30 -070018644 @see
18645 @return Result of the function call
18646*/
18647WDI_Status
18648WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018649(
Jeff Johnson295189b2012-06-20 16:38:30 -070018650 WDI_ControlBlockType* pWDICtx,
18651 WDI_EventInfoType* pEventData
18652)
18653{
18654 WDI_LowLevelIndType wdiInd;
18655 tCoexIndMsg halCoexIndMsg;
18656 wpt_uint32 index;
18657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18658
18659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018661 -------------------------------------------------------------------------*/
18662 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18663 ( NULL == pEventData->pEventData ))
18664 {
18665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018667 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070018668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 }
18670
18671 /*-------------------------------------------------------------------------
18672 Extract indication and send it to UMAC
18673 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018674 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
18675 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 sizeof(halCoexIndMsg.coexIndParams) );
18677
18678 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018679 wdiInd.wdiIndicationType = WDI_COEX_IND;
18680 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070018681 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
18682 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018683 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 }
18685
18686 // DEBUG
18687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18688 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070018689 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
18690 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
18691 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
18692 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
18693 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070018694
18695 /*Notify UMAC*/
18696 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018697
18698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018699}/*WDI_ProcessCoexInd*/
18700
18701/**
18702*@brief Process Tx Complete Indication function (called when
18703 an indication of this kind is being received over the
18704 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018705
18706 @param pWDICtx: pointer to the WLAN DAL context
18707 pEventData: pointer to the event information structure
18708
Jeff Johnson295189b2012-06-20 16:38:30 -070018709 @see
18710 @return Result of the function call
18711*/
18712WDI_Status
18713WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018714(
Jeff Johnson295189b2012-06-20 16:38:30 -070018715 WDI_ControlBlockType* pWDICtx,
18716 WDI_EventInfoType* pEventData
18717)
18718{
18719 WDI_LowLevelIndType wdiInd;
18720 tTxComplIndMsg halTxComplIndMsg;
18721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18722
18723 /*-------------------------------------------------------------------------
18724 Sanity check
18725 -------------------------------------------------------------------------*/
18726 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18727 ( NULL == pEventData->pEventData ))
18728 {
18729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018731 WDI_ASSERT( 0 );
18732 return WDI_STATUS_E_FAILURE;
18733 }
18734
18735 /*-------------------------------------------------------------------------
18736 Extract indication and send it to UMAC
18737 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018738 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
18739 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018740 sizeof(halTxComplIndMsg.txComplParams) );
18741
18742 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018743 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
18744 wdiInd.wdiIndicationData.tx_complete_status
18745 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070018746
18747 /*Notify UMAC*/
18748 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018749
18750 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018751}/*WDI_ProcessTxCompleteInd*/
18752
18753#ifdef WLAN_FEATURE_P2P
18754/**
Viral Modi9dc288a2012-12-10 13:09:21 -080018755*@brief Process Noa Start Indication function (called when
18756 an indication of this kind is being received over the
18757 bus from HAL)
18758
18759 @param pWDICtx: pointer to the WLAN DAL context
18760 pEventData: pointer to the event information structure
18761
18762 @see
18763 @return Result of the function call
18764*/
18765WDI_Status
18766WDI_ProcessP2pNoaStartInd
18767(
18768 WDI_ControlBlockType* pWDICtx,
18769 WDI_EventInfoType* pEventData
18770)
18771{
18772 WDI_LowLevelIndType wdiInd;
18773 tNoaStartIndMsg halNoaStartIndMsg;
18774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18775
18776 /*-------------------------------------------------------------------------
18777 Sanity check
18778 -------------------------------------------------------------------------*/
18779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18780 ( NULL == pEventData->pEventData ))
18781 {
18782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18783 "%s: Invalid parameters", __func__);
18784 WDI_ASSERT( 0 );
18785 return WDI_STATUS_E_FAILURE;
18786 }
18787
18788 /*-------------------------------------------------------------------------
18789 Extract indication and send it to UMAC
18790 -------------------------------------------------------------------------*/
18791 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
18792 pEventData->pEventData,
18793 sizeof(halNoaStartIndMsg.noaStartIndParams) );
18794
18795 /*Fill in the indication parameters*/
18796 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
18797
18798 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
18799 = halNoaStartIndMsg.noaStartIndParams.status;
18800
18801 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
18802 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
18803
18804 /*Notify UMAC*/
18805 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18806
18807 return WDI_STATUS_SUCCESS;
18808}/*WDI_ProcessNoaAttrInd*/
18809
18810/**
Jeff Johnson295189b2012-06-20 16:38:30 -070018811*@brief Process Noa Attr Indication function (called when
18812 an indication of this kind is being received over the
18813 bus from HAL)
18814
18815 @param pWDICtx: pointer to the WLAN DAL context
18816 pEventData: pointer to the event information structure
18817
18818 @see
18819 @return Result of the function call
18820*/
18821WDI_Status
18822WDI_ProcessP2pNoaAttrInd
18823(
18824 WDI_ControlBlockType* pWDICtx,
18825 WDI_EventInfoType* pEventData
18826)
18827{
18828 WDI_LowLevelIndType wdiInd;
18829 tNoaAttrIndMsg halNoaAttrIndMsg;
18830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18831
18832 /*-------------------------------------------------------------------------
18833 Sanity check
18834 -------------------------------------------------------------------------*/
18835 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18836 ( NULL == pEventData->pEventData ))
18837 {
18838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018839 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018840 WDI_ASSERT( 0 );
18841 return WDI_STATUS_E_FAILURE;
18842 }
18843
18844 /*-------------------------------------------------------------------------
18845 Extract indication and send it to UMAC
18846 -------------------------------------------------------------------------*/
18847 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
18848 pEventData->pEventData,
18849 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
18850
18851 /*Fill in the indication parameters*/
18852 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070018853
Jeff Johnson295189b2012-06-20 16:38:30 -070018854 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
18855 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070018856
Jeff Johnson295189b2012-06-20 16:38:30 -070018857 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
18858 = halNoaAttrIndMsg.noaAttrIndParams.index;
18859 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
18860 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
18861 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
18862 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070018863
Jeff Johnson295189b2012-06-20 16:38:30 -070018864 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
18865 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
18866 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
18867 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
18868 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
18869 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
18870 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
18871 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070018872
Jeff Johnson295189b2012-06-20 16:38:30 -070018873 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
18874 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
18875 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
18876 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
18877 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
18878 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
18879 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
18880 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
18881
18882 /*Notify UMAC*/
18883 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18884
18885 return WDI_STATUS_SUCCESS;
18886}/*WDI_ProcessNoaAttrInd*/
18887#endif
18888
18889/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018890 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018891 an indication of this kind is being received over the
18892 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018893
18894 @param pWDICtx: pointer to the WLAN DAL context
18895 pEventData: pointer to the event information structure
18896
Jeff Johnson295189b2012-06-20 16:38:30 -070018897 @see
18898 @return Result of the function call
18899*/
18900WDI_Status
18901WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018902(
Jeff Johnson295189b2012-06-20 16:38:30 -070018903 WDI_ControlBlockType* pWDICtx,
18904 WDI_EventInfoType* pEventData
18905)
18906{
18907 WDI_LowLevelIndType wdiInd;
18908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070018909
Jeff Johnson295189b2012-06-20 16:38:30 -070018910 /*-------------------------------------------------------------------------
18911 Extract indication and send it to UMAC
18912 -------------------------------------------------------------------------*/
18913 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018914 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
18915
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 /*Notify UMAC*/
18917 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18918
Jeff Johnsone7245742012-09-05 17:12:55 -070018919 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018920}/*WDI_ProcessTxPerHitInd*/
18921
18922#ifdef ANI_MANF_DIAG
18923/**
18924 @brief WDI_ProcessFTMCommandReq
18925 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018926
18927 @param pWDICtx: pointer to the WLAN DAL context
18928 pEventData: pointer to the event information structure
18929
Jeff Johnson295189b2012-06-20 16:38:30 -070018930 @see
18931 @return Result of the function call
18932*/
18933WDI_Status
18934WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018935(
Jeff Johnson295189b2012-06-20 16:38:30 -070018936 WDI_ControlBlockType* pWDICtx,
18937 WDI_EventInfoType* pEventData
18938)
18939{
18940 WDI_FTMCommandReqType *ftmCommandReq = NULL;
18941 wpt_uint8 *ftmCommandBuffer = NULL;
18942 wpt_uint16 dataOffset;
18943 wpt_uint16 bufferSize;
18944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018945 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 -------------------------------------------------------------------------*/
18947 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18948 ( NULL == pEventData->pEventData))
18949
18950 {
18951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018952 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018955 }
18956
18957 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
18958
18959 /* Get MSG Buffer */
18960 WDI_GetMessageBuffer(pWDICtx,
18961 WDI_FTM_CMD_REQ,
18962 ftmCommandReq->bodyLength,
18963 &ftmCommandBuffer,
18964 &dataOffset,
18965 &bufferSize);
18966
18967 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
18968 ftmCommandReq->FTMCommandBody,
18969 ftmCommandReq->bodyLength);
18970
18971 /* Send MSG */
18972 return WDI_SendMsg(pWDICtx,
18973 ftmCommandBuffer,
18974 bufferSize,
18975 pEventData->pCBfnc,
18976 pEventData->pUserData,
18977 WDI_FTM_CMD_RESP);
18978}
18979
18980/**
18981 @brief WDI_ProcessFTMCommandRsp
18982 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070018983
18984 @param pWDICtx: pointer to the WLAN DAL context
18985 pEventData: pointer to the event information structure
18986
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 @see
18988 @return Result of the function call
18989*/
18990WDI_Status
18991WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018992(
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 WDI_ControlBlockType* pWDICtx,
18994 WDI_EventInfoType* pEventData
18995)
18996{
18997 WDI_FTMCommandRspCb ftmCMDRspCb;
18998 tProcessPttRspParams *ftmCMDRspData = NULL;
18999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19000
19001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019003 -------------------------------------------------------------------------*/
19004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19005 ( NULL == pEventData->pEventData))
19006 {
19007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019008 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019011 }
19012
19013 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19014
19015 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19016
Jeff Johnsone7245742012-09-05 17:12:55 -070019017 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19018 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19020
19021 /*Notify UMAC*/
19022 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19023
Jeff Johnsone7245742012-09-05 17:12:55 -070019024 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019025}
19026#endif /* ANI_MANF_DIAG */
19027/**
19028 @brief WDI_ProcessHalDumpCmdReq
19029 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019030
19031 @param pWDICtx: pointer to the WLAN DAL context
19032 pEventData: pointer to the event information structure
19033
Jeff Johnson295189b2012-06-20 16:38:30 -070019034 @see
19035 @return Result of the function call
19036*/
19037WDI_Status
19038WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019039(
Jeff Johnson295189b2012-06-20 16:38:30 -070019040 WDI_ControlBlockType* pWDICtx,
19041 WDI_EventInfoType* pEventData
19042)
19043{
19044 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19045 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19046 wpt_uint16 usDataOffset = 0;
19047 wpt_uint16 usSendSize = 0;
19048 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019049 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019050
19051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019052 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019053 -------------------------------------------------------------------------*/
19054 if (( NULL == pEventData ) ||
19055 ( NULL == pEventData->pEventData) ||
19056 ( NULL == pEventData->pCBfnc ))
19057 {
19058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019059 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019062 }
19063
19064 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19065 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19066
19067 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019068 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019069 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019070 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019071 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019072 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019073 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019074 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019075 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019076 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019078
Jeff Johnson295189b2012-06-20 16:38:30 -070019079 /*-----------------------------------------------------------------------
19080 Get message buffer
19081 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019082 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019083 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19084 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019085 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19087 {
19088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19089 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19090 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019093 }
19094
Jeff Johnsone7245742012-09-05 17:12:55 -070019095 wpalMemoryCopy( pSendBuffer+usDataOffset,
19096 &halDumpCmdReqMsg.dumpCmdReqParams,
19097 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019098
19099 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019100 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019101
19102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019103 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19106 wdiHALDumpCmdRspCb, pEventData->pUserData,
19107 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019108}
19109
19110/**
19111 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019112 Process hal Dump Command Response from HAL, simply route to HDD
19113
19114 @param pWDICtx: pointer to the WLAN DAL context
19115 pEventData: pointer to the event information structure
19116
Jeff Johnson295189b2012-06-20 16:38:30 -070019117 @see
19118 @return Result of the function call
19119*/
19120WDI_Status
19121WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019122(
Jeff Johnson295189b2012-06-20 16:38:30 -070019123 WDI_ControlBlockType* pWDICtx,
19124 WDI_EventInfoType* pEventData
19125)
19126{
19127 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019128 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019129 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19130
19131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019133 -------------------------------------------------------------------------*/
19134 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19135 ( NULL == pEventData->pEventData))
19136 {
19137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019138 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019141 }
19142
Jeff Johnsone7245742012-09-05 17:12:55 -070019143 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019144
19145 /*Initialize the WDI Response structure */
19146 wdiHALDumpCmdRsp.usBufferLen = 0;
19147 wdiHALDumpCmdRsp.pBuffer = NULL;
19148
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019149 wpalMemoryCopy( &halDumpCmdRspParams,
19150 pEventData->pEventData,
19151 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019152
19153 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019154 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019155
19156 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019157 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019158 {
19159 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019160 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19161 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19162
19163 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19164 &halDumpCmdRspParams.rspBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019165 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19166 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019167
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 /*Notify UMAC*/
19169 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19170
19171 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19172 {
19173 /* Free the allocated buffer */
19174 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19175 }
19176 return WDI_STATUS_SUCCESS;
19177}
19178
19179/*==========================================================================
19180 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019181
Jeff Johnson295189b2012-06-20 16:38:30 -070019182 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019183 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019184==========================================================================*/
19185/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019186 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019187 when it wishes to send up a notification like the ones
19188 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019189
Jeff Johnson295189b2012-06-20 16:38:30 -070019190 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019191
19192 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019193 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019194 wctsNotifyCBData: the callback data of the user
19195
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019197
19198 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019199*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019200void
Jeff Johnson295189b2012-06-20 16:38:30 -070019201WDI_NotifyMsgCTSCB
19202(
Jeff Johnsone7245742012-09-05 17:12:55 -070019203 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019204 WCTS_NotifyEventType wctsEvent,
19205 void* wctsNotifyCBData
19206)
19207{
Jeff Johnsone7245742012-09-05 17:12:55 -070019208 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19210
19211 if (NULL == pWDICtx )
19212 {
19213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019214 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019216 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 }
19218
19219 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19220 {
19221 /* callback presumably occurred after close */
19222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019223 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019224 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019225 }
19226
19227 if ( WCTS_EVENT_OPEN == wctsEvent )
19228 {
19229 /*Flag must be set atomically as it is checked from incoming request
19230 functions*/
19231 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019233
19234 /*Nothing to do - so try to dequeue any pending request that may have
19235 occurred while we were trying to establish this*/
19236 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019237 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019238 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019239 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019240 {
19241 /*Flag must be set atomically as it is checked from incoming request
19242 functions*/
19243 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019244 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019245
19246 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019247 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019248 wpalMutexRelease(&pWDICtx->wptMutex);
19249
19250 /*Notify that the Control Channel is closed */
19251 wpalEventSet(&pWDICtx->wctsActionEvent);
19252 }
19253
19254}/*WDI_NotifyMsgCTSCB*/
19255
19256
19257/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019258 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019259 when it wishes to send up a packet received over the
19260 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019261
Jeff Johnson295189b2012-06-20 16:38:30 -070019262 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019263
19264 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019265 pMsg: the packet
19266 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019267 wctsRxMsgCBData: the callback data of the user
19268
Jeff Johnson295189b2012-06-20 16:38:30 -070019269 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019270
19271 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019272*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019273void
19274WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019275(
Jeff Johnsone7245742012-09-05 17:12:55 -070019276 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019277 void* pMsg,
19278 wpt_uint32 uLen,
19279 void* wctsRxMsgCBData
19280)
19281{
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 tHalMsgHeader *pHalMsgHeader;
19283 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019284 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19286
19287 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019289 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019290 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019291 ( uLen < sizeof(tHalMsgHeader)))
19292 {
19293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019296 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019297 }
19298
19299 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19300 {
19301 /* callback presumably occurred after close */
19302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019303 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019304 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019305 }
19306
Jeff Johnsone7245742012-09-05 17:12:55 -070019307 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019308 context - so no serialization is necessary here
19309 ! - revisit this assumption */
19310
19311 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19312
19313 if ( uLen != pHalMsgHeader->msgLen )
19314 {
19315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19316 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019317 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19318 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 }
19320
19321 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19322
19323 /*The message itself starts after the header*/
19324 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19325 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19326 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19327 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19328
19329
19330 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19331 {
19332 /*Stop the timer as the response was received */
19333 /*!UT - check for potential race conditions between stop and response */
19334 wpalTimerStop(&pWDICtx->wptResponseTimer);
19335 }
19336 /* Check if we receive a response message which is not expected */
19337 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19338 {
19339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19340 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19341 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019342 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019343 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19344 pWDICtx->wdiExpectedResponse);
19345 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19346 return;
19347 }
19348
19349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19350 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19351
19352 /*Post response event to the state machine*/
19353 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19354
19355}/*WDI_RXMsgCTSCB*/
19356
19357
19358/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019359 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019360========================================================================*/
19361
19362/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019363 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019364 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019365
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 @param pWDICtx - pointer to the control block
19367
19368 @return Result of the function call
19369*/
19370WPT_INLINE WDI_Status
19371WDI_CleanCB
19372(
19373 WDI_ControlBlockType* pWDICtx
19374)
19375{
19376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19377
19378 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019379 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019380
Jeff Johnsone7245742012-09-05 17:12:55 -070019381 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19383 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19384
19385 WDI_ResetAssocSessions( pWDICtx );
19386
19387 return WDI_STATUS_SUCCESS;
19388}/*WDI_CleanCB*/
19389
19390
19391/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019392 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019393
Jeff Johnsone7245742012-09-05 17:12:55 -070019394
19395 @param pWDICtx: pointer to the WLAN DAL context
19396 pEventData: pointer to the event information structure
19397
Jeff Johnson295189b2012-06-20 16:38:30 -070019398 @see
19399 @return Result of the function call
19400*/
19401WPT_INLINE WDI_Status
19402WDI_ProcessRequest
19403(
19404 WDI_ControlBlockType* pWDICtx,
19405 WDI_EventInfoType* pEventData
19406)
19407{
19408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19409
Jeff Johnsone7245742012-09-05 17:12:55 -070019410 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019411 already checked these pointers*/
19412
19413 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19414 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019415 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19417 "Calling request processing function for req %s (%d) %x",
19418 WDI_getReqMsgString(pEventData->wdiRequest),
19419 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19420 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19421 }
19422 else
19423 {
19424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019425 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 pEventData->wdiRequest);
19427 return WDI_STATUS_E_NOT_IMPLEMENT;
19428 }
19429}/*WDI_ProcessRequest*/
19430
19431
19432/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019433 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019434 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019435 prefixes it with a send message header
19436
19437 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019438 wdiReqType: type of the request being sent
19439 uBufferLen: message buffer len
19440 pMsgBuffer: resulting allocated buffer
19441 pusDataOffset: offset in the buffer where the caller
19442 can start copying its message data
19443 puBufferSize: the resulting buffer size (offset+buff
19444 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019445
Jeff Johnson295189b2012-06-20 16:38:30 -070019446 @see
19447 @return Result of the function call
19448*/
19449WDI_Status
19450WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019451(
19452 WDI_ControlBlockType* pWDICtx,
19453 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019454 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019455 wpt_uint8** pMsgBuffer,
19456 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019457 wpt_uint16* pusBufferSize
19458)
19459{
19460 tHalMsgHeader halMsgHeader;
19461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19462
Jeff Johnsone7245742012-09-05 17:12:55 -070019463 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019464 again*/
19465
19466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019467 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019468 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019469 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019470 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19471 if ( NULL == *pMsgBuffer )
19472 {
19473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19474 "Unable to allocate message buffer for req %s (%d)",
19475 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019476 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019478 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019479 }
19480
19481 /*-------------------------------------------------------------------------
19482 Fill in the message header
19483 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019484 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19485 /* Fill msgVersion */
19486#ifdef WLAN_FEATURE_11AC
19487 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019488 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 else
19490#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019491 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019492
Jeff Johnsone7245742012-09-05 17:12:55 -070019493 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19494 *pusDataOffset = sizeof(halMsgHeader);
19495 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19496
19497 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019498}/*WDI_GetMessageBuffer*/
19499
19500
19501/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019502 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019504 the CB
19505
19506 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019507 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019508
Jeff Johnson295189b2012-06-20 16:38:30 -070019509 usSendSize size of the buffer to be sent
19510 pRspCb: response callback - save in the WDI
19511 CB
19512 pUserData: user data associated with the
19513 callback
19514 wdiExpectedResponse: the code of the response that is
19515 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019516
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 @see
19518 @return Result of the function call
19519*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019520WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019521WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019522(
19523 WDI_ControlBlockType* pWDICtx,
19524 wpt_uint8* pSendBuffer,
19525 wpt_uint32 usSendSize,
19526 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019527 void* pUserData,
19528 WDI_ResponseEnumType wdiExpectedResponse
19529)
19530{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019531 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019532 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070019533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19534
19535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019536 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019537 ------------------------------------------------------------------------*/
19538 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019539 pWDICtx->pfncRspCB = pRspCb;
19540 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019541
19542 /*-----------------------------------------------------------------------
19543 Call the CTS to send this message over - free message afterwards
19544 - notify transport failure
19545 Note: CTS is reponsible for freeing the message buffer.
19546 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019547 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
19548 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
19549 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070019550 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 "Failed to send message over the bus - catastrophic failure");
19553
Jeff Johnsond13512a2012-07-17 11:42:19 -070019554 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019555 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019556 else
19557 {
19558 /* even when message was placed in CTS deferred Q, we will treat it
19559 success but log this info
19560 */
19561 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
19562 {
19563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19564 "WDI_SendMsg: message placed in CTS deferred Q, expected "
19565 "response %s (%d)",
19566 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19567 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080019568 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019569 }
19570 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019571
Jeff Johnsond13512a2012-07-17 11:42:19 -070019572 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019573 if ( NULL != pWDICtx->wdiReqStatusCB )
19574 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019575 /*Inform originator whether request went through or not*/
19576 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
19577 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019578 pWDICtx->wdiReqStatusCB = NULL;
19579 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070019580 callback(wdiStatus, callbackContext);
19581
19582 /*For WDI requests which have registered a request callback,
19583 inform the WDA caller of the same via setting the return value
19584 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
19585 end up repeating the functonality in the req callback for the
19586 WDI_STATUS_E_FAILURE case*/
19587 if (wdiStatus == WDI_STATUS_E_FAILURE)
19588 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070019589 }
19590
Jeff Johnsond13512a2012-07-17 11:42:19 -070019591 if ( wdiStatus == WDI_STATUS_SUCCESS )
19592 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019593 /*Start timer for the expected response */
19594 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019595
19596 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080019597 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070019598 }
19599 else
19600 {
Jeff Johnson1920a722012-12-10 14:28:09 -080019601 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070019602 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19603 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019604
Jeff Johnsond13512a2012-07-17 11:42:19 -070019605 return wdiStatus;
19606
Jeff Johnson295189b2012-06-20 16:38:30 -070019607}/*WDI_SendMsg*/
19608
19609
19610
19611/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019612 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019613 the bus using the control transport and saves some info
19614 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070019615
19616 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019617 pSendBuffer: buffer to be sent
19618 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019619
Jeff Johnson295189b2012-06-20 16:38:30 -070019620 @see
19621 @return Result of the function call
19622*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019623WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019624WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070019625(
19626 WDI_ControlBlockType* pWDICtx,
19627 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019628 wpt_uint32 usSendSize
19629)
19630{
19631 wpt_uint32 uStatus ;
19632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19633
19634 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019635 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019636 Note: CTS is reponsible for freeing the message buffer.
19637 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019638 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019639 (void*)pSendBuffer, usSendSize );
19640
19641 /*Inform Upper MAC about the outcome of the request*/
19642 if ( NULL != pWDICtx->wdiReqStatusCB )
19643 {
19644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19645 "Send indication status : %d", uStatus);
19646
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019647 /* even if CTS placed indication into its deferred Q, we treat it
19648 * as success and let CTS drain its queue as per smd interrupt to CTS
19649 */
19650 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 -070019651 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019652 }
19653
19654 /*If sending of the message failed - it is considered catastrophic and
19655 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019656 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
19657 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
19658
Jeff Johnson295189b2012-06-20 16:38:30 -070019659 {
19660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070019661 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070019662
19663 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19664 return WDI_STATUS_E_FAILURE;
19665 }
19666
Jeff Johnsone7245742012-09-05 17:12:55 -070019667 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019668}/*WDI_SendIndication*/
19669
19670
19671/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019672 @brief WDI_DetectedDeviceError - called internally by DAL when
19673 it has detected a failure in the device
19674
19675 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019676 usErrorCode: error code detected by WDI or received
19677 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019678
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070019680 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019681*/
19682void
19683WDI_DetectedDeviceError
19684(
19685 WDI_ControlBlockType* pWDICtx,
19686 wpt_uint16 usErrorCode
19687)
19688{
19689 WDI_LowLevelIndType wdiInd;
19690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19691
19692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19693 "Device Error detected code: %d - transitioning to stopped state",
19694 usErrorCode);
19695
19696 wpalMutexAcquire(&pWDICtx->wptMutex);
19697
19698 WDI_STATableStop(pWDICtx);
19699
19700 WDI_ResetAssocSessions(pWDICtx);
19701
19702 /*Set the expected state transition to stopped - because the device
19703 experienced a failure*/
19704 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
19705
19706 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019707 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070019708
Jeff Johnsone7245742012-09-05 17:12:55 -070019709 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019710
19711 /*TO DO: - there should be an attempt to reset the device here*/
19712
19713 wpalMutexRelease(&pWDICtx->wptMutex);
19714
19715 /*------------------------------------------------------------------------
19716 Notify UMAC if a handler is registered
19717 ------------------------------------------------------------------------*/
19718 if (pWDICtx->wdiLowLevelIndCB)
19719 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019720 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19721 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019722
19723 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
19724 }
19725}/*WDI_DetectedDeviceError*/
19726
19727/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019728 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 we started on send message has expire - this should
19730 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070019731 reply - trigger catastrophic failure
19732 @param
19733
Jeff Johnson295189b2012-06-20 16:38:30 -070019734 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070019735
19736 @see
19737 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019738*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019739void
Jeff Johnson295189b2012-06-20 16:38:30 -070019740WDI_ResponseTimerCB
19741(
19742 void *pUserData
19743)
19744{
19745 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
19746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19747
19748 if (NULL == pWDICtx )
19749 {
19750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019753 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019754 }
19755
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019756 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080019757 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019758
19759 /* If response timer is running at this time that means this timer
19760 * event is not for the last request but rather last-to-last request and
19761 * this timer event has come after we recevied respone for last-to-last
19762 * message
19763 */
19764 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
19765 {
19766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19767 "WDI_ResponseTimerCB: timer in running state on timer event, "
19768 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19769 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
19770 return;
19771 }
19772
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
19774 {
19775
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053019776 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019777 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019778 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070019779 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019780 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19781 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019782 /* WDI timeout means Riva is not responding or SMD communication to Riva
19783 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019784 * is to initiate SSR from APPS
19785 * There is also an option to re-enable wifi, which will eventually
19786 * trigger SSR
19787 */
19788#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070019789 wpalWcnssResetIntr();
19790 /* if this timer fires, it means Riva did not receive the FIQ */
19791 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019792#else
19793 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19794 wpalWlanReload();
19795#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 }
19797 else
19798 {
19799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019800 "Timeout occurred but not waiting for any response %d "
19801 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19802 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19803 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 }
19805
19806 return;
19807
19808}/*WDI_ResponseTimerCB*/
19809
19810
19811/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019812 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019813
Jeff Johnsone7245742012-09-05 17:12:55 -070019814
19815 @param pWDICtx: pointer to the WLAN DAL context
19816 pEventData: pointer to the event information structure
19817
Jeff Johnson295189b2012-06-20 16:38:30 -070019818 @see
19819 @return Result of the function call
19820*/
19821WPT_INLINE WDI_Status
19822WDI_ProcessResponse
19823(
19824 WDI_ControlBlockType* pWDICtx,
19825 WDI_EventInfoType* pEventData
19826)
19827{
19828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19829
Jeff Johnsone7245742012-09-05 17:12:55 -070019830 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070019831 already checked these pointers
19832 ! - revisit this assumption */
19833 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
19834 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019835 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019836 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070019837 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070019838 WDI_getRespMsgString(pEventData->wdiResponse),
19839 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
19840 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
19841 }
19842 else
19843 {
19844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019845 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019846 pEventData->wdiResponse);
19847 return WDI_STATUS_E_NOT_IMPLEMENT;
19848 }
19849}/*WDI_ProcessResponse*/
19850
19851
19852/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019853 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070019854=========================================================================*/
19855
19856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019857 @brief Utility function used by the DAL Core to help queue a
19858 request that cannot be processed right away.
19859 @param
19860
Jeff Johnson295189b2012-06-20 16:38:30 -070019861 pWDICtx: - pointer to the WDI control block
19862 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019863 queued
19864
19865 @see
19866 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019867*/
19868WDI_Status
19869WDI_QueuePendingReq
19870(
19871 WDI_ControlBlockType* pWDICtx,
19872 WDI_EventInfoType* pEventData
19873)
19874{
Jeff Johnsone7245742012-09-05 17:12:55 -070019875 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019876 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070019877 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19879
19880 if ( NULL == pEventDataQueue )
19881 {
19882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019883 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070019884 WDI_ASSERT(0);
19885 return WDI_STATUS_MEM_FAILURE;
19886 }
19887
19888 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19889 pEventDataQueue->pUserData = pEventData->pUserData;
19890 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19891 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019892 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019893
19894 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
19895 {
19896 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019897
Jeff Johnson295189b2012-06-20 16:38:30 -070019898 if ( NULL == pEventInfo )
19899 {
19900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019901 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070019902 WDI_ASSERT(0);
19903 wpalMemoryFree(pEventDataQueue);
19904 return WDI_STATUS_MEM_FAILURE;
19905 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019906
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19908
19909 }
19910 pEventDataQueue->pEventData = pEventInfo;
19911
19912 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019913 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019914
Jeff Johnsone7245742012-09-05 17:12:55 -070019915 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019916
19917 return WDI_STATUS_SUCCESS;
19918}/*WDI_QueuePendingReq*/
19919
19920/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019921 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070019922 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070019923 @param
19924
19925 pMsg - pointer to the message
19926
19927 @see
19928 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019929*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019930void
Jeff Johnson295189b2012-06-20 16:38:30 -070019931WDI_PALCtrlMsgCB
19932(
19933 wpt_msg *pMsg
19934)
19935{
19936 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019937 WDI_ControlBlockType* pWDICtx = NULL;
19938 WDI_Status wdiStatus;
19939 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019940 void* pUserData;
19941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19942
19943 if (( NULL == pMsg )||
19944 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
19945 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
19946 {
19947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019948 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070019949 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019950 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 }
19952
19953 /*Transition back to the state that we had before serialization
19954 - serialization transitions us to BUSY to stop any incomming requests
19955 ! TO DO L: possible race condition here if a request comes in between the
19956 state transition and the post function*/
19957
Jeff Johnsone7245742012-09-05 17:12:55 -070019958 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070019959
19960 /*-----------------------------------------------------------------------
19961 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070019962 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 -----------------------------------------------------------------------*/
19964 switch ( pEventData->wdiRequest )
19965 {
19966
Jeff Johnsone7245742012-09-05 17:12:55 -070019967 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070019968 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
19969 break;
19970
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 case WDI_NV_DOWNLOAD_REQ:
19972 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
19973 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
19974 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
19975 {
19976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019977 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019978 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19979 }
19980 else
19981 {
19982 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
19983 }
19984
19985 break;
19986
19987 default:
19988 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19989 break;
19990 }/*switch ( pEventData->wdiRequest )*/
19991
19992 if ( WDI_STATUS_SUCCESS != wdiStatus )
19993 {
19994 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
19995
19996 if ( NULL != pfnReqStatusCB )
19997 {
19998 /*Fail the request*/
19999 pfnReqStatusCB( wdiStatus, pUserData);
20000 }
20001 }
20002
20003 /* Free data - that was allocated when queueing*/
20004 if( pEventData != NULL )
20005 {
20006 if( pEventData->pEventData != NULL )
20007 {
20008 wpalMemoryFree(pEventData->pEventData);
20009 }
20010 wpalMemoryFree(pEventData);
20011 }
20012
20013 if( pMsg != NULL )
20014 {
20015 wpalMemoryFree(pMsg);
20016 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020017
Jeff Johnson295189b2012-06-20 16:38:30 -070020018}/*WDI_PALCtrlMsgCB*/
20019
20020/**
20021 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020022 and schedule for execution a pending request
20023 @param
20024
Jeff Johnson295189b2012-06-20 16:38:30 -070020025 pWDICtx: - pointer to the WDI control block
20026 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020027 queued
20028
20029 @see
20030 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020031*/
20032WDI_Status
20033WDI_DequeuePendingReq
20034(
20035 WDI_ControlBlockType* pWDICtx
20036)
20037{
Jeff Johnsone7245742012-09-05 17:12:55 -070020038 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020039 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020040 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20042
Jeff Johnsone7245742012-09-05 17:12:55 -070020043 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020044
20045 if ( NULL == pNode )
20046 {
20047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020048 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020049 return WDI_STATUS_SUCCESS;
20050 }
20051
20052 /*The node actually points to the 1st element inside the Event Data struct -
20053 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020054 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020055
20056 /*Serialize processing in the control thread
20057 !TO DO: - check to see if these are all the messages params that need
20058 to be filled in*/
20059 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20060
20061 if ( NULL == palMsg )
20062 {
20063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020064 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020066 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020067 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020068 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020069 palMsg->callback = WDI_PALCtrlMsgCB;
20070 palMsg->ptr = pEventData;
20071
20072 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020073 palMsg->val = pWDICtx->uGlobalState;
20074
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 /*Transition back to BUSY as we need to handle a queued request*/
20076 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020077
Jeff Johnson295189b2012-06-20 16:38:30 -070020078 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20079
20080 return WDI_STATUS_PENDING;
20081}/*WDI_DequeuePendingReq*/
20082
20083
20084/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020085 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020087 away.- The assoc requests will be queued by BSSID
20088 @param
20089
Jeff Johnson295189b2012-06-20 16:38:30 -070020090 pWDICtx: - pointer to the WDI control block
20091 pEventData: pointer to the evnt info that needs to be queued
20092 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020093
20094 @see
20095 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020096*/
20097WDI_Status
20098WDI_QueueNewAssocRequest
20099(
20100 WDI_ControlBlockType* pWDICtx,
20101 WDI_EventInfoType* pEventData,
20102 wpt_macAddr macBSSID
20103)
20104{
Jeff Johnsone7245742012-09-05 17:12:55 -070020105 wpt_uint8 i;
20106 WDI_BSSSessionType* pSession = NULL;
20107 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020108 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020109 void* pEventInfo;
20110 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020112
Jeff Johnsone7245742012-09-05 17:12:55 -070020113
20114 /*------------------------------------------------------------------------
20115 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020116 ------------------------------------------------------------------------*/
20117 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20118 {
20119 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20120 {
20121 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 pSession = &pWDICtx->aBSSSessions[i];
20123 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020124 }
20125 }
20126
20127 if ( i >= WDI_MAX_BSS_SESSIONS )
20128 {
20129 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020130 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020131 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020132
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 /*------------------------------------------------------------------------
20134 Fill in the BSSID for this session and set the usage flag
20135 ------------------------------------------------------------------------*/
20136 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020137 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020138
20139 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020140 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020141 ------------------------------------------------------------------------*/
20142 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20143 if ( NULL == pEventDataQueue )
20144 {
20145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020146 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020147 WDI_ASSERT(0);
20148 return WDI_STATUS_MEM_FAILURE;
20149 }
20150
20151 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20152 if ( NULL == pSessionIdElement )
20153 {
20154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020155 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020156 WDI_ASSERT(0);
20157 wpalMemoryFree(pEventDataQueue);
20158 return WDI_STATUS_MEM_FAILURE;
20159 }
20160
20161 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20162 if ( NULL == pEventInfo )
20163 {
20164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020165 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020166 WDI_ASSERT(0);
20167 wpalMemoryFree(pSessionIdElement);
20168 wpalMemoryFree(pEventDataQueue);
20169 return WDI_STATUS_MEM_FAILURE;
20170 }
20171
20172 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20173 pEventDataQueue->pUserData = pEventData->pUserData;
20174 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20175 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020176 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020177
20178 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20179 pEventDataQueue->pEventData = pEventInfo;
20180
20181 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020183
20184 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020185 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020186
Jeff Johnsone7245742012-09-05 17:12:55 -070020187 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020188
20189 /*We need to maintain a separate list that keeps track of the order in which
20190 the new assoc requests are being queued such that we can start processing
20191 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020192 pSessionIdElement->ucIndex = i;
20193 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020194
20195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20196 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020197 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020198
20199 /*Return pending as this is what the status of the request is since it has
20200 been queued*/
20201 return WDI_STATUS_PENDING;
20202}/*WDI_QueueNewAssocRequest*/
20203
20204/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020205 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020206 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020207 away.- The assoc requests will be queued by BSSID
20208 @param
20209
Jeff Johnson295189b2012-06-20 16:38:30 -070020210 pWDICtx: - pointer to the WDI control block
20211 pSession: - session in which to queue
20212 pEventData: pointer to the event info that needs to be
20213 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020214
20215 @see
20216 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020217*/
20218WDI_Status
20219WDI_QueueAssocRequest
20220(
20221 WDI_ControlBlockType* pWDICtx,
20222 WDI_BSSSessionType* pSession,
20223 WDI_EventInfoType* pEventData
20224)
20225{
Jeff Johnsone7245742012-09-05 17:12:55 -070020226 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020227 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020228 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020230
20231 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 Sanity check
20233 ------------------------------------------------------------------------*/
20234 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20235 {
20236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020238
Jeff Johnsone7245742012-09-05 17:12:55 -070020239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 }
20241
20242 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020243 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 ------------------------------------------------------------------------*/
20245 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20246 if ( NULL == pEventDataQueue )
20247 {
20248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020249 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020250 WDI_ASSERT(0);
20251 return WDI_STATUS_MEM_FAILURE;
20252 }
20253
20254 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20255 if ( NULL == pEventInfo )
20256 {
20257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20258 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020259 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 WDI_ASSERT(0);
20261 wpalMemoryFree(pEventDataQueue);
20262 return WDI_STATUS_MEM_FAILURE;
20263 }
20264
20265 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20266 pEventDataQueue->pUserData = pEventData->pUserData;
20267 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20268 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020269 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020270 pEventDataQueue->pEventData = pEventInfo;
20271
20272 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20273
20274 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020275 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020276
20277 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020278 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020279
Jeff Johnsone7245742012-09-05 17:12:55 -070020280 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020281
20282 /*The result of this operation is pending because the request has been
20283 queued and it will be processed at a later moment in time */
20284 return WDI_STATUS_PENDING;
20285}/*WDI_QueueAssocRequest*/
20286
20287/**
20288 @brief Utility function used by the DAL Core to help dequeue
20289 an association request that was pending
20290 The request will be queued up in front of the main
20291 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020292 @param
20293
Jeff Johnson295189b2012-06-20 16:38:30 -070020294 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020295
20296
20297 @see
20298 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020299*/
20300WDI_Status
20301WDI_DequeueAssocRequest
20302(
20303 WDI_ControlBlockType* pWDICtx
20304)
20305{
Jeff Johnsone7245742012-09-05 17:12:55 -070020306 wpt_list_node* pNode = NULL;
20307 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 WDI_BSSSessionType* pSession;
20309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020310
20311 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020312 Sanity check
20313 ------------------------------------------------------------------------*/
20314 if ( NULL == pWDICtx )
20315 {
20316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020318
Jeff Johnsone7245742012-09-05 17:12:55 -070020319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020320 }
20321
20322 /*------------------------------------------------------------------------
20323 An association has been completed => a new association can occur
20324 Check to see if there are any pending associations ->
20325 If so , transfer all the pending requests into the busy queue for
20326 processing
20327 These requests have arrived prior to the requests in the busy queue
20328 (bc they needed to be processed in order to be placed in this queue)
20329 => they will be placed at the front of the busy queue
20330 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020331 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020332
20333 if ( NULL == pNode )
20334 {
20335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020336 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020337 return WDI_STATUS_SUCCESS;
20338 }
20339
20340 /*The node actually points to the 1st element inside the Session Id struct -
20341 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020342 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020343
20344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20345 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20346
20347 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20348 {
20349 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020350
Jeff Johnson295189b2012-06-20 16:38:30 -070020351 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020352 the front of the main waiting queue for subsequent execution*/
20353 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020354 while ( NULL != pNode )
20355 {
20356 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020357 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20358 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020360 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 }
20362 else
20363 {
20364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020366 WPAL_ASSERT(0);
20367 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020370
Jeff Johnson295189b2012-06-20 16:38:30 -070020371 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20372 wpalMemoryFree(pSessionIdElement);
20373 return WDI_STATUS_SUCCESS;
20374}/*WDI_DequeueAssocRequest*/
20375
20376/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020377 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020378 pending requests - all req cb will be called with
20379 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020380 @param
20381
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020383
20384 @see
20385 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020386*/
20387WDI_Status
20388WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020389(
Jeff Johnson295189b2012-06-20 16:38:30 -070020390 WDI_ControlBlockType* pWDICtx
20391)
20392{
Jeff Johnsone7245742012-09-05 17:12:55 -070020393 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020395 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020396 void* pUserData;
20397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20398
Jeff Johnsone7245742012-09-05 17:12:55 -070020399 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020400
20401 /*------------------------------------------------------------------------
20402 Go through all the requests and fail them - this will only be called
20403 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020404 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 ------------------------------------------------------------------------*/
20406 while( pNode )
20407 {
20408 /*The node actually points to the 1st element inside the Event Data struct -
20409 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020410 pEventDataQueue = (WDI_EventInfoType*)pNode;
20411
Jeff Johnson295189b2012-06-20 16:38:30 -070020412 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20413 if ( NULL != pfnReqStatusCB )
20414 {
20415 /*Fail the request*/
20416 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20417 }
20418 /* Free data - that was allocated when queueing */
20419 if ( pEventDataQueue->pEventData != NULL )
20420 {
20421 wpalMemoryFree(pEventDataQueue->pEventData);
20422 }
20423 wpalMemoryFree(pEventDataQueue);
20424
20425 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20426 {
20427 break;
20428 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020429 }
20430
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 return WDI_STATUS_SUCCESS;
20432}/*WDI_ClearPendingRequests*/
20433
20434/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020435 @brief Helper routine used to init the BSS Sessions in the WDI control block
20436
20437
20438 @param pWDICtx: pointer to the WLAN DAL context
20439
Jeff Johnson295189b2012-06-20 16:38:30 -070020440 @see
20441*/
20442void
20443WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020444(
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 WDI_ControlBlockType* pWDICtx
20446)
20447{
Jeff Johnsone7245742012-09-05 17:12:55 -070020448 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20450
20451 /*-------------------------------------------------------------------------
20452 No Sanity check
20453 -------------------------------------------------------------------------*/
20454 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20455 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020456 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020457 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20458 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20459 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20460 }
20461}/*WDI_ResetAssocSessions*/
20462
20463/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020464 @brief Helper routine used to find a session based on the BSSID
20465
20466
20467 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020468 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020469 pSession: pointer to the session (if found)
20470
Jeff Johnson295189b2012-06-20 16:38:30 -070020471 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020472 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020473*/
20474wpt_uint8
20475WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020476(
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 WDI_ControlBlockType* pWDICtx,
20478 wpt_macAddr macBSSID,
20479 WDI_BSSSessionType** ppSession
20480)
20481{
Jeff Johnsone7245742012-09-05 17:12:55 -070020482 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20484
20485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020486 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020487 -------------------------------------------------------------------------*/
20488 if ( NULL == ppSession )
20489 {
20490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020491 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020492 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020493 }
20494
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020496
Jeff Johnsone7245742012-09-05 17:12:55 -070020497 /*------------------------------------------------------------------------
20498 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020499 ------------------------------------------------------------------------*/
20500 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20501 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020502 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20503 (eWLAN_PAL_TRUE ==
20504 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20505 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020506 {
20507 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020508 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020509 return i;
20510 }
20511 }
20512
Jeff Johnsone7245742012-09-05 17:12:55 -070020513 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020514}/*WDI_FindAssocSession*/
20515
20516/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 @brief Helper routine used to find a session based on the BSSID
20518
20519
20520 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 ucBSSIdx: BSS Index of the session
20522 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020523
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020525 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020526*/
20527wpt_uint8
20528WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020529(
Jeff Johnson295189b2012-06-20 16:38:30 -070020530 WDI_ControlBlockType* pWDICtx,
20531 wpt_uint16 ucBSSIdx,
20532 WDI_BSSSessionType** ppSession
20533)
20534{
Jeff Johnsone7245742012-09-05 17:12:55 -070020535 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20537
20538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020540 -------------------------------------------------------------------------*/
20541 if ( NULL == ppSession )
20542 {
20543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020544 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020545 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 }
20547
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020549
Jeff Johnsone7245742012-09-05 17:12:55 -070020550 /*------------------------------------------------------------------------
20551 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020552 ------------------------------------------------------------------------*/
20553 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20554 {
20555 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
20556 {
20557 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020558 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020559 return i;
20560 }
20561 }
20562
Jeff Johnsone7245742012-09-05 17:12:55 -070020563 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020564}/*WDI_FindAssocSessionByBSSIdx*/
20565
20566/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020567 @brief Helper routine used to find a session based on the BSSID
20568
20569
20570 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 ucBSSIdx: BSS Index of the session
20572 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020573
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020575 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020576*/
20577wpt_uint8
20578WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020579(
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 WDI_ControlBlockType* pWDICtx,
20581 wpt_uint16 usIdx,
20582 WDI_BSSSessionType** ppSession
20583)
20584{
20585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20586
20587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020588 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020589 -------------------------------------------------------------------------*/
20590 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
20591 {
20592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020593 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020594 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 }
20596
20597 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070020599
20600 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020601
Jeff Johnson295189b2012-06-20 16:38:30 -070020602}/*WDI_FindAssocSessionByBSSIdx*/
20603
20604/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020605 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020607
20608
20609 @param pWDICtx: pointer to the WLAN DAL context
20610 pSession: pointer to the session (if found)
20611
Jeff Johnson295189b2012-06-20 16:38:30 -070020612 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020613 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020614*/
20615wpt_uint8
20616WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070020617(
Jeff Johnson295189b2012-06-20 16:38:30 -070020618 WDI_ControlBlockType* pWDICtx,
20619 WDI_BSSSessionType** ppSession
20620)
20621{
Jeff Johnsone7245742012-09-05 17:12:55 -070020622 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020626 -------------------------------------------------------------------------*/
20627 if ( NULL == ppSession )
20628 {
20629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020630 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020631 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020632 }
20633
Jeff Johnsone7245742012-09-05 17:12:55 -070020634 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020635
Jeff Johnsone7245742012-09-05 17:12:55 -070020636 /*------------------------------------------------------------------------
20637 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070020638 ------------------------------------------------------------------------*/
20639 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20640 {
20641 if ( ! pWDICtx->aBSSSessions[i].bInUse )
20642 {
20643 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020644 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 return i;
20646 }
20647 }
20648
Jeff Johnsone7245742012-09-05 17:12:55 -070020649 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020650}/*WDI_FindEmptySession*/
20651
20652
20653/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020654 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070020655 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020656
20657
20658 @param pWDICtx: pointer to the WLAN DAL context
20659
Jeff Johnson295189b2012-06-20 16:38:30 -070020660 @see
20661 @return Number of sessions in use
20662*/
20663wpt_uint8
20664WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070020665(
Jeff Johnson295189b2012-06-20 16:38:30 -070020666 WDI_ControlBlockType* pWDICtx
20667)
20668{
Jeff Johnsone7245742012-09-05 17:12:55 -070020669 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020671
20672 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020673 Count all sessions in use
20674 ------------------------------------------------------------------------*/
20675 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20676 {
20677 if ( pWDICtx->aBSSSessions[i].bInUse )
20678 {
20679 ucCount++;
20680 }
20681 }
20682
Jeff Johnsone7245742012-09-05 17:12:55 -070020683 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070020684}/*WDI_GetActiveSessionsCount*/
20685
20686/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020689
20690
20691 @param pWDICtx: pointer to the WLAN DAL context
20692 pSession: pointer to the session (if found)
20693
Jeff Johnson295189b2012-06-20 16:38:30 -070020694 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020696*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020697void
Jeff Johnson295189b2012-06-20 16:38:30 -070020698WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020699(
Jeff Johnson295189b2012-06-20 16:38:30 -070020700 WDI_ControlBlockType* pWDICtx,
20701 WDI_BSSSessionType* ppSession
20702)
20703{
20704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020705 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 -------------------------------------------------------------------------*/
20707 if ( NULL == ppSession )
20708 {
20709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020710 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020711 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020712 }
20713
Jeff Johnsone7245742012-09-05 17:12:55 -070020714 /*------------------------------------------------------------------------
20715 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 ------------------------------------------------------------------------*/
20717 wpal_list_destroy(&ppSession->wptPendingQueue);
20718 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070020719 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
20720 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
20722 wpal_list_init(&ppSession->wptPendingQueue);
20723
20724}/*WDI_DeleteSession*/
20725
20726/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020727 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 @param
20730
Jeff Johnson295189b2012-06-20 16:38:30 -070020731 WDI_AddStaParams: - pointer to the WDI Add STA params
20732 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020733
20734 @see
20735 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070020736*/
20737void
20738WDI_AddBcastSTAtoSTATable
20739(
20740 WDI_ControlBlockType* pWDICtx,
20741 WDI_AddStaParams * staParams,
20742 wpt_uint16 usBcastStaIdx
20743)
20744{
20745 WDI_AddStaParams wdiAddSTAParam = {0};
20746 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
20747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20748
20749 /*---------------------------------------------------------------------
20750 Sanity check
20751 ---------------------------------------------------------------------*/
20752 if ( NULL == staParams )
20753 {
20754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020756
Jeff Johnsone7245742012-09-05 17:12:55 -070020757 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020758 }
20759
20760 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
20761 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
20762 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
20763 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
20764 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
20765 wdiAddSTAParam.dpuSig = staParams->dpuSig;
20766 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
20767 WDI_MAC_ADDR_LEN );
20768 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
20769 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
20770 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
20771 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
20772 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
20773 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
20774 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020775
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
20777}
20778
20779/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020780 @brief NV blob will be divided into fragments of size 4kb and
20781 Sent to HAL
20782
20783 @param pWDICtx: pointer to the WLAN DAL context
20784 pEventData: pointer to the event information structure
20785
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 @see
20787 @return Result of the function call
20788 */
20789
20790WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020791(
Jeff Johnson295189b2012-06-20 16:38:30 -070020792 WDI_ControlBlockType* pWDICtx,
20793 WDI_EventInfoType* pEventData
20794)
20795{
20796
20797 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
20798 wpt_uint8* pSendBuffer = NULL;
20799 wpt_uint16 usDataOffset = 0;
20800 wpt_uint16 usSendSize = 0;
20801 wpt_uint16 usCurrentFragmentSize =0;
20802 wpt_uint8* pSrcBuffer = NULL;
20803 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
20804 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20805
20806 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
20807 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
20808 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
20809
Jeff Johnsone7245742012-09-05 17:12:55 -070020810 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070020811 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
20812
20813 /* Update the current Fragment Number */
20814 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
20815
20816 /*Update the HAL REQ structure */
20817 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
20818 halNvImgDownloadParam.nvImageReqParams.fragNumber =
20819 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
20820
20821 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070020822 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070020823 image will be sent to HAL*/
20824
Jeff Johnsone7245742012-09-05 17:12:55 -070020825 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070020826 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070020827 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020828 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070020829 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
20831 usCurrentFragmentSize = FRAGMENT_SIZE;
20832
20833 /*Update the HAL REQ structure */
20834 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
20835 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
20836
20837 }
20838 else
Jeff Johnsone7245742012-09-05 17:12:55 -070020839 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020840 usCurrentFragmentSize = FRAGMENT_SIZE;
20841
20842 /*Update the HAL REQ structure */
20843 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
20844 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
20845 }
20846
20847 /*-----------------------------------------------------------------------
20848 Get message buffer
20849 -----------------------------------------------------------------------*/
20850 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
20851 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
20852 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020853 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020854 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
20855 {
20856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20857 "Unable to get send buffer in NV Download req %x %x ",
20858 pEventData, pwdiNvDownloadReqParams);
20859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 }
20862
20863 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020865 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
20866
20867 /* Appending the NV image fragment */
20868 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
20869 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
20870 usCurrentFragmentSize);
20871
20872 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020873 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020874
Jeff Johnsone7245742012-09-05 17:12:55 -070020875 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20876 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 WDI_NV_DOWNLOAD_RESP);
20878
20879}
Jeff Johnsone7245742012-09-05 17:12:55 -070020880/*============================================================================
20881 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070020882 ============================================================================*/
20883/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020884 @brief Helper routine used to find a session based on the BSSID
20885 @param pContext: pointer to the WLAN DAL context
20886 @param pDPContext: pointer to the Datapath context
20887
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020889 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070020890*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020891WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020892WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
20893{
20894 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20895
20896 pCB->pDPContext = pDPContext;
20897 return;
20898}
20899
20900/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020901 @brief Helper routine used to find a session based on the BSSID
20902
20903
20904 @param pContext: pointer to the WLAN DAL context
20905
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 @see
20907 @return pointer to Datapath context
20908*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020909WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020910WDI_DS_GetDatapathContext (void *pContext)
20911{
20912 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20913 return pCB->pDPContext;
20914}
20915/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020916 @brief Helper routine used to find a session based on the BSSID
20917
20918
20919 @param pContext: pointer to the WLAN DAL context
20920 @param pDTDriverContext: pointer to the Transport Driver context
20921
Jeff Johnson295189b2012-06-20 16:38:30 -070020922 @see
20923 @return void
20924*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020925WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020926WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
20927{
20928 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20929
20930 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020931 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020932}
20933
20934/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020935 @brief Helper routine used to find a session based on the BSSID
20936
20937
20938 @param pWDICtx: pointer to the WLAN DAL context
20939
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020941 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070020942*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020943WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020944WDT_GetTransportDriverContext (void *pContext)
20945{
20946 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020947 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070020948}
20949
Jeff Johnsone7245742012-09-05 17:12:55 -070020950/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070020951 Helper inline converters
20952 ============================================================================*/
20953/*Convert WDI driver type into HAL driver type*/
20954WPT_STATIC WPT_INLINE WDI_Status
20955WDI_HAL_2_WDI_STATUS
20956(
20957 eHalStatus halStatus
20958)
20959{
Jeff Johnsone7245742012-09-05 17:12:55 -070020960 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020961 the chances of getting inlined*/
20962 switch( halStatus )
20963 {
20964 case eHAL_STATUS_SUCCESS:
20965 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20966 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20967 return WDI_STATUS_SUCCESS;
20968 case eHAL_STATUS_FAILURE:
20969 return WDI_STATUS_E_FAILURE;
20970 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070020971 return WDI_STATUS_MEM_FAILURE;
20972 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070020973 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020974 default:
20975 return WDI_STATUS_DEV_INTERNAL_FAILURE;
20976 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020977
Jeff Johnsone7245742012-09-05 17:12:55 -070020978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020979}/*WDI_HAL_2_WDI_STATUS*/
20980
20981/*Convert WDI request type into HAL request type*/
20982WPT_STATIC WPT_INLINE tHalHostMsgType
20983WDI_2_HAL_REQ_TYPE
20984(
20985 WDI_RequestEnumType wdiReqType
20986)
20987{
Jeff Johnsone7245742012-09-05 17:12:55 -070020988 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020989 the chances of getting inlined*/
20990 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020993 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020994 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020995 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020997 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020998 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021001 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021003 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021004 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021006 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021007 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021008 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021009 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021010 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021013 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021014 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021015 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021016 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021017 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021019 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021020 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021021 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021022 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021023 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021025 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021026 return WLAN_HAL_RMV_STAKEY_REQ;
21027 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021029 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021030 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021031 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021032 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021033 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021034 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 case WDI_DEL_BA_REQ:
21036 return WLAN_HAL_DEL_BA_REQ;
21037#ifdef FEATURE_WLAN_CCX
21038 case WDI_TSM_STATS_REQ:
21039 return WLAN_HAL_TSM_STATS_REQ;
21040#endif
21041 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021042 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021043 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021044 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021046 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021047 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021048 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021049 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021050 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 case WDI_ADD_BA_SESSION_REQ:
21052 return WLAN_HAL_ADD_BA_SESSION_REQ;
21053 case WDI_TRIGGER_BA_REQ:
21054 return WLAN_HAL_TRIGGER_BA_REQ;
21055 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021056 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021057 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021058 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021059 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21060 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21061 case WDI_SET_MAX_TX_POWER_REQ:
21062 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
21063#ifdef WLAN_FEATURE_P2P
21064 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21065 return WLAN_HAL_SET_P2P_GONOA_REQ;
21066#endif
21067 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021068 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021069 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021070 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021071 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021072 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021073 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021074 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021075 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021076 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021077 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021078 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021079 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021082 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021083 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021084 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021085 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021086 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 case WDI_REM_BEACON_FILTER_REQ:
21088 return WLAN_HAL_REM_BCN_FILTER_REQ;
21089 case WDI_SET_RSSI_THRESHOLDS_REQ:
21090 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21091 case WDI_HOST_OFFLOAD_REQ:
21092 return WLAN_HAL_HOST_OFFLOAD_REQ;
21093 case WDI_WOWL_ADD_BC_PTRN_REQ:
21094 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21095 case WDI_WOWL_DEL_BC_PTRN_REQ:
21096 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21097 case WDI_WOWL_ENTER_REQ:
21098 return WLAN_HAL_ENTER_WOWL_REQ;
21099 case WDI_WOWL_EXIT_REQ:
21100 return WLAN_HAL_EXIT_WOWL_REQ;
21101 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21102 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21103 case WDI_NV_DOWNLOAD_REQ:
21104 return WLAN_HAL_DOWNLOAD_NV_REQ;
21105 case WDI_FLUSH_AC_REQ:
21106 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21107 case WDI_BTAMP_EVENT_REQ:
21108 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21109#ifdef WLAN_FEATURE_VOWIFI_11R
21110 case WDI_AGGR_ADD_TS_REQ:
21111 return WLAN_HAL_AGGR_ADD_TS_REQ;
21112#endif /* WLAN_FEATURE_VOWIFI_11R */
21113#ifdef ANI_MANF_DIAG
21114 case WDI_FTM_CMD_REQ:
21115 return WLAN_HAL_PROCESS_PTT_REQ;
21116#endif /* ANI_MANF_DIAG */
21117 case WDI_ADD_STA_SELF_REQ:
21118 return WLAN_HAL_ADD_STA_SELF_REQ;
21119 case WDI_DEL_STA_SELF_REQ:
21120 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021121#ifdef FEATURE_OEM_DATA_SUPPORT
21122 case WDI_START_OEM_DATA_REQ:
21123 return WLAN_HAL_START_OEM_DATA_REQ;
21124#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021125 case WDI_HOST_RESUME_REQ:
21126 return WLAN_HAL_HOST_RESUME_REQ;
21127 case WDI_HOST_SUSPEND_IND:
21128 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021129 case WDI_TRAFFIC_STATS_IND:
21130 return WLAN_HAL_CLASS_B_STATS_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 case WDI_KEEP_ALIVE_REQ:
21132 return WLAN_HAL_KEEP_ALIVE_REQ;
21133
21134#ifdef FEATURE_WLAN_SCAN_PNO
21135 case WDI_SET_PREF_NETWORK_REQ:
21136 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21137 case WDI_SET_RSSI_FILTER_REQ:
21138 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21139 case WDI_UPDATE_SCAN_PARAMS_REQ:
21140 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21141#endif // FEATURE_WLAN_SCAN_PNO
21142 case WDI_SET_TX_PER_TRACKING_REQ:
21143 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21144#ifdef WLAN_FEATURE_PACKET_FILTERING
21145 case WDI_8023_MULTICAST_LIST_REQ:
21146 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21147 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021149 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21150 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21151 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21152 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21153#endif // WLAN_FEATURE_PACKET_FILTERING
21154 case WDI_HAL_DUMP_CMD_REQ:
21155 return WLAN_HAL_DUMP_COMMAND_REQ;
21156#ifdef WLAN_FEATURE_GTK_OFFLOAD
21157 case WDI_GTK_OFFLOAD_REQ:
21158 return WLAN_HAL_GTK_OFFLOAD_REQ;
21159 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21160 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21161#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21162
21163 case WDI_INIT_SCAN_CON_REQ:
21164 return WLAN_HAL_INIT_SCAN_CON_REQ;
21165 case WDI_SET_POWER_PARAMS_REQ:
21166 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21167 case WDI_SET_TM_LEVEL_REQ:
21168 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21169 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21170 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021171#ifdef WLAN_FEATURE_11AC
21172 case WDI_UPDATE_VHT_OP_MODE_REQ:
21173 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21174#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021175 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021176 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021177 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021178
Jeff Johnson295189b2012-06-20 16:38:30 -070021179}/*WDI_2_HAL_REQ_TYPE*/
21180
21181/*Convert WDI response type into HAL response type*/
21182WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21183HAL_2_WDI_RSP_TYPE
21184(
21185 tHalHostMsgType halMsg
21186)
21187{
Jeff Johnsone7245742012-09-05 17:12:55 -070021188 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021189 the chances of getting inlined*/
21190 switch( halMsg )
21191 {
21192 case WLAN_HAL_START_RSP:
21193 return WDI_START_RESP;
21194 case WLAN_HAL_STOP_RSP:
21195 return WDI_STOP_RESP;
21196 case WLAN_HAL_INIT_SCAN_RSP:
21197 return WDI_INIT_SCAN_RESP;
21198 case WLAN_HAL_START_SCAN_RSP:
21199 return WDI_START_SCAN_RESP;
21200 case WLAN_HAL_END_SCAN_RSP:
21201 return WDI_END_SCAN_RESP;
21202 case WLAN_HAL_FINISH_SCAN_RSP:
21203 return WDI_FINISH_SCAN_RESP;
21204 case WLAN_HAL_CONFIG_STA_RSP:
21205 return WDI_CONFIG_STA_RESP;
21206 case WLAN_HAL_DELETE_STA_RSP:
21207 return WDI_DEL_STA_RESP;
21208 case WLAN_HAL_CONFIG_BSS_RSP:
21209 return WDI_CONFIG_BSS_RESP;
21210 case WLAN_HAL_DELETE_BSS_RSP:
21211 return WDI_DEL_BSS_RESP;
21212 case WLAN_HAL_JOIN_RSP:
21213 return WDI_JOIN_RESP;
21214 case WLAN_HAL_POST_ASSOC_RSP:
21215 return WDI_POST_ASSOC_RESP;
21216 case WLAN_HAL_SET_BSSKEY_RSP:
21217 return WDI_SET_BSS_KEY_RESP;
21218 case WLAN_HAL_SET_STAKEY_RSP:
21219 return WDI_SET_STA_KEY_RESP;
21220 case WLAN_HAL_RMV_BSSKEY_RSP:
21221 return WDI_RMV_BSS_KEY_RESP;
21222 case WLAN_HAL_RMV_STAKEY_RSP:
21223 return WDI_RMV_STA_KEY_RESP;
21224 case WLAN_HAL_SET_BCASTKEY_RSP:
21225 return WDI_SET_STA_BCAST_KEY_RESP;
21226 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21227 // return WDI_RMV_STA_BCAST_KEY_RESP;
21228 case WLAN_HAL_ADD_TS_RSP:
21229 return WDI_ADD_TS_RESP;
21230 case WLAN_HAL_DEL_TS_RSP:
21231 return WDI_DEL_TS_RESP;
21232 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21233 return WDI_UPD_EDCA_PRMS_RESP;
21234 case WLAN_HAL_ADD_BA_RSP:
21235 return WDI_ADD_BA_RESP;
21236 case WLAN_HAL_DEL_BA_RSP:
21237 return WDI_DEL_BA_RESP;
21238#ifdef FEATURE_WLAN_CCX
21239 case WLAN_HAL_TSM_STATS_RSP:
21240 return WDI_TSM_STATS_RESP;
21241#endif
21242 case WLAN_HAL_CH_SWITCH_RSP:
21243 return WDI_CH_SWITCH_RESP;
21244 case WLAN_HAL_SET_LINK_ST_RSP:
21245 return WDI_SET_LINK_ST_RESP;
21246 case WLAN_HAL_GET_STATS_RSP:
21247 return WDI_GET_STATS_RESP;
21248 case WLAN_HAL_UPDATE_CFG_RSP:
21249 return WDI_UPDATE_CFG_RESP;
21250 case WLAN_HAL_ADD_BA_SESSION_RSP:
21251 return WDI_ADD_BA_SESSION_RESP;
21252 case WLAN_HAL_TRIGGER_BA_RSP:
21253 return WDI_TRIGGER_BA_RESP;
21254 case WLAN_HAL_UPDATE_BEACON_RSP:
21255 return WDI_UPD_BCON_PRMS_RESP;
21256 case WLAN_HAL_SEND_BEACON_RSP:
21257 return WDI_SND_BCON_RESP;
21258 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21259 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21260 /*Indications*/
21261 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21262 return WDI_HAL_RSSI_NOTIFICATION_IND;
21263 case WLAN_HAL_MISSED_BEACON_IND:
21264 return WDI_HAL_MISSED_BEACON_IND;
21265 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21266 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21267 case WLAN_HAL_MIC_FAILURE_IND:
21268 return WDI_HAL_MIC_FAILURE_IND;
21269 case WLAN_HAL_FATAL_ERROR_IND:
21270 return WDI_HAL_FATAL_ERROR_IND;
21271 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21272 return WDI_HAL_DEL_STA_IND;
21273 case WLAN_HAL_COEX_IND:
21274 return WDI_HAL_COEX_IND;
21275 case WLAN_HAL_OTA_TX_COMPL_IND:
21276 return WDI_HAL_TX_COMPLETE_IND;
21277#ifdef WLAN_FEATURE_P2P
21278 case WLAN_HAL_P2P_NOA_ATTR_IND:
21279 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021280 case WLAN_HAL_P2P_NOA_START_IND:
21281 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021282#endif
21283 case WLAN_HAL_TX_PER_HIT_IND:
21284 return WDI_HAL_TX_PER_HIT_IND;
21285 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21286 return WDI_SET_MAX_TX_POWER_RESP;
21287#ifdef WLAN_FEATURE_P2P
21288 case WLAN_HAL_SET_P2P_GONOA_RSP:
21289 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
21290#endif
21291 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021294 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021295 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021296 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021297 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021298 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021299 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021302 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021303 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021304 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021305 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021306 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021307 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021308 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021309 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21310 return WDI_SET_BEACON_FILTER_RESP;
21311 case WLAN_HAL_REM_BCN_FILTER_RSP:
21312 return WDI_REM_BEACON_FILTER_RESP;
21313 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21314 return WDI_SET_RSSI_THRESHOLDS_RESP;
21315 case WLAN_HAL_HOST_OFFLOAD_RSP:
21316 return WDI_HOST_OFFLOAD_RESP;
21317 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21318 return WDI_WOWL_ADD_BC_PTRN_RESP;
21319 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21320 return WDI_WOWL_DEL_BC_PTRN_RESP;
21321 case WLAN_HAL_ENTER_WOWL_RSP:
21322 return WDI_WOWL_ENTER_RESP;
21323 case WLAN_HAL_EXIT_WOWL_RSP:
21324 return WDI_WOWL_EXIT_RESP;
21325 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21326 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21327 case WLAN_HAL_DOWNLOAD_NV_RSP:
21328 return WDI_NV_DOWNLOAD_RESP;
21329 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21330 return WDI_FLUSH_AC_RESP;
21331 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21332 return WDI_BTAMP_EVENT_RESP;
21333#ifdef ANI_MANF_DIAG
21334 case WLAN_HAL_PROCESS_PTT_RSP:
21335 return WDI_FTM_CMD_RESP;
21336#endif /* ANI_MANF_DIAG */
21337 case WLAN_HAL_ADD_STA_SELF_RSP:
21338 return WDI_ADD_STA_SELF_RESP;
21339case WLAN_HAL_DEL_STA_SELF_RSP:
21340 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021341#ifdef FEATURE_OEM_DATA_SUPPORT
21342 case WLAN_HAL_START_OEM_DATA_RSP:
21343 return WDI_START_OEM_DATA_RESP;
21344#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021345 case WLAN_HAL_HOST_RESUME_RSP:
21346 return WDI_HOST_RESUME_RESP;
21347 case WLAN_HAL_KEEP_ALIVE_RSP:
21348 return WDI_KEEP_ALIVE_RESP;
21349#ifdef FEATURE_WLAN_SCAN_PNO
21350 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21351 return WDI_SET_PREF_NETWORK_RESP;
21352 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021353 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021354 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21355 return WDI_UPDATE_SCAN_PARAMS_RESP;
21356 case WLAN_HAL_PREF_NETW_FOUND_IND:
21357 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21358#endif // FEATURE_WLAN_SCAN_PNO
21359 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21360 return WDI_SET_TX_PER_TRACKING_RESP;
21361#ifdef WLAN_FEATURE_PACKET_FILTERING
21362 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21363 return WDI_8023_MULTICAST_LIST_RESP;
21364 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21365 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21366 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21367 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21368 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21369 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21370#endif // WLAN_FEATURE_PACKET_FILTERING
21371
21372 case WLAN_HAL_DUMP_COMMAND_RSP:
21373 return WDI_HAL_DUMP_CMD_RESP;
21374 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21375 return WDI_SET_POWER_PARAMS_RESP;
21376#ifdef WLAN_FEATURE_VOWIFI_11R
21377 case WLAN_HAL_AGGR_ADD_TS_RSP:
21378 return WDI_AGGR_ADD_TS_RESP;
21379#endif
21380
21381#ifdef WLAN_FEATURE_GTK_OFFLOAD
21382 case WLAN_HAL_GTK_OFFLOAD_RSP:
21383 return WDI_GTK_OFFLOAD_RESP;
21384 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21385 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21386#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21387#ifdef WLAN_WAKEUP_EVENTS
21388 case WLAN_HAL_WAKE_REASON_IND:
21389 return WDI_HAL_WAKE_REASON_IND;
21390#endif // WLAN_WAKEUP_EVENTS
21391
21392 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21393 return WDI_SET_TM_LEVEL_RESP;
21394 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21395 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021396#ifdef WLAN_FEATURE_11AC
21397 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21398 return WDI_UPDATE_VHT_OP_MODE_RESP;
21399#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021401 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021402 }
21403
21404}/*HAL_2_WDI_RSP_TYPE*/
21405
21406
21407/*Convert WDI driver type into HAL driver type*/
21408WPT_STATIC WPT_INLINE tDriverType
21409WDI_2_HAL_DRV_TYPE
21410(
21411 WDI_DriverType wdiDriverType
21412)
21413{
Jeff Johnsone7245742012-09-05 17:12:55 -070021414 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021415 the chances of getting inlined*/
21416 switch( wdiDriverType )
21417 {
21418 case WDI_DRIVER_TYPE_PRODUCTION:
21419 return eDRIVER_TYPE_PRODUCTION;
21420 case WDI_DRIVER_TYPE_MFG:
21421 return eDRIVER_TYPE_MFG;
21422 case WDI_DRIVER_TYPE_DVT:
21423 return eDRIVER_TYPE_DVT;
21424 }
21425
Jeff Johnsone7245742012-09-05 17:12:55 -070021426 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021427}/*WDI_2_HAL_DRV_TYPE*/
21428
21429
21430/*Convert WDI stop reason into HAL stop reason*/
21431WPT_STATIC WPT_INLINE tHalStopType
21432WDI_2_HAL_STOP_REASON
21433(
21434 WDI_StopType wdiDriverType
21435)
21436{
Jeff Johnsone7245742012-09-05 17:12:55 -070021437 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021438 the chances of getting inlined*/
21439 switch( wdiDriverType )
21440 {
21441 case WDI_STOP_TYPE_SYS_RESET:
21442 return HAL_STOP_TYPE_SYS_RESET;
21443 case WDI_DRIVER_TYPE_MFG:
21444 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21445 case WDI_STOP_TYPE_RF_KILL:
21446 return HAL_STOP_TYPE_RF_KILL;
21447 }
21448
Jeff Johnsone7245742012-09-05 17:12:55 -070021449 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021450}/*WDI_2_HAL_STOP_REASON*/
21451
21452
21453/*Convert WDI scan mode type into HAL scan mode type*/
21454WPT_STATIC WPT_INLINE eHalSysMode
21455WDI_2_HAL_SCAN_MODE
21456(
21457 WDI_ScanMode wdiScanMode
21458)
21459{
Jeff Johnsone7245742012-09-05 17:12:55 -070021460 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021461 the chances of getting inlined*/
21462 switch( wdiScanMode )
21463 {
21464 case WDI_SCAN_MODE_NORMAL:
21465 return eHAL_SYS_MODE_NORMAL;
21466 case WDI_SCAN_MODE_LEARN:
21467 return eHAL_SYS_MODE_LEARN;
21468 case WDI_SCAN_MODE_SCAN:
21469 return eHAL_SYS_MODE_SCAN;
21470 case WDI_SCAN_MODE_PROMISC:
21471 return eHAL_SYS_MODE_PROMISC;
21472 case WDI_SCAN_MODE_SUSPEND_LINK:
21473 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021474 case WDI_SCAN_MODE_ROAM_SCAN:
21475 return eHAL_SYS_MODE_ROAM_SCAN;
21476 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21477 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021478 }
21479
Jeff Johnsone7245742012-09-05 17:12:55 -070021480 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021481}/*WDI_2_HAL_SCAN_MODE*/
21482
21483/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021484WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021485WDI_2_HAL_SEC_CH_OFFSET
21486(
21487 WDI_HTSecondaryChannelOffset wdiSecChOffset
21488)
21489{
Jeff Johnsone7245742012-09-05 17:12:55 -070021490 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021491 the chances of getting inlined*/
21492 switch( wdiSecChOffset )
21493 {
21494 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021497 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021498 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021499 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21500#ifdef WLAN_FEATURE_11AC
21501 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21502 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21503 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21504 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21505 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21506 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21507 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21508 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21509 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21510 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21511 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21512 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21513 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21514 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21515#endif
21516 default:
21517 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021518 }
21519
Jeff Johnsone7245742012-09-05 17:12:55 -070021520 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021521}/*WDI_2_HAL_SEC_CH_OFFSET*/
21522
21523/*Convert WDI BSS type into HAL BSS type*/
21524WPT_STATIC WPT_INLINE tSirBssType
21525WDI_2_HAL_BSS_TYPE
21526(
21527 WDI_BssType wdiBSSType
21528)
21529{
Jeff Johnsone7245742012-09-05 17:12:55 -070021530 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021531 the chances of getting inlined*/
21532 switch( wdiBSSType )
21533 {
21534 case WDI_INFRASTRUCTURE_MODE:
21535 return eSIR_INFRASTRUCTURE_MODE;
21536 case WDI_INFRA_AP_MODE:
21537 return eSIR_INFRA_AP_MODE;
21538 case WDI_IBSS_MODE:
21539 return eSIR_IBSS_MODE;
21540 case WDI_BTAMP_STA_MODE:
21541 return eSIR_BTAMP_STA_MODE;
21542 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021543 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021544 case WDI_BSS_AUTO_MODE:
21545 return eSIR_AUTO_MODE;
21546 }
21547
Jeff Johnsone7245742012-09-05 17:12:55 -070021548 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021549}/*WDI_2_HAL_BSS_TYPE*/
21550
21551/*Convert WDI NW type into HAL NW type*/
21552WPT_STATIC WPT_INLINE tSirNwType
21553WDI_2_HAL_NW_TYPE
21554(
21555 WDI_NwType wdiNWType
21556)
21557{
Jeff Johnsone7245742012-09-05 17:12:55 -070021558 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021559 the chances of getting inlined*/
21560 switch( wdiNWType )
21561 {
21562 case WDI_11A_NW_TYPE:
21563 return eSIR_11A_NW_TYPE;
21564 case WDI_11B_NW_TYPE:
21565 return eSIR_11B_NW_TYPE;
21566 case WDI_11G_NW_TYPE:
21567 return eSIR_11G_NW_TYPE;
21568 case WDI_11N_NW_TYPE:
21569 return eSIR_11N_NW_TYPE;
21570 }
21571
Jeff Johnsone7245742012-09-05 17:12:55 -070021572 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021573}/*WDI_2_HAL_NW_TYPE*/
21574
21575/*Convert WDI chanel bonding type into HAL cb type*/
21576WPT_STATIC WPT_INLINE ePhyChanBondState
21577WDI_2_HAL_CB_STATE
21578(
21579 WDI_PhyChanBondState wdiCbState
21580)
21581{
Jeff Johnsone7245742012-09-05 17:12:55 -070021582 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021583 the chances of getting inlined*/
21584 switch ( wdiCbState )
21585 {
21586 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
21587 return PHY_SINGLE_CHANNEL_CENTERED;
21588 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
21589 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
21590 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
21591 return PHY_DOUBLE_CHANNEL_CENTERED;
21592 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
21593 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070021594#ifdef WLAN_FEATURE_11AC
21595 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21596 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21597 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21598 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
21599 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21600 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21601 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21602 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21603 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21604 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
21605 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21606 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21607 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21608 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21609#endif
21610 case WDI_MAX_CB_STATE:
21611 default:
21612 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021613 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021614
Jeff Johnson295189b2012-06-20 16:38:30 -070021615 return PHY_CHANNEL_BONDING_STATE_MAX;
21616}/*WDI_2_HAL_CB_STATE*/
21617
21618/*Convert WDI chanel bonding type into HAL cb type*/
21619WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
21620WDI_2_HAL_HT_OPER_MODE
21621(
21622 WDI_HTOperatingMode wdiHTOperMode
21623)
21624{
Jeff Johnsone7245742012-09-05 17:12:55 -070021625 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 the chances of getting inlined*/
21627 switch ( wdiHTOperMode )
21628 {
21629 case WDI_HT_OP_MODE_PURE:
21630 return eSIR_HT_OP_MODE_PURE;
21631 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
21632 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
21633 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
21634 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
21635 case WDI_HT_OP_MODE_MIXED:
21636 return eSIR_HT_OP_MODE_MIXED;
21637 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021638
Jeff Johnson295189b2012-06-20 16:38:30 -070021639 return eSIR_HT_OP_MODE_MAX;
21640}/*WDI_2_HAL_HT_OPER_MODE*/
21641
21642/*Convert WDI mimo PS type into HAL mimo PS type*/
21643WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
21644WDI_2_HAL_MIMO_PS
21645(
21646 WDI_HTMIMOPowerSaveState wdiHTOperMode
21647)
21648{
Jeff Johnsone7245742012-09-05 17:12:55 -070021649 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021650 the chances of getting inlined*/
21651 switch ( wdiHTOperMode )
21652 {
21653 case WDI_HT_MIMO_PS_STATIC:
21654 return eSIR_HT_MIMO_PS_STATIC;
21655 case WDI_HT_MIMO_PS_DYNAMIC:
21656 return eSIR_HT_MIMO_PS_DYNAMIC;
21657 case WDI_HT_MIMO_PS_NA:
21658 return eSIR_HT_MIMO_PS_NA;
21659 case WDI_HT_MIMO_PS_NO_LIMIT:
21660 return eSIR_HT_MIMO_PS_NO_LIMIT;
21661 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021662
Jeff Johnson295189b2012-06-20 16:38:30 -070021663 return eSIR_HT_MIMO_PS_MAX;
21664}/*WDI_2_HAL_MIMO_PS*/
21665
21666/*Convert WDI ENC type into HAL ENC type*/
21667WPT_STATIC WPT_INLINE tAniEdType
21668WDI_2_HAL_ENC_TYPE
21669(
21670 WDI_EncryptType wdiEncType
21671)
21672{
Jeff Johnsone7245742012-09-05 17:12:55 -070021673 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021674 the chances of getting inlined*/
21675 switch ( wdiEncType )
21676 {
21677 case WDI_ENCR_NONE:
21678 return eSIR_ED_NONE;
21679
21680 case WDI_ENCR_WEP40:
21681 return eSIR_ED_WEP40;
21682
21683 case WDI_ENCR_WEP104:
21684 return eSIR_ED_WEP104;
21685
21686 case WDI_ENCR_TKIP:
21687 return eSIR_ED_TKIP;
21688
21689 case WDI_ENCR_CCMP:
21690 return eSIR_ED_CCMP;
21691
21692 case WDI_ENCR_AES_128_CMAC:
21693 return eSIR_ED_AES_128_CMAC;
21694#if defined(FEATURE_WLAN_WAPI)
21695 case WDI_ENCR_WPI:
21696 return eSIR_ED_WPI;
21697#endif
21698 default:
21699 return eSIR_ED_NOT_IMPLEMENTED;
21700 }
21701
21702}/*WDI_2_HAL_ENC_TYPE*/
21703
21704/*Convert WDI WEP type into HAL WEP type*/
21705WPT_STATIC WPT_INLINE tAniWepType
21706WDI_2_HAL_WEP_TYPE
21707(
21708 WDI_WepType wdiWEPType
21709)
21710{
Jeff Johnsone7245742012-09-05 17:12:55 -070021711 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021712 the chances of getting inlined*/
21713 switch ( wdiWEPType )
21714 {
21715 case WDI_WEP_STATIC:
21716 return eSIR_WEP_STATIC;
21717
21718 case WDI_WEP_DYNAMIC:
21719 return eSIR_WEP_DYNAMIC;
21720 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021721
Jeff Johnson295189b2012-06-20 16:38:30 -070021722 return eSIR_WEP_MAX;
21723}/*WDI_2_HAL_WEP_TYPE*/
21724
21725WPT_STATIC WPT_INLINE tSirLinkState
21726WDI_2_HAL_LINK_STATE
21727(
21728 WDI_LinkStateType wdiLinkState
21729)
21730{
Jeff Johnsone7245742012-09-05 17:12:55 -070021731 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021732 the chances of getting inlined*/
21733 switch ( wdiLinkState )
21734 {
21735 case WDI_LINK_IDLE_STATE:
21736 return eSIR_LINK_IDLE_STATE;
21737
21738 case WDI_LINK_PREASSOC_STATE:
21739 return eSIR_LINK_PREASSOC_STATE;
21740
21741 case WDI_LINK_POSTASSOC_STATE:
21742 return eSIR_LINK_POSTASSOC_STATE;
21743
21744 case WDI_LINK_AP_STATE:
21745 return eSIR_LINK_AP_STATE;
21746
21747 case WDI_LINK_IBSS_STATE:
21748 return eSIR_LINK_IBSS_STATE;
21749
21750 case WDI_LINK_BTAMP_PREASSOC_STATE:
21751 return eSIR_LINK_BTAMP_PREASSOC_STATE;
21752
21753 case WDI_LINK_BTAMP_POSTASSOC_STATE:
21754 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
21755
21756 case WDI_LINK_BTAMP_AP_STATE:
21757 return eSIR_LINK_BTAMP_AP_STATE;
21758
21759 case WDI_LINK_BTAMP_STA_STATE:
21760 return eSIR_LINK_BTAMP_STA_STATE;
21761
21762 case WDI_LINK_LEARN_STATE:
21763 return eSIR_LINK_LEARN_STATE;
21764
21765 case WDI_LINK_SCAN_STATE:
21766 return eSIR_LINK_SCAN_STATE;
21767
21768 case WDI_LINK_FINISH_SCAN_STATE:
21769 return eSIR_LINK_FINISH_SCAN_STATE;
21770
21771 case WDI_LINK_INIT_CAL_STATE:
21772 return eSIR_LINK_INIT_CAL_STATE;
21773
21774 case WDI_LINK_FINISH_CAL_STATE:
21775 return eSIR_LINK_FINISH_CAL_STATE;
21776
21777#ifdef WLAN_FEATURE_P2P
21778 case WDI_LINK_LISTEN_STATE:
21779 return eSIR_LINK_LISTEN_STATE;
21780#endif
21781
21782 default:
21783 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070021784 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021785}
21786
Jeff Johnsone7245742012-09-05 17:12:55 -070021787/*Translate a STA Context from WDI into HAL*/
21788WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070021789void
21790WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070021791(
Jeff Johnson295189b2012-06-20 16:38:30 -070021792 tConfigStaParams* phalConfigSta,
21793 WDI_ConfigStaReqInfoType* pwdiConfigSta
21794)
21795{
21796 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070021797#ifdef WLAN_FEATURE_11AC
21798 /* Get the Version 1 Handler */
21799 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
21800 if (WDI_getFwWlanFeatCaps(DOT11AC))
21801 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021802 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070021803 }
21804#endif
21805 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021806 the chances of getting inlined*/
21807
Jeff Johnsone7245742012-09-05 17:12:55 -070021808 wpalMemoryCopy(phalConfigSta->bssId,
21809 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
21810
21811 wpalMemoryCopy(phalConfigSta->staMac,
21812 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070021813
21814 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
21815 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
21816 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
21817 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
21818 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
21819 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
21820 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
21821 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
21822 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
21823 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
21824 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
21825 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
21826 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
21827 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
21828 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
21829 phalConfigSta->action = pwdiConfigSta->wdiAction;
21830 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
21831 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
21832 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
21833 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
21834 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
21835 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
21836 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070021837
Jeff Johnson295189b2012-06-20 16:38:30 -070021838 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
21839
Jeff Johnsone7245742012-09-05 17:12:55 -070021840 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070021841 pwdiConfigSta->wdiSupportedRates.opRateMode;
21842 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
21843 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021845 pwdiConfigSta->wdiSupportedRates.llbRates[i];
21846 }
21847 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
21848 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021849 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021850 pwdiConfigSta->wdiSupportedRates.llaRates[i];
21851 }
21852 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
21853 {
21854 phalConfigSta->supportedRates.aniLegacyRates[i] =
21855 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
21856 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021857 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070021858 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
21859 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
21860 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021861 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
21863 }
21864 phalConfigSta->supportedRates.rxHighestDataRate =
21865 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
21866
Jeff Johnsone7245742012-09-05 17:12:55 -070021867#ifdef WLAN_FEATURE_11AC
21868 if(phalConfigSta_V1 != NULL)
21869 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021870 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
21871 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
21872 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
21873 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070021874 }
21875#endif
21876
Jeff Johnson295189b2012-06-20 16:38:30 -070021877#ifdef WLAN_FEATURE_P2P
21878 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
21879#endif
21880
Jeff Johnsone7245742012-09-05 17:12:55 -070021881#ifdef WLAN_FEATURE_11AC
21882 if(phalConfigSta_V1 != NULL)
21883 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021884 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
21885 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080021886 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
21887 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
21888
Jeff Johnsone7245742012-09-05 17:12:55 -070021889 }
21890#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021891}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070021892
21893/*Translate a Rate set info from WDI into HAL*/
21894WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021895WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070021896(
Jeff Johnson295189b2012-06-20 16:38:30 -070021897 tSirMacRateSet* pHalRateSet,
21898 WDI_RateSet* pwdiRateSet
21899)
21900{
Jeff Johnsone7245742012-09-05 17:12:55 -070021901 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21903
21904 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
21905 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
21906
21907 for ( i = 0; i < pHalRateSet->numRates; i++ )
21908 {
21909 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
21910 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021911
Jeff Johnson295189b2012-06-20 16:38:30 -070021912}/*WDI_CopyWDIRateSetToHALRateSet*/
21913
21914
21915/*Translate an EDCA Parameter Record from WDI into HAL*/
21916WPT_STATIC WPT_INLINE void
21917WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070021918(
Jeff Johnson295189b2012-06-20 16:38:30 -070021919 tSirMacEdcaParamRecord* phalEdcaParam,
21920 WDI_EdcaParamRecord* pWDIEdcaParam
21921)
21922{
Jeff Johnsone7245742012-09-05 17:12:55 -070021923 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021924 the chances of getting inlined*/
21925
21926 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
21927 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
21928 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
21929 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
21930
21931 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
21932 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
21933 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
21934}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
21935
21936
21937/*Copy a management frame header from WDI fmt into HAL fmt*/
21938WPT_STATIC WPT_INLINE void
21939WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
21940(
21941 tSirMacMgmtHdr* pmacMgmtHdr,
21942 WDI_MacMgmtHdr* pwdiMacMgmtHdr
21943)
21944{
21945 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
21946 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
21947 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
21948 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
21949 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
21950 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
21951 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
21952 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
21953 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
21954 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
21955 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
21956
21957 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
21958 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
21959
Jeff Johnsone7245742012-09-05 17:12:55 -070021960 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070021961 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021964 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 pwdiMacMgmtHdr->bssId, 6);
21966
21967 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
21968 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
21969 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
21970
21971}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
21972
21973
21974/*Copy config bss parameters from WDI fmt into HAL fmt*/
21975WPT_STATIC WPT_INLINE void
21976WDI_CopyWDIConfigBSSToHALConfigBSS
21977(
21978 tConfigBssParams* phalConfigBSS,
21979 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
21980)
21981{
21982
21983 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021984#ifdef WLAN_FEATURE_11AC
21985 /* Get the Version 1 Handler */
21986 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
21987 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021988 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070021989#endif
21990
Jeff Johnson295189b2012-06-20 16:38:30 -070021991 wpalMemoryCopy( phalConfigBSS->bssId,
21992 pwdiConfigBSS->macBSSID,
21993 WDI_MAC_ADDR_LEN);
21994
21995#ifdef HAL_SELF_STA_PER_BSS
21996 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
21997 pwdiConfigBSS->macSelfAddr,
21998 WDI_MAC_ADDR_LEN);
21999#endif
22000
22001 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22002
22003 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22004 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22005
Jeff Johnsone7245742012-09-05 17:12:55 -070022006 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022007 pwdiConfigBSS->ucShortSlotTimeSupported;
22008 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22009 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22010 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22011 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22012 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022014 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22015 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22016 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22017 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22018 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22019 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22020 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22021 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22022 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22023 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22024 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22025
Jeff Johnsone7245742012-09-05 17:12:55 -070022026 phalConfigBSS->htOperMode =
22027 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022028
22029 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22030 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22031 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22032 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22033
22034#ifdef WLAN_FEATURE_VOWIFI
22035 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22036#endif
22037
22038 /*! Used 32 as magic number because that is how the ssid is declared inside the
22039 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022040 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22042 pwdiConfigBSS->wdiSSID.ucLength : 32;
22043 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022044 pwdiConfigBSS->wdiSSID.sSSID,
22045 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022046
22047 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22048 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022049
Jeff Johnson295189b2012-06-20 16:38:30 -070022050 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22051 &pwdiConfigBSS->wdiRateSet);
22052
22053 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22054
22055 if(phalConfigBSS->edcaParamsValid)
22056 {
22057 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22058 &pwdiConfigBSS->wdiBEEDCAParams);
22059 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22060 &pwdiConfigBSS->wdiBKEDCAParams);
22061 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22062 &pwdiConfigBSS->wdiVIEDCAParams);
22063 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22064 &pwdiConfigBSS->wdiVOEDCAParams);
22065 }
22066
Jeff Johnsone7245742012-09-05 17:12:55 -070022067 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022068
22069 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22070
22071#ifdef WLAN_FEATURE_VOWIFI_11R
22072
Jeff Johnsone7245742012-09-05 17:12:55 -070022073 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022074 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022075
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 if( phalConfigBSS->extSetStaKeyParamValid )
22077 {
22078 /*-----------------------------------------------------------------------
22079 Copy the STA Key parameters into the HAL message
22080 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022081 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22083
Jeff Johnsone7245742012-09-05 17:12:55 -070022084 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22086
22087 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22088
22089 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22090
22091 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22092
22093#ifdef WLAN_SOFTAP_FEATURE
22094 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22095 keyIndex++)
22096 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022097 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022098 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22099 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22100 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22101 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22102 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22103 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022104 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022105 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022106 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022108 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22110 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022111 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 WDI_MAX_KEY_LENGTH);
22113 }
22114#else
Jeff Johnsone7245742012-09-05 17:12:55 -070022115 phalConfigBSS->extSetStaKeyParam.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022116 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyId;
22117 phalConfigBSS->extSetStaKeyParam.key.unicast =
22118 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].unicast;
22119 phalConfigBSS->extSetStaKeyParam.key.keyDirection =
22120 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyDirection;
22121 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022122 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022123 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 phalConfigBSS->extSetStaKeyParam.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 phalConfigBSS->extSetStaKeyParam.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyLength;
22128 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022130 WDI_MAX_KEY_LENGTH);
22131#endif
22132 }
22133 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22134 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022135 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022136 sizeof(phalConfigBSS->extSetStaKeyParam) );
22137 }
22138
22139#endif /*WLAN_FEATURE_VOWIFI_11R*/
22140
Jeff Johnsone7245742012-09-05 17:12:55 -070022141#ifdef WLAN_FEATURE_11AC
22142 if(phalConfigBSS_V1 != NULL)
22143 {
22144 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22145 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22146 }
22147#endif
22148
Jeff Johnson295189b2012-06-20 16:38:30 -070022149}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22150
22151
Jeff Johnsone7245742012-09-05 17:12:55 -070022152/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022153 pointed to by user data */
22154WPT_STATIC WPT_INLINE void
22155WDI_ExtractRequestCBFromEvent
22156(
22157 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022158 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 void** ppUserData
22160)
22161{
22162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22163 switch ( pEvent->wdiRequest )
22164 {
22165 case WDI_START_REQ:
22166 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22167 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22168 break;
22169 case WDI_STOP_REQ:
22170 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22171 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22172 break;
22173 case WDI_INIT_SCAN_REQ:
22174 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22175 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22176 break;
22177 case WDI_START_SCAN_REQ:
22178 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22179 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22180 break;
22181 case WDI_END_SCAN_REQ:
22182 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22183 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22184 break;
22185 case WDI_FINISH_SCAN_REQ:
22186 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22187 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22188 break;
22189 case WDI_JOIN_REQ:
22190 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22191 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22192 break;
22193 case WDI_CONFIG_BSS_REQ:
22194 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22195 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22196 break;
22197 case WDI_DEL_BSS_REQ:
22198 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22199 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22200 break;
22201 case WDI_POST_ASSOC_REQ:
22202 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22203 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22204 break;
22205 case WDI_DEL_STA_REQ:
22206 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22207 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22208 break;
22209 case WDI_DEL_STA_SELF_REQ:
22210 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22211 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22212 break;
22213
22214 case WDI_SET_BSS_KEY_REQ:
22215 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22216 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22217 break;
22218 case WDI_RMV_BSS_KEY_REQ:
22219 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22220 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22221 break;
22222 case WDI_SET_STA_KEY_REQ:
22223 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22224 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22225 break;
22226 case WDI_RMV_STA_KEY_REQ:
22227 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22228 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22229 break;
22230 case WDI_ADD_TS_REQ:
22231 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22232 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22233 break;
22234 case WDI_DEL_TS_REQ:
22235 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22236 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22237 break;
22238 case WDI_UPD_EDCA_PRMS_REQ:
22239 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22240 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22241 break;
22242 case WDI_ADD_BA_SESSION_REQ:
22243 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22244 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22245 break;
22246 case WDI_DEL_BA_REQ:
22247 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22248 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22249 break;
22250#ifdef FEATURE_WLAN_CCX
22251 case WDI_TSM_STATS_REQ:
22252 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22253 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22254 break;
22255#endif
22256 case WDI_CH_SWITCH_REQ:
22257 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22258 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22259 break;
22260 case WDI_CONFIG_STA_REQ:
22261 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22262 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22263 break;
22264 case WDI_SET_LINK_ST_REQ:
22265 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22266 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22267 break;
22268 case WDI_GET_STATS_REQ:
22269 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22270 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22271 break;
22272 case WDI_UPDATE_CFG_REQ:
22273 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22274 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22275 break;
22276 case WDI_ADD_BA_REQ:
22277 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22278 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22279 break;
22280 case WDI_TRIGGER_BA_REQ:
22281 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22282 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22283 break;
22284 case WDI_UPD_BCON_PRMS_REQ:
22285 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22286 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22287 break;
22288 case WDI_SND_BCON_REQ:
22289 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22290 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22291 break;
22292 case WDI_ENTER_BMPS_REQ:
22293 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22294 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22295 break;
22296 case WDI_EXIT_BMPS_REQ:
22297 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22298 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22299 break;
22300 case WDI_ENTER_UAPSD_REQ:
22301 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22302 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22303 break;
22304 case WDI_UPDATE_UAPSD_PARAM_REQ:
22305 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22306 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22307 break;
22308 case WDI_CONFIGURE_RXP_FILTER_REQ:
22309 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22310 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22311 break;
22312 case WDI_SET_BEACON_FILTER_REQ:
22313 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22314 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22315 break;
22316 case WDI_REM_BEACON_FILTER_REQ:
22317 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22318 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022319 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022320 case WDI_SET_RSSI_THRESHOLDS_REQ:
22321 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22322 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22323 break;
22324 case WDI_HOST_OFFLOAD_REQ:
22325 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22326 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22327 break;
22328 case WDI_WOWL_ADD_BC_PTRN_REQ:
22329 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22330 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22331 break;
22332 case WDI_WOWL_DEL_BC_PTRN_REQ:
22333 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22334 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22335 break;
22336 case WDI_WOWL_ENTER_REQ:
22337 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22338 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22339 break;
22340 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22341 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22342 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22343 break;
22344 case WDI_FLUSH_AC_REQ:
22345 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22346 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22347 break;
22348 case WDI_BTAMP_EVENT_REQ:
22349 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22350 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22351 break;
22352 case WDI_KEEP_ALIVE_REQ:
22353 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22354 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22355 break;
22356 case WDI_SET_TX_PER_TRACKING_REQ:
22357 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22358 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
22359 default:
22360 *ppfnReqCB = NULL;
22361 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022362 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022363 }
22364}/*WDI_ExtractRequestCBFromEvent*/
22365
22366
22367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 frame xtl is enabled for a particular STA.
22370
22371 WDI_PostAssocReq must have been called.
22372
Jeff Johnsone7245742012-09-05 17:12:55 -070022373 @param uSTAIdx: STA index
22374
Jeff Johnson295189b2012-06-20 16:38:30 -070022375 @see WDI_PostAssocReq
22376 @return Result of the function call
22377*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022378wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022379WDI_IsHwFrameTxTranslationCapable
22380(
22381 wpt_uint8 uSTAIdx
22382)
22383{
Jeff Johnsone7245742012-09-05 17:12:55 -070022384 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 uma value*/
22386 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022387 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022388 ------------------------------------------------------------------------*/
22389 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22390 {
22391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22392 "WDI API call before module is initialized - Fail request");
22393
Jeff Johnsone7245742012-09-05 17:12:55 -070022394 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022395 }
22396
Gopichand Nakkalaba261272013-01-03 15:45:56 -080022397#ifdef WLAN_SOFTAP_VSTA_FEATURE
22398 if (IS_VSTA_IDX(uSTAIdx))
22399 {
22400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22401 "STA %d is a Virtual STA, "
22402 "HW frame translation disabled", uSTAIdx);
22403 return eWLAN_PAL_FALSE;
22404 }
22405#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070022406
Jeff Johnson295189b2012-06-20 16:38:30 -070022407 return gWDICb.bFrameTransEnabled;
22408}/*WDI_IsHwFrameTxTranslationCapable*/
22409
22410#ifdef FEATURE_WLAN_SCAN_PNO
22411/**
22412 @brief WDI_SetPreferredNetworkList
22413
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022416
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 wdiPNOScanCb: callback for passing back the response
22418 of the Set PNO operation received from the
22419 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022420
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022422 callback
22423
Jeff Johnson295189b2012-06-20 16:38:30 -070022424 @return Result of the function call
22425*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022426WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022427WDI_SetPreferredNetworkReq
22428(
22429 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22430 WDI_PNOScanCb wdiPNOScanCb,
22431 void* pUserData
22432)
22433{
22434 WDI_EventInfoType wdiEventData = {{0}};
22435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22436
22437 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022438 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 ------------------------------------------------------------------------*/
22440 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22441 {
22442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22443 "WDI API call before module is initialized - Fail request");
22444
Jeff Johnsone7245742012-09-05 17:12:55 -070022445 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022446 }
22447
22448 /*------------------------------------------------------------------------
22449 Fill in Event data and post to the Main FSM
22450 ------------------------------------------------------------------------*/
22451 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022452 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022455 wdiEventData.pUserData = pUserData;
22456
22457 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22458}
22459
22460
22461/**
22462 @brief WDI_SetRssiFilterReq
22463
Jeff Johnsone7245742012-09-05 17:12:55 -070022464 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022466
Jeff Johnson295189b2012-06-20 16:38:30 -070022467 wdiRssiFilterCb: callback for passing back the response
22468 of the Set RSSI Filter operation received from the
22469 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022470
Jeff Johnson295189b2012-06-20 16:38:30 -070022471 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022472 callback
22473
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 @return Result of the function call
22475*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022476WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022477WDI_SetRssiFilterReq
22478(
22479 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22480 WDI_RssiFilterCb wdiRssiFilterCb,
22481 void* pUserData
22482)
22483{
22484 WDI_EventInfoType wdiEventData = {{0}};
22485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22486
22487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022489 ------------------------------------------------------------------------*/
22490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22491 {
22492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22493 "WDI API call before module is initialized - Fail request");
22494
Jeff Johnsone7245742012-09-05 17:12:55 -070022495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022496 }
22497
22498 /*------------------------------------------------------------------------
22499 Fill in Event data and post to the Main FSM
22500 ------------------------------------------------------------------------*/
22501 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 wdiEventData.pUserData = pUserData;
22506
22507 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22508}/*WDI_SetRssiFilterReq*/
22509
22510/**
22511 @brief WDI_UpdateScanParamsReq
22512
Jeff Johnsone7245742012-09-05 17:12:55 -070022513 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022514 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022515
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 wdiUpdateScanParamsCb: callback for passing back the response
22517 of the Set PNO operation received from the
22518 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022519
Jeff Johnson295189b2012-06-20 16:38:30 -070022520 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022521 callback
22522
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 @return Result of the function call
22524*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022525WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022526WDI_UpdateScanParamsReq
22527(
22528 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22529 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22530 void* pUserData
22531)
22532{
22533 WDI_EventInfoType wdiEventData = {{0}};
22534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22535
22536 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022537 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022538 ------------------------------------------------------------------------*/
22539 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22540 {
22541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22542 "WDI API call before module is initialized - Fail request");
22543
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 }
22546
22547 /*------------------------------------------------------------------------
22548 Fill in Event data and post to the Main FSM
22549 ------------------------------------------------------------------------*/
22550 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022551 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070022553 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022554 wdiEventData.pUserData = pUserData;
22555
22556 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22557}
22558
22559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022560 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022562
22563 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022564 pwdiPNOScanReqParams: pointer to the info received
22565 from upper layers
22566 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022567 and its size
22568
Jeff Johnson295189b2012-06-20 16:38:30 -070022569 @return Result of the function call
22570*/
22571
22572WDI_Status
22573WDI_PackPreferredNetworkList
22574(
22575 WDI_ControlBlockType* pWDICtx,
22576 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22577 wpt_uint8** ppSendBuffer,
22578 wpt_uint16* pSize
22579)
22580{
Jeff Johnsone7245742012-09-05 17:12:55 -070022581 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022582 wpt_uint16 usDataOffset = 0;
22583 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022584 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022585 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022586 /*-----------------------------------------------------------------------
22587 Get message buffer
22588 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022590 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022592 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022593 {
22594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22595 "Unable to get send buffer in Set PNO req %x ",
22596 pwdiPNOScanReqParams);
22597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 }
22600
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022601 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
22602
Jeff Johnson295189b2012-06-20 16:38:30 -070022603 /*-------------------------------------------------------------------------
22604 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22605 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022606 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022607 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022608 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22610
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022611 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022612 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022613 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022614 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22616
22617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022618 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022619 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22620 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22621 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22622
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022623 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022624 {
22625 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022626 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022627 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22628
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022629 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022630 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022631 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022632
22633 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022634 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022635 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022636
22637 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022638 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022640
Jeff Johnsone7245742012-09-05 17:12:55 -070022641 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022642 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022643 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070022644 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
22645 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22646 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
22647 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022648
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022649 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022651 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022652
22653 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022654 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022655 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22656
22657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022658 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022659 pPrefNetwListParams->aNetworks[i].ssId.length,
22660 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022661 }
22662
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022663 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022664 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022665 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22666 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22667 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22668
22669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022670 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022671 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022672 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22673 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22674
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022675 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022676 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022677 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022678 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022679 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22681 }
22682
22683 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022684 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022685 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22686 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22687 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022688 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022689
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022690 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022691 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022692 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022693
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022694 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22696 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22697 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022698 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022699
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022700 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022701 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022702 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022703
22704 /*Set the output values*/
22705 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022706 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022707
22708 return WDI_STATUS_SUCCESS;
22709}/*WDI_PackPreferredNetworkList*/
22710
22711/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022712 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022714
22715 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 pwdiPNOScanReqParams: pointer to the info received
22717 from upper layers
22718 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022719 and its size
22720
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 @return Result of the function call
22722*/
22723
22724WDI_Status
22725WDI_PackPreferredNetworkListNew
22726(
22727 WDI_ControlBlockType* pWDICtx,
22728 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22729 wpt_uint8** ppSendBuffer,
22730 wpt_uint16* pSize
22731)
22732{
Jeff Johnsone7245742012-09-05 17:12:55 -070022733 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022734 wpt_uint16 usDataOffset = 0;
22735 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022736 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022738
22739 /*-----------------------------------------------------------------------
22740 Get message buffer
22741 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022742 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022743 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070022744 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022745 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 {
22747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22748 "Unable to get send buffer in Set PNO req %x ",
22749 pwdiPNOScanReqParams);
22750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022752 }
22753
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022754 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
22755
Jeff Johnson295189b2012-06-20 16:38:30 -070022756 /*-------------------------------------------------------------------------
22757 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22758 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022759 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022761 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22763
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022764 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022765 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022767 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022768 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22769
22770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022771 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22773 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22774 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22775
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022776 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 {
22778 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022779 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22781
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022782 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022783 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022784 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022785
22786 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022787 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022788 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022789
22790 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022791 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022792 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022793
22794 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022795 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070022796 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022797
Jeff Johnsone7245742012-09-05 17:12:55 -070022798 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022799 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022800 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070022801 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
22802
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022803 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022805 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022806
22807 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022808 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22810
22811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022812 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022813 pPrefNetwListParams->aNetworks[i].ssId.length,
22814 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022815 }
22816
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022817 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022818 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022819 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22820 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22821 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22822
22823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022824 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022825 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022826 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22827 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22828
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022829 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022830 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022831 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022833 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022834 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22835 }
22836
22837 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022838 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22840 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22841 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022842 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022843
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022844 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022845 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022846 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022847
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022848 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022849 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22850 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22851 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022852 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022853
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022854 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022855 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022856 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022857
Jeff Johnson295189b2012-06-20 16:38:30 -070022858
22859 /*Set the output values*/
22860 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022861 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022862
22863 return WDI_STATUS_SUCCESS;
22864}/*WDI_PackPreferredNetworkListNew*/
22865
22866/**
22867 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022868
22869 @param pWDICtx: pointer to the WLAN DAL context
22870 pEventData: pointer to the event information structure
22871
Jeff Johnson295189b2012-06-20 16:38:30 -070022872 @return Result of the function call
22873*/
22874WDI_Status
22875WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022876(
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 WDI_ControlBlockType* pWDICtx,
22878 WDI_EventInfoType* pEventData
22879)
22880{
22881 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
22882 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022883 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022884 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022885 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022886
22887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022889 -------------------------------------------------------------------------*/
22890 if (( NULL == pEventData ) ||
22891 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
22892 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
22893 {
22894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022898 }
22899
22900 /*-------------------------------------------------------------------------
22901 Pack the PNO request structure based on version
22902 -------------------------------------------------------------------------*/
22903 if ( pWDICtx->wdiPNOVersion > 0 )
22904 {
22905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022906 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022907 pWDICtx->wdiPNOVersion);
22908
22909 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
22910 &pSendBuffer, &usSendSize);
22911 }
22912 else
22913 {
22914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022915 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022916 pWDICtx->wdiPNOVersion);
22917
22918 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
22919 &pSendBuffer, &usSendSize);
22920 }
22921
22922 if (( WDI_STATUS_SUCCESS != wdiStatus )||
22923 ( NULL == pSendBuffer )||( 0 == usSendSize ))
22924 {
22925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022926 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022928 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022929 }
22930
22931 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022932 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022933
22934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022935 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022936 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022937 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22938 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022939}
22940
22941/**
22942 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022943
22944 @param pWDICtx: pointer to the WLAN DAL context
22945 pEventData: pointer to the event information structure
22946
Jeff Johnson295189b2012-06-20 16:38:30 -070022947 @see
22948 @return Result of the function call
22949*/
22950WDI_Status
22951WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022952(
Jeff Johnson295189b2012-06-20 16:38:30 -070022953 WDI_ControlBlockType* pWDICtx,
22954 WDI_EventInfoType* pEventData
22955)
22956{
22957 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
22958 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022959 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022960 wpt_uint16 usDataOffset = 0;
22961 wpt_uint16 usSendSize = 0;
22962 wpt_uint8 ucRssiThreshold;
22963
22964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022965 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022966 -------------------------------------------------------------------------*/
22967 if (( NULL == pEventData ) ||
22968 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
22969 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
22970 {
22971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022972 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022975 }
22976
22977 /*-----------------------------------------------------------------------
22978 Get message buffer
22979 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022980 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022981 sizeof(ucRssiThreshold),
22982 &pSendBuffer, &usDataOffset, &usSendSize))||
22983 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
22984 {
22985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22986 "Unable to get send buffer in Set PNO req %x %x %x",
22987 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
22988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 }
22991
22992 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
22993
Jeff Johnsone7245742012-09-05 17:12:55 -070022994 wpalMemoryCopy( pSendBuffer+usDataOffset,
22995 &ucRssiThreshold,
22996 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070022997
22998 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022999 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023000
23001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023002 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023004 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23005 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023006}
23007
23008
23009/**
23010 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070023011
23012 @param pWDICtx: pointer to the WLAN DAL context
23013 pEventData: pointer to the event information structure
23014
Jeff Johnson295189b2012-06-20 16:38:30 -070023015 @see
23016 @return Result of the function call
23017*/
23018WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023019WDI_PackUpdateScanParamsReq
23020(
23021 WDI_ControlBlockType* pWDICtx,
23022 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23023 wpt_uint8** ppSendBuffer,
23024 wpt_uint16* pSize
23025)
23026{
23027 wpt_uint8* pSendBuffer = NULL;
23028 wpt_uint16 usDataOffset = 0;
23029 wpt_uint16 usSendSize = 0;
23030 tUpdateScanParams updateScanParams = {0};
23031
23032
23033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23034 "Begin WDI Update Scan Parameters Old Style Params");
23035 /*-----------------------------------------------------------------------
23036 Get message buffer
23037 -----------------------------------------------------------------------*/
23038 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23039 sizeof(updateScanParams),
23040 &pSendBuffer, &usDataOffset, &usSendSize))||
23041 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23042 {
23043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23044 "Unable to get send buffer in Update Scan Params req %x",
23045 pwdiUpdateScanParams);
23046 WDI_ASSERT(0);
23047 return WDI_STATUS_E_FAILURE;
23048 }
23049
23050 //
23051 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23052 //
23053
23054 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23055 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23056
23057 updateScanParams.ucChannelCount =
23058 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23059 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23060 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23061 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
23062
23063 wpalMemoryCopy( updateScanParams.aChannels,
23064 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23065 updateScanParams.ucChannelCount);
23066
23067
23068 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23069 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23070 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23071 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23072 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23073
23074 wpalMemoryCopy( pSendBuffer+usDataOffset,
23075 &updateScanParams,
23076 sizeof(updateScanParams));
23077
23078 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23079 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23080
23081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23082 "End Update Scan Parameters Old Style");
23083
23084 /*Set the output values*/
23085 *ppSendBuffer = pSendBuffer;
23086 *pSize = usSendSize;
23087
23088 return WDI_STATUS_SUCCESS;
23089}
23090
23091/**
23092 @brief Process Update Scan Params function
23093
23094 @param pWDICtx: pointer to the WLAN DAL context
23095 pEventData: pointer to the event information structure
23096
23097 @see
23098 @return Result of the function call
23099*/
23100WDI_Status
23101WDI_PackUpdateScanParamsReqEx
23102(
23103 WDI_ControlBlockType* pWDICtx,
23104 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23105 wpt_uint8** ppSendBuffer,
23106 wpt_uint16* pSize
23107)
23108{
23109 wpt_uint8* pSendBuffer = NULL;
23110 wpt_uint16 usDataOffset = 0;
23111 wpt_uint16 usSendSize = 0;
23112 tUpdateScanParamsEx updateScanParams = {0};
23113
23114
23115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23116 "Begin WDI Update Scan Parameters New Style Params");
23117 /*-----------------------------------------------------------------------
23118 Get message buffer
23119 -----------------------------------------------------------------------*/
23120 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23121 sizeof(updateScanParams),
23122 &pSendBuffer, &usDataOffset, &usSendSize))||
23123 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23124 {
23125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23126 "Unable to get send buffer in Update Scan Params Ex req %x",
23127 pwdiUpdateScanParams);
23128 WDI_ASSERT(0);
23129 return WDI_STATUS_E_FAILURE;
23130 }
23131
23132 //
23133 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23134 //
23135
23136 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23137 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23138
23139 updateScanParams.ucChannelCount =
23140 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23141 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23142 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23143 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23144
23145 wpalMemoryCopy( updateScanParams.aChannels,
23146 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23147 updateScanParams.ucChannelCount);
23148
23149
23150 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23151 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23152 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23153 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23154 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23155
23156 wpalMemoryCopy( pSendBuffer+usDataOffset,
23157 &updateScanParams,
23158 sizeof(updateScanParams));
23159
23160 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23161 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23162
23163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23164 "End Update Scan Parameters New Style");
23165
23166 /*Set the output values*/
23167 *ppSendBuffer = pSendBuffer;
23168 *pSize = usSendSize;
23169
23170 return WDI_STATUS_SUCCESS;
23171}
23172
23173/**
23174 @brief Process Update Scan Params function
23175
23176 @param pWDICtx: pointer to the WLAN DAL context
23177 pEventData: pointer to the event information structure
23178
23179 @see
23180 @return Result of the function call
23181*/
23182WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023183WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023184(
Jeff Johnson295189b2012-06-20 16:38:30 -070023185 WDI_ControlBlockType* pWDICtx,
23186 WDI_EventInfoType* pEventData
23187)
23188{
23189 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23190 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023191 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023192 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023193 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023194
23195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023196 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023197 -------------------------------------------------------------------------*/
23198 if (( NULL == pEventData ) ||
23199 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23200 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23201 {
23202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 }
23207
23208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23209 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023210
23211 //
23212 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23213 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023214 if ( pWDICtx->wlanVersion.revision < 1 )
23215 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023216 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023217 &pSendBuffer, &usSendSize);
23218 }
23219 else
23220 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023221 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23222 &pSendBuffer, &usSendSize);
23223 }
23224
23225 if(WDI_STATUS_SUCCESS != wdiStatus)
23226 {
23227 //memory allocation failed
23228 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023229 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023230
Jeff Johnson295189b2012-06-20 16:38:30 -070023231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023232 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023234 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023235 wdiUpdateScanParamsCb, pEventData->pUserData,
23236 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023237}
23238
23239/**
23240 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023241
23242 @param pWDICtx: pointer to the WLAN DAL context
23243 pEventData: pointer to the event information structure
23244
Jeff Johnson295189b2012-06-20 16:38:30 -070023245 @see
23246 @return Result of the function call
23247*/
23248WDI_Status
23249WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023250(
Jeff Johnson295189b2012-06-20 16:38:30 -070023251 WDI_ControlBlockType* pWDICtx,
23252 WDI_EventInfoType* pEventData
23253)
23254{
23255 WDI_LowLevelIndType wdiInd;
23256 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23257
23258
23259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023261 -------------------------------------------------------------------------*/
23262 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23263 ( NULL == pEventData->pEventData ))
23264 {
23265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023266 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023267 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023269 }
23270
23271 /*-------------------------------------------------------------------------
23272 Extract indication and send it to UMAC
23273 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023274 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23275 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023276 sizeof(tPrefNetwFoundParams));
23277
23278 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023279 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023280
23281 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23282
Jeff Johnsone7245742012-09-05 17:12:55 -070023283 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023284 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023285 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023286
Jeff Johnsone7245742012-09-05 17:12:55 -070023287 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23288 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23290
23291 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23292 prefNetwFoundInd.prefNetwFoundParams.rssi;
23293
23294 // DEBUG
23295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23296 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23297 wdiInd.wdiIndicationType,
23298 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23299 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23300
23301 /*Notify UMAC*/
23302 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070023303
23304 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023305}
23306
23307/**
23308 @brief Process PNO Rsp function (called when a
23309 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023310
23311 @param pWDICtx: pointer to the WLAN DAL context
23312 pEventData: pointer to the event information structure
23313
Jeff Johnson295189b2012-06-20 16:38:30 -070023314 @see
23315 @return Result of the function call
23316*/
23317WDI_Status
23318WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023319(
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 WDI_ControlBlockType* pWDICtx,
23321 WDI_EventInfoType* pEventData
23322)
23323{
23324 WDI_Status wdiStatus;
23325 eHalStatus halStatus;
23326 WDI_PNOScanCb wdiPNOScanCb = NULL;
23327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23328
23329 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023330 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023331 -------------------------------------------------------------------------*/
23332 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23333 ( NULL == pEventData->pEventData ))
23334 {
23335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023336 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023337 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023339 }
23340
23341
Jeff Johnsone7245742012-09-05 17:12:55 -070023342 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023343
23344 /*-------------------------------------------------------------------------
23345 Extract response and send it to UMAC
23346 -------------------------------------------------------------------------*/
23347 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023348 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023349
23350 /*Notify UMAC*/
23351 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23352
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023354}/*WDI_ProcessSetPreferredNetworkRsp*/
23355
23356/**
23357 @brief Process RSSI Filter Rsp function (called when a
23358 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023359
23360 @param pWDICtx: pointer to the WLAN DAL context
23361 pEventData: pointer to the event information structure
23362
Jeff Johnson295189b2012-06-20 16:38:30 -070023363 @see
23364 @return Result of the function call
23365*/
23366WDI_Status
23367WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023368(
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 WDI_ControlBlockType* pWDICtx,
23370 WDI_EventInfoType* pEventData
23371)
23372{
23373 WDI_Status wdiStatus;
23374 eHalStatus halStatus;
23375 WDI_RssiFilterCb wdiRssiFilterCb;
23376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23377
23378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 -------------------------------------------------------------------------*/
23381 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23382 ( NULL == pEventData->pEventData ))
23383 {
23384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023388 }
23389
Jeff Johnsone7245742012-09-05 17:12:55 -070023390 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023391
23392 /*-------------------------------------------------------------------------
23393 Extract response and send it to UMAC
23394 -------------------------------------------------------------------------*/
23395 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023396 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023397
23398 /*Notify UMAC*/
23399 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23400
Jeff Johnsone7245742012-09-05 17:12:55 -070023401 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023402}/*WDI_ProcessSetRssiFilterRsp*/
23403
23404/**
23405 @brief Process Update Scan Params Rsp function (called when a
23406 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023407
23408 @param pWDICtx: pointer to the WLAN DAL context
23409 pEventData: pointer to the event information structure
23410
Jeff Johnson295189b2012-06-20 16:38:30 -070023411 @see
23412 @return Result of the function call
23413*/
23414WDI_Status
23415WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023416(
Jeff Johnson295189b2012-06-20 16:38:30 -070023417 WDI_ControlBlockType* pWDICtx,
23418 WDI_EventInfoType* pEventData
23419)
23420{
23421 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023423 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023424 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23426
23427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023429 -------------------------------------------------------------------------*/
23430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23431 ( NULL == pEventData->pEventData ))
23432 {
23433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 }
23438
23439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023440 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023441
Jeff Johnsone7245742012-09-05 17:12:55 -070023442 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023443
23444 /*-------------------------------------------------------------------------
23445 Extract response and send it to UMAC
23446 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023447 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23448 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023449 sizeof(halUpdScanParams.status));
23450
23451 uStatus = halUpdScanParams.status;
23452
23453 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023454 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023455
23456 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023458
Jeff Johnsone7245742012-09-05 17:12:55 -070023459 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023460
23461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023462 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023463 halUpdScanParams.status);
23464
23465 /*Notify UMAC*/
23466 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23467
Jeff Johnsone7245742012-09-05 17:12:55 -070023468 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023469}
23470#endif // FEATURE_WLAN_SCAN_PNO
23471
23472#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023473WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023474WDI_8023MulticastListReq
23475(
23476 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23477 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23478 void* pUserData
23479)
23480{
23481 WDI_EventInfoType wdiEventData;
23482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23483
23484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023485 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023486
23487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023489 ------------------------------------------------------------------------*/
23490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23491 {
23492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23493 "WDI API call before module is initialized - Fail request");
23494
Jeff Johnsone7245742012-09-05 17:12:55 -070023495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 }
23497
23498 /*------------------------------------------------------------------------
23499 Fill in Event data and post to the Main FSM
23500 ------------------------------------------------------------------------*/
23501 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023502 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023503 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023504 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023505 wdiEventData.pUserData = pUserData;
23506
23507 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23508}
23509
Jeff Johnsone7245742012-09-05 17:12:55 -070023510WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023511WDI_ReceiveFilterSetFilterReq
23512(
23513 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23514 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23515 void* pUserData
23516)
23517{
23518 WDI_EventInfoType wdiEventData;
23519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23520
23521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023522 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023523
23524 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023525 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 ------------------------------------------------------------------------*/
23527 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23528 {
23529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23530 "WDI API call before module is initialized - Fail request");
23531
Jeff Johnsone7245742012-09-05 17:12:55 -070023532 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023533 }
23534
23535 /*------------------------------------------------------------------------
23536 Fill in Event data and post to the Main FSM
23537 ------------------------------------------------------------------------*/
23538 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023539 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23540 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
23541 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams
Jeff Johnson295189b2012-06-20 16:38:30 -070023542 * sizeof(WDI_RcvPktFilterFieldParams) - 1);
Jeff Johnsone7245742012-09-05 17:12:55 -070023543 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023544 wdiEventData.pUserData = pUserData;
23545
23546
23547 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23548}
23549
Jeff Johnsone7245742012-09-05 17:12:55 -070023550WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023551WDI_FilterMatchCountReq
23552(
23553 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
23554 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
23555 void* pUserData
23556)
23557{
23558 WDI_EventInfoType wdiEventData;
23559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23560
23561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023562 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023563
23564 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023565 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023566 ------------------------------------------------------------------------*/
23567 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23568 {
23569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23570 "WDI API call before module is initialized - Fail request");
23571
Jeff Johnsone7245742012-09-05 17:12:55 -070023572 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023573 }
23574
23575 /*------------------------------------------------------------------------
23576 Fill in Event data and post to the Main FSM
23577 ------------------------------------------------------------------------*/
23578 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023581 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 wdiEventData.pUserData = pUserData;
23583
23584
23585 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23586}
23587
Jeff Johnsone7245742012-09-05 17:12:55 -070023588WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023589WDI_ReceiveFilterClearFilterReq
23590(
23591 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
23592 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
23593 void* pUserData
23594)
23595{
23596 WDI_EventInfoType wdiEventData;
23597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23598
23599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023600 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023601
23602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023604 ------------------------------------------------------------------------*/
23605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23606 {
23607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23608 "WDI API call before module is initialized - Fail request");
23609
Jeff Johnsone7245742012-09-05 17:12:55 -070023610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 }
23612
23613 /*------------------------------------------------------------------------
23614 Fill in Event data and post to the Main FSM
23615 ------------------------------------------------------------------------*/
23616 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023617 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023618 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023620 wdiEventData.pUserData = pUserData;
23621
23622
23623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23624}
23625
23626/**
23627 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023628
23629 @param pWDICtx: pointer to the WLAN DAL context
23630 pEventData: pointer to the event information structure
23631
Jeff Johnson295189b2012-06-20 16:38:30 -070023632 @see
23633 @return Result of the function call
23634*/
23635WDI_Status
23636WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023637(
Jeff Johnson295189b2012-06-20 16:38:30 -070023638 WDI_ControlBlockType* pWDICtx,
23639 WDI_EventInfoType* pEventData
23640)
23641{
23642 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
23643 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023644 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 wpt_uint16 usDataOffset = 0;
23646 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023647 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023649 wpt_uint8 ucCurrentBSSSesIdx = 0;
23650 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023651
23652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023653 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023654
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023655 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
23656 if( NULL == pRcvFltMcAddrListType )
23657 {
23658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23659 "Failed to alloc in WDI_Process8023MulticastListReq");
23660 return WDI_STATUS_E_FAILURE;
23661 }
23662
Jeff Johnson295189b2012-06-20 16:38:30 -070023663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023665 -------------------------------------------------------------------------*/
23666 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023667 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023668 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023669 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023670 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
23671 {
23672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023673 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023674 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023676 return WDI_STATUS_E_FAILURE;
23677 }
23678
23679 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23680 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
23681 &pBSSSes);
23682 if ( NULL == pBSSSes )
23683 {
23684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023685 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023686 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023688 }
23689
23690 /*-----------------------------------------------------------------------
23691 Get message buffer
23692 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023693 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23694 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023695 sizeof(tHalRcvFltMcAddrListType),
23696 &pSendBuffer, &usDataOffset, &usSendSize))||
23697 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
23698 {
23699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23700 "Unable to get send buffer in "
23701 "WDI_Process8023MulticastListReq() %x %x %x",
23702 pEventData, pwdiFltPktSetMcListReqParamsType,
23703 wdi8023MulticastListCb);
23704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023706 }
23707
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023708 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070023709 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023710 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023711 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023712 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070023713 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
23714 sizeof(tSirMacAddr));
23715 }
23716
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023717 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023719 pRcvFltMcAddrListType,
23720 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070023721
23722 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023723 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023724
23725
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023726 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023728 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023730 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023733}
23734
23735/**
23736 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023737
23738 @param pWDICtx: pointer to the WLAN DAL context
23739 pEventData: pointer to the event information structure
23740
Jeff Johnson295189b2012-06-20 16:38:30 -070023741 @see
23742 @return Result of the function call
23743*/
23744WDI_Status
23745WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023746(
Jeff Johnson295189b2012-06-20 16:38:30 -070023747 WDI_ControlBlockType* pWDICtx,
23748 WDI_EventInfoType* pEventData
23749)
23750{
23751 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
23752 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023753 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 wpt_uint16 usDataOffset = 0;
23755 wpt_uint16 usSendSize = 0;
23756 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023757 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 wpt_uint8 ucCurrentBSSSesIdx = 0;
23760 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023761 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
23762 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023763
23764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023765 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023766
23767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023768 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023769 -------------------------------------------------------------------------*/
23770 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023771 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070023772 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023773 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023774 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
23775 {
23776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023777 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023779 return WDI_STATUS_E_FAILURE;
23780 }
23781
23782 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23783 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
23784 &pBSSSes);
23785 if ( NULL == pBSSSes )
23786 {
23787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023788 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023789 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023790 }
23791
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023792 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
23793 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023794
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023795 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
23796 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23797 * sizeof(tHalSessionizedRcvPktFilterCfgType));
23798
23799 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
23800 usSessRcvPktFilterCfgSize);
23801
23802 if(NULL == pSessRcvPktFilterCfg)
23803 {
23804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23805 "%s: Failed to allocate memory for "
23806 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023807 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023808 WDI_ASSERT(0);
23809 return WDI_STATUS_E_FAILURE;
23810 }
23811
23812 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
23813
23814 /*-----------------------------------------------------------------------
23815 Get message buffer
23816 -----------------------------------------------------------------------*/
23817
23818 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
23819 usSessRcvPktFilterCfgSize,
23820 &pSendBuffer, &usDataOffset, &usSendSize))||
23821 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
23822 {
23823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23824 "Unable to get send buffer in "
23825 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23826 pEventData, pwdiSetRcvPktFilterReqInfo,
23827 wdiReceiveFilterSetFilterCb);
23828 WDI_ASSERT(0);
23829 wpalMemoryFree(pSessRcvPktFilterCfg);
23830 return WDI_STATUS_E_FAILURE;
23831 }
23832
23833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23834 "UsData Off %d UsSend %d cfg %d",usDataOffset,
23835 usSendSize,pSessRcvPktFilterCfg);
23836
23837 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23838 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23839 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23840 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
23841
23842 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
23843
23844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23845 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
23846 pSessRcvPktFilterCfg->filterType);
23847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23848 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
23849 pSessRcvPktFilterCfg->coleasceTime);
23850
23851 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
23852 {
23853 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
23854 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23855 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
23856 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23857 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
23858 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23859 pSessRcvPktFilterCfg->paramsData[i].dataLength =
23860 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
23861
23862 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
23863 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23864 8);
23865 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
23866 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23867 8);
23868
23869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23870 "Out:Proto %d Comp Flag %d \n",
23871 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
23872 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
23873
23874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23875 "Data Offset %d Data Len %d\n",
23876 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
23877 pSessRcvPktFilterCfg->paramsData[i].dataLength);
23878
23879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23880 "CData: %d:%d:%d:%d:%d:%d\n",
23881 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
23882 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
23883 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
23884 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
23885 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
23886 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
23887
23888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23889 "MData: %d:%d:%d:%d:%d:%d\n",
23890 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
23891 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
23892 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
23893 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
23894 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
23895 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
23896 }
23897
23898 wpalMemoryCopy( pSendBuffer+usDataOffset,
23899 pSessRcvPktFilterCfg,
23900 usSessRcvPktFilterCfgSize);
23901
23902
23903 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23904 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
23905
23906 wpalMemoryFree(pSessRcvPktFilterCfg);
23907
23908 }
23909 /*If SLM_SESSIONIZATION is not supported then do this */
23910 else
23911 {
23912 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
23913 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23914 * sizeof(tHalRcvPktFilterParams));
23915
23916 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070023917 usRcvPktFilterCfgSize);
23918
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023919 if(NULL == pRcvPktFilterCfg)
23920 {
23921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23922 "%s: Failed to allocate memory for "
23923 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023924 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023925 WDI_ASSERT(0);
23926 return WDI_STATUS_E_FAILURE;
23927 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023928
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023929 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023930
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023931 /*-----------------------------------------------------------------------
23932 Get message buffer
23933 -----------------------------------------------------------------------*/
23934 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023935 usRcvPktFilterCfgSize,
23936 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023937 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
23938 {
23939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 "Unable to get send buffer in "
23941 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23942 pEventData, pwdiSetRcvPktFilterReqInfo,
23943 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023944 WDI_ASSERT(0);
23945 wpalMemoryFree(pRcvPktFilterCfg);
23946 return WDI_STATUS_E_FAILURE;
23947 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023948
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023950 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070023951 usSendSize,usRcvPktFilterCfgSize);
23952
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023953 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23954 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23955 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23956 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070023957
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023959 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023962 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070023963 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070023964
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023965 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
23966 {
23967 pRcvPktFilterCfg->paramsData[i].protocolLayer =
23968 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23969 pRcvPktFilterCfg->paramsData[i].cmpFlag =
23970 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23971 pRcvPktFilterCfg->paramsData[i].dataOffset =
23972 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23973 pRcvPktFilterCfg->paramsData[i].dataLength =
23974 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070023975
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023976 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23978 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023979 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070023980 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23981 8);
23982
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023984 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070023985 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 pRcvPktFilterCfg->paramsData[i].cmpFlag);
23987
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23989 "Data Offset %d Data Len %d\n",
23990 pRcvPktFilterCfg->paramsData[i].dataOffset,
23991 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070023992
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23994 "CData: %d:%d:%d:%d:%d:%d\n",
23995 pRcvPktFilterCfg->paramsData[i].compareData[0],
23996 pRcvPktFilterCfg->paramsData[i].compareData[1],
23997 pRcvPktFilterCfg->paramsData[i].compareData[2],
23998 pRcvPktFilterCfg->paramsData[i].compareData[3],
23999 pRcvPktFilterCfg->paramsData[i].compareData[4],
24000 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070024001
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24003 "MData: %d:%d:%d:%d:%d:%d\n",
24004 pRcvPktFilterCfg->paramsData[i].dataMask[0],
24005 pRcvPktFilterCfg->paramsData[i].dataMask[1],
24006 pRcvPktFilterCfg->paramsData[i].dataMask[2],
24007 pRcvPktFilterCfg->paramsData[i].dataMask[3],
24008 pRcvPktFilterCfg->paramsData[i].dataMask[4],
24009 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
24010 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024011
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024012 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070024013 pRcvPktFilterCfg,
24014 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024015
24016
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024017 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24018 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024019
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024021 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024022 wpalMemoryFree(pRcvPktFilterCfg);
24023 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024027 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024028 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024029 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024030}
24031
24032/**
24033 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024034
24035 @param pWDICtx: pointer to the WLAN DAL context
24036 pEventData: pointer to the event information structure
24037
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 @see
24039 @return Result of the function call
24040*/
24041WDI_Status
24042WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024043(
Jeff Johnson295189b2012-06-20 16:38:30 -070024044 WDI_ControlBlockType* pWDICtx,
24045 WDI_EventInfoType* pEventData
24046)
24047{
24048 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
24049 NULL;
24050 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
24051 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024052 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 wpt_uint16 usDataOffset = 0;
24054 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024055 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
24056 wpt_uint8 ucCurrentBSSSesIdx = 0;
24057 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024058
24059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024060 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024061
24062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024064 -------------------------------------------------------------------------*/
24065 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024066 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024067 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024068 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024069 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
24070 {
24071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024075 }
24076
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024077 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24078 pwdiRcvFltPktMatchCntReqParamsType->bssId,
24079 &pBSSSes);
24080 if ( NULL == pBSSSes )
24081 {
24082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024083 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024084 return WDI_STATUS_E_FAILURE;
24085 }
24086
Jeff Johnson295189b2012-06-20 16:38:30 -070024087 /*-----------------------------------------------------------------------
24088 Get message buffer
24089 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24091 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024092 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024093 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024094 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070024095 {
24096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24097 "Unable to get send buffer in "
24098 "WDI_ProcessFilterMatchCountReq() %x %x %x",
24099 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
24100 wdiFilterMatchCountCb);
24101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024103 }
24104
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024105 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
24106 wpalMemoryCopy( pSendBuffer+usDataOffset,
24107 &rcvFltPktMatchCntReqParam,
24108 sizeof(rcvFltPktMatchCntReqParam));
24109
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 //
24111 // Don't need to fill send buffer other than header
24112 //
24113 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024114 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024115
24116
24117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024118 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024120 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24121 wdiFilterMatchCountCb,
24122 pEventData->pUserData,
24123 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024124}
24125
24126/**
24127 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024128
24129 @param pWDICtx: pointer to the WLAN DAL context
24130 pEventData: pointer to the event information structure
24131
Jeff Johnson295189b2012-06-20 16:38:30 -070024132 @see
24133 @return Result of the function call
24134*/
24135WDI_Status
24136WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024137(
Jeff Johnson295189b2012-06-20 16:38:30 -070024138 WDI_ControlBlockType* pWDICtx,
24139 WDI_EventInfoType* pEventData
24140)
Jeff Johnsone7245742012-09-05 17:12:55 -070024141{
Jeff Johnson295189b2012-06-20 16:38:30 -070024142 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24143 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024144 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024145 wpt_uint16 usDataOffset = 0;
24146 wpt_uint16 usSendSize = 0;
24147 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024148 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024149 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024150
24151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024152 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024153
24154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024156 -------------------------------------------------------------------------*/
24157 if (( NULL == pEventData ) ||
24158 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24159 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024160 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024161 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24162 {
24163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024166 return WDI_STATUS_E_FAILURE;
24167 }
24168
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024169 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024170 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24171 &pBSSSes);
24172 if ( NULL == pBSSSes )
24173 {
24174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024175 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024177 }
24178
24179 /*-----------------------------------------------------------------------
24180 Get message buffer
24181 -----------------------------------------------------------------------*/
24182 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024183 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024184 sizeof(tHalRcvFltPktClearParam),
24185 &pSendBuffer, &usDataOffset, &usSendSize))||
24186 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24187 {
24188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24189 "Unable to get send buffer in "
24190 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24191 pEventData, pwdiRcvFltPktClearReqParamsType,
24192 wdiRcvFltPktClearFilterCb);
24193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024195 }
24196
24197
24198 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024199 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024200 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024201 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024202
Jeff Johnsone7245742012-09-05 17:12:55 -070024203 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24204 wpalMemoryCopy( pSendBuffer+usDataOffset,
24205 &rcvFltPktClearParam,
24206 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024207
24208 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024209 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024210
24211
24212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024213 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024214 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024215 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024216 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024217 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024218}
24219
24220/**
24221 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024222
24223 @param pWDICtx: pointer to the WLAN DAL context
24224 pEventData: pointer to the event information structure
24225
Jeff Johnson295189b2012-06-20 16:38:30 -070024226 @see
24227 @return Result of the function call
24228*/
24229WDI_Status
24230WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024231(
Jeff Johnson295189b2012-06-20 16:38:30 -070024232 WDI_ControlBlockType* pWDICtx,
24233 WDI_EventInfoType* pEventData
24234)
24235{
Jeff Johnson295189b2012-06-20 16:38:30 -070024236 eHalStatus halStatus;
24237 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024238 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24239 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24241
24242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024243 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024244
24245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024247 -------------------------------------------------------------------------*/
24248 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24249 ( NULL == pEventData->pEventData ))
24250 {
24251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024252 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024255 }
24256
Jeff Johnsone7245742012-09-05 17:12:55 -070024257 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024258
24259 /*-------------------------------------------------------------------------
24260 Extract response and send it to UMAC
24261 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024262 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24263 {
24264 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24265 pEventData->pEventData,
24266 sizeof(halRcvFltPktSetMcListRsp));
24267
24268 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24269 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24270 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24271 halRcvFltPktSetMcListRsp.bssIdx;
24272 }
24273 else
24274 {
24275 halStatus = *((eHalStatus*)pEventData->pEventData);
24276 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24277 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024278
24279 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024280 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024281
Jeff Johnsone7245742012-09-05 17:12:55 -070024282 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024283}
24284
24285/**
24286 @brief Process Set Rsp function (called when a
24287 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024288
24289 @param pWDICtx: pointer to the WLAN DAL context
24290 pEventData: pointer to the event information structure
24291
Jeff Johnson295189b2012-06-20 16:38:30 -070024292 @see
24293 @return Result of the function call
24294*/
24295WDI_Status
24296WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024297(
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 WDI_ControlBlockType* pWDICtx,
24299 WDI_EventInfoType* pEventData
24300)
24301{
Jeff Johnson295189b2012-06-20 16:38:30 -070024302 eHalStatus halStatus;
24303 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024304 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24305 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24307
24308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024309 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024310
24311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 -------------------------------------------------------------------------*/
24314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24315 ( NULL == pEventData->pEventData ))
24316 {
24317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024321 }
24322
24323 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024325
24326 /*-------------------------------------------------------------------------
24327 Extract response and send it to UMAC
24328 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024329 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24330 {
24331 wpalMemoryCopy( &halSetPktFilterRspParams,
24332 pEventData->pEventData,
24333 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024334
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024335 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24336 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24337 }
24338 else
24339 {
24340 halStatus = *((eHalStatus*)pEventData->pEventData);
24341 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24342 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024343 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024344 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024345
Jeff Johnsone7245742012-09-05 17:12:55 -070024346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024347}
24348
24349/**
24350 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024351
24352 @param pWDICtx: pointer to the WLAN DAL context
24353 pEventData: pointer to the event information structure
24354
Jeff Johnson295189b2012-06-20 16:38:30 -070024355 @see
24356 @return Result of the function call
24357*/
24358WDI_Status
24359WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024360(
Jeff Johnson295189b2012-06-20 16:38:30 -070024361 WDI_ControlBlockType* pWDICtx,
24362 WDI_EventInfoType* pEventData
24363)
24364{
Jeff Johnson295189b2012-06-20 16:38:30 -070024365 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024367 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24368 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024369
24370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24371
24372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024373 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024374
24375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 -------------------------------------------------------------------------*/
24378 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24379 ( NULL == pEventData->pEventData ))
24380 {
24381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024385 }
24386
Jeff Johnsone7245742012-09-05 17:12:55 -070024387 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024388
24389 /*-------------------------------------------------------------------------
24390 Extract response and send it to UMAC
24391 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024392 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24393 {
24394 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24395 pEventData->pEventData,
24396 sizeof(halRcvFltrPktMatachRsp));
24397
24398 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24399 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24400 }
24401 else
24402 {
24403 halStatus = *((eHalStatus*)pEventData->pEventData);
24404 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24405 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024406
24407 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024408 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024409
Jeff Johnsone7245742012-09-05 17:12:55 -070024410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024411}
24412
24413/**
24414 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024415
24416 @param pWDICtx: pointer to the WLAN DAL context
24417 pEventData: pointer to the event information structure
24418
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 @see
24420 @return Result of the function call
24421*/
24422WDI_Status
24423WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024424(
Jeff Johnson295189b2012-06-20 16:38:30 -070024425 WDI_ControlBlockType* pWDICtx,
24426 WDI_EventInfoType* pEventData
24427)
24428{
Jeff Johnson295189b2012-06-20 16:38:30 -070024429 eHalStatus halStatus;
24430 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024431 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24432 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24434
24435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024436 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024437
24438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 -------------------------------------------------------------------------*/
24441 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24442 ( NULL == pEventData->pEventData ))
24443 {
24444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024448 }
24449
24450 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024451 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024452
24453 /*-------------------------------------------------------------------------
24454 Extract response and send it to UMAC
24455 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024456 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24457 {
24458 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24459 pEventData->pEventData,
24460 sizeof(halRcvFltPktClearRspMsg));
24461
24462 wdiRcvFltPktClearRspParamsType.wdiStatus =
24463 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24464 wdiRcvFltPktClearRspParamsType.bssIdx =
24465 halRcvFltPktClearRspMsg.bssIdx;
24466 }
24467 else
24468 {
24469 halStatus = *((eHalStatus*)pEventData->pEventData);
24470 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24471 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024472
24473 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024474 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024475
Jeff Johnsone7245742012-09-05 17:12:55 -070024476 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024477}
24478#endif // WLAN_FEATURE_PACKET_FILTERING
24479
24480/**
24481 @brief Process Shutdown Rsp function
24482 There is no shutdown response comming from HAL
24483 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024484
Jeff Johnson295189b2012-06-20 16:38:30 -070024485 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024486 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024487
24488 @see
24489 @return Result of the function call
24490*/
24491WDI_Status
24492WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024493(
Jeff Johnson295189b2012-06-20 16:38:30 -070024494 WDI_ControlBlockType* pWDICtx,
24495 WDI_EventInfoType* pEventData
24496)
24497{
24498 /*There is no shutdown response comming from HAL - function just kept for
24499 simmetry */
24500 WDI_ASSERT(0);
24501 return WDI_STATUS_SUCCESS;
24502}/*WDI_ProcessShutdownRsp*/
24503
24504/**
24505 @brief WDI_SetPowerParamsReq
24506
Jeff Johnsone7245742012-09-05 17:12:55 -070024507 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024508 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024509
Jeff Johnson295189b2012-06-20 16:38:30 -070024510 wdiPowerParamsCb: callback for passing back the response
24511 of the Set Power Params operation received from the
24512 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024513
Jeff Johnson295189b2012-06-20 16:38:30 -070024514 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024515 callback
24516
Jeff Johnson295189b2012-06-20 16:38:30 -070024517 @return Result of the function call
24518*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024519WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024520WDI_SetPowerParamsReq
24521(
24522 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24523 WDI_SetPowerParamsCb wdiPowerParamsCb,
24524 void* pUserData
24525)
24526{
24527 WDI_EventInfoType wdiEventData;
24528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24529
24530 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024531 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024532 ------------------------------------------------------------------------*/
24533 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24534 {
24535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24536 "WDI API call before module is initialized - Fail request");
24537
Jeff Johnsone7245742012-09-05 17:12:55 -070024538 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024539 }
24540
24541 /*------------------------------------------------------------------------
24542 Fill in Event data and post to the Main FSM
24543 ------------------------------------------------------------------------*/
24544 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024545 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024546 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024547 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024548 wdiEventData.pUserData = pUserData;
24549
24550 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24551}/*WDI_SetPowerParamsReq*/
24552
24553/**
24554 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024555
24556 @param pWDICtx: pointer to the WLAN DAL context
24557 pEventData: pointer to the event information structure
24558
Jeff Johnson295189b2012-06-20 16:38:30 -070024559 @see
24560 @return Result of the function call
24561*/
24562WDI_Status
24563WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024564(
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 WDI_ControlBlockType* pWDICtx,
24566 WDI_EventInfoType* pEventData
24567)
24568{
24569 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
24570 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024571 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024572 wpt_uint16 usDataOffset = 0;
24573 wpt_uint16 usSendSize = 0;
24574 tSetPowerParamsType powerParams;
24575
24576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024578 -------------------------------------------------------------------------*/
24579 if (( NULL == pEventData ) ||
24580 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
24581 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
24582 {
24583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024587 }
24588
24589 /*-----------------------------------------------------------------------
24590 Get message buffer
24591 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024592 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024593 sizeof(powerParams),
24594 &pSendBuffer, &usDataOffset, &usSendSize))||
24595 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
24596 {
24597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24598 "Unable to get send buffer in Set PNO req %x %x %x",
24599 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
24600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024602 }
24603
24604 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070024605 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070024606 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
24607
24608 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024609 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070024610 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
24611
24612 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024613 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070024614 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
24615
24616 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070024617 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070024618 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
24619
24620 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070024621 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070024622 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
24623
24624 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024625 powerParams.uBETInterval =
24626 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070024627
Jeff Johnsone7245742012-09-05 17:12:55 -070024628
24629 wpalMemoryCopy( pSendBuffer+usDataOffset,
24630 &powerParams,
24631 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024632
24633 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024634 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024635
24636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024637 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024638 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024639 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24640 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024641}
24642
24643/**
24644 @brief Process Power Params Rsp function (called when a
24645 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024646
24647 @param pWDICtx: pointer to the WLAN DAL context
24648 pEventData: pointer to the event information structure
24649
Jeff Johnson295189b2012-06-20 16:38:30 -070024650 @see
24651 @return Result of the function call
24652*/
24653WDI_Status
24654WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024655(
Jeff Johnson295189b2012-06-20 16:38:30 -070024656 WDI_ControlBlockType* pWDICtx,
24657 WDI_EventInfoType* pEventData
24658)
24659{
24660 WDI_Status wdiStatus;
24661 eHalStatus halStatus;
24662 WDI_SetPowerParamsCb wdiPowerParamsCb;
24663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24664
24665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024666 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024667 -------------------------------------------------------------------------*/
24668 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24669 ( NULL == pEventData->pEventData ))
24670 {
24671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024672 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024675 }
24676
Jeff Johnsone7245742012-09-05 17:12:55 -070024677 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024678
24679 /*-------------------------------------------------------------------------
24680 Extract response and send it to UMAC
24681 -------------------------------------------------------------------------*/
24682 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024683 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024684
24685 /*Notify UMAC*/
24686 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24687
Jeff Johnsone7245742012-09-05 17:12:55 -070024688 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024689}/*WDI_ProcessSetPowerParamsRsp*/
24690
24691#ifdef WLAN_FEATURE_GTK_OFFLOAD
24692/**
24693 @brief WDI_GTKOffloadReq will be called when the upper MAC
24694 wants to set GTK Rekey Counter while in power save. Upon
24695 the call of this API the WLAN DAL will pack and send a
24696 HAL GTK offload request message to the lower RIVA
24697 sub-system if DAL is in state STARTED.
24698
24699 In state BUSY this request will be queued. Request won't
24700 be allowed in any other state.
24701
24702 WDI_PostAssocReq must have been called.
24703
24704 @param pwdiGtkOffloadParams: the GTK offload as specified
24705 by the Device Interface
24706
24707 wdiGtkOffloadCb: callback for passing back the response
24708 of the GTK offload operation received from the device
24709
24710 pUserData: user data will be passed back with the
24711 callback
24712
24713 @see WDI_PostAssocReq
24714 @return Result of the function call
24715*/
24716WDI_Status
24717WDI_GTKOffloadReq
24718(
24719 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
24720 WDI_GtkOffloadCb wdiGtkOffloadCb,
24721 void* pUserData
24722)
24723{
24724 WDI_EventInfoType wdiEventData = {0};
24725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24726
24727 /*------------------------------------------------------------------------
24728 Sanity Check
24729 ------------------------------------------------------------------------*/
24730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24731 {
24732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24733 "WDI API call before module is initialized - Fail request");
24734
24735 return WDI_STATUS_E_NOT_ALLOWED;
24736 }
24737
24738 /*------------------------------------------------------------------------
24739 Fill in Event data and post to the Main FSM
24740 ------------------------------------------------------------------------*/
24741 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
24742 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070024743 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070024744 wdiEventData.pCBfnc = wdiGtkOffloadCb;
24745 wdiEventData.pUserData = pUserData;
24746
24747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24748}
24749
24750
24751/**
24752 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
24753 MAC wants to get GTK Rekey Counter while in power save.
24754 Upon the call of this API the WLAN DAL will pack and
24755 send a HAL GTK offload request message to the lower RIVA
24756 sub-system if DAL is in state STARTED.
24757
24758 In state BUSY this request will be queued. Request won't
24759 be allowed in any other state.
24760
24761 WDI_PostAssocReq must have been called.
24762
24763 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
24764 Information Message as specified by the
24765 Device Interface
24766
24767 wdiGtkOffloadGetInfoCb: callback for passing back the
24768 response of the GTK offload operation received from the
24769 device
24770
24771 pUserData: user data will be passed back with the
24772 callback
24773
24774 @see WDI_PostAssocReq
24775 @return Result of the function call
24776*/
24777WDI_Status
24778WDI_GTKOffloadGetInfoReq
24779(
24780 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
24781 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
24782 void* pUserData
24783)
24784{
24785 WDI_EventInfoType wdiEventData = {0};
24786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24787
24788 /*------------------------------------------------------------------------
24789 Sanity Check
24790 ------------------------------------------------------------------------*/
24791 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24792 {
24793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24794 "WDI API call before module is initialized - Fail request");
24795
24796 return WDI_STATUS_E_NOT_ALLOWED;
24797 }
24798
24799 /*------------------------------------------------------------------------
24800 Fill in Event data and post to the Main FSM
24801 ------------------------------------------------------------------------*/
24802 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
24803 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
24804 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
24805 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
24806 wdiEventData.pUserData = pUserData;
24807
24808 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24809}
24810
24811
24812/**
24813 @brief Process set GTK Offload Request function
24814
24815 @param pWDICtx: pointer to the WLAN DAL context
24816 pEventData: pointer to the event information structure
24817
24818 @see
24819 @return Result of the function call
24820*/
24821WDI_Status
24822WDI_ProcessGTKOffloadReq
24823(
24824 WDI_ControlBlockType* pWDICtx,
24825 WDI_EventInfoType* pEventData
24826)
24827{
24828 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
24829 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
24830 wpt_uint8* pSendBuffer = NULL;
24831 wpt_uint16 usDataOffset = 0;
24832 wpt_uint16 usSendSize = 0;
24833 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024834 wpt_uint8 ucCurrentSessionId = 0;
24835 WDI_BSSSessionType* pBSSSes = NULL;
24836
Jeff Johnson295189b2012-06-20 16:38:30 -070024837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24838
24839 /*-------------------------------------------------------------------------
24840 Sanity check
24841 -------------------------------------------------------------------------*/
24842 if (( NULL == pEventData ) ||
24843 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
24844 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
24845 {
24846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024847 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024848 WDI_ASSERT(0);
24849 return WDI_STATUS_E_FAILURE;
24850 }
24851
24852 /*-----------------------------------------------------------------------
24853 Get message buffer
24854 -----------------------------------------------------------------------*/
24855 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
24856 sizeof(gtkOffloadReqParams),
24857 &pSendBuffer, &usDataOffset, &usSendSize))||
24858 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
24859 {
24860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24861 "Unable to get send buffer in GTK offload req %x %x %x",
24862 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
24863 WDI_ASSERT(0);
24864 return WDI_STATUS_E_FAILURE;
24865 }
24866
24867 //
24868 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
24869 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024870 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24871 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
24872 &pBSSSes);
24873 if ( NULL == pBSSSes )
24874 {
24875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024876 " %s : Association for this BSSID does not exist", __func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024877 return WDI_STATUS_E_FAILURE;
24878 }
24879
24880 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
24881
Jeff Johnson295189b2012-06-20 16:38:30 -070024882 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
24883 // Copy KCK
24884 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
24885 // Copy KEK
24886 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
24887 // Copy KeyReplayCounter
24888 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
24889
24890 wpalMemoryCopy( pSendBuffer+usDataOffset,
24891 &gtkOffloadReqParams,
24892 sizeof(gtkOffloadReqParams));
24893
24894 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
24895 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
24896
24897 /*-------------------------------------------------------------------------
24898 Send Get STA Request to HAL
24899 -------------------------------------------------------------------------*/
24900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24901 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
24902}
24903
24904
24905/**
24906 @brief Process GTK Offload Get Information Request function
24907
24908 @param pWDICtx: pointer to the WLAN DAL context
24909 pEventData: pointer to the event information structure
24910
24911 @see
24912 @return Result of the function call
24913*/
24914WDI_Status
24915WDI_ProcessGTKOffloadGetInfoReq
24916(
24917 WDI_ControlBlockType* pWDICtx,
24918 WDI_EventInfoType* pEventData
24919)
24920{
24921 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
24922 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
24923 wpt_uint8* pSendBuffer = NULL;
24924 wpt_uint16 usDataOffset = 0;
24925 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024926 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
24927 wpt_uint8 ucCurrentSessionId = 0;
24928 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024929
24930 /*-------------------------------------------------------------------------
24931 Sanity check
24932 -------------------------------------------------------------------------*/
24933 if (( NULL == pEventData ) ||
24934 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
24935 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
24936 {
24937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024939 WDI_ASSERT(0);
24940 return WDI_STATUS_E_FAILURE;
24941 }
24942
24943 /*-----------------------------------------------------------------------
24944 Get message buffer
24945 -----------------------------------------------------------------------*/
24946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024947 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024948 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024949 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070024950 {
24951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24952 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
24953 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
24954 WDI_ASSERT(0);
24955 return WDI_STATUS_E_FAILURE;
24956 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024957 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24958 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
24959 &pBSSSes);
24960 if ( NULL == pBSSSes )
24961 {
24962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024963 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024964 return WDI_STATUS_E_FAILURE;
24965 }
24966 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024967
24968 //
24969 // Don't need to fill send buffer other than header
24970 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024971 wpalMemoryCopy( pSendBuffer+usDataOffset,
24972 &halGtkOffloadGetInfoReqParams,
24973 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024974
24975 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
24976 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
24977
24978 /*-------------------------------------------------------------------------
24979 Send Get STA Request to HAL
24980 -------------------------------------------------------------------------*/
24981 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24982 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
24983}
24984
24985/**
24986 @brief Process host offload Rsp function (called when a
24987 response is being received over the bus from HAL)
24988
24989 @param pWDICtx: pointer to the WLAN DAL context
24990 pEventData: pointer to the event information structure
24991
24992 @see
24993 @return Result of the function call
24994*/
24995WDI_Status
24996WDI_ProcessGtkOffloadRsp
24997(
24998 WDI_ControlBlockType* pWDICtx,
24999 WDI_EventInfoType* pEventData
25000)
25001{
Jeff Johnson295189b2012-06-20 16:38:30 -070025002 eHalStatus halStatus;
25003 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025004 tHalGtkOffloadRspParams halGtkOffloadRspParams;
25005 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25007
25008 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
25009
25010 /*-------------------------------------------------------------------------
25011 Sanity check
25012 -------------------------------------------------------------------------*/
25013 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25014 ( NULL == pEventData->pEventData))
25015 {
25016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025018 WDI_ASSERT(0);
25019 return WDI_STATUS_E_FAILURE;
25020 }
25021
25022 /*-------------------------------------------------------------------------
25023 Extract response and send it to UMAC
25024 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025025 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25026 {
25027 wpalMemoryCopy( &halGtkOffloadRspParams,
25028 pEventData->pEventData,
25029 sizeof(halGtkOffloadRspParams));
25030
25031 wdiGtkOffloadRsparams.ulStatus =
25032 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
25033 wdiGtkOffloadRsparams.bssIdx =
25034 halGtkOffloadRspParams.bssIdx;
25035 }
25036 else
25037 {
25038 halStatus = *((eHalStatus*)pEventData->pEventData);
25039 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25040 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025041
25042 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025043 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025044
25045 return WDI_STATUS_SUCCESS;
25046}
25047
25048/**
25049 @brief Process GTK Offload Get Information Response function
25050
25051 @param pWDICtx: pointer to the WLAN DAL context
25052 pEventData: pointer to the event information structure
25053
25054 @see
25055 @return Result of the function call
25056*/
25057WDI_Status
25058WDI_ProcessGTKOffloadGetInfoRsp
25059(
25060 WDI_ControlBlockType* pWDICtx,
25061 WDI_EventInfoType* pEventData
25062)
25063{
Jeff Johnson295189b2012-06-20 16:38:30 -070025064 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025065 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025066 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
25067 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025068
25069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25070
25071 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
25072
25073 /*-------------------------------------------------------------------------
25074 Sanity check
25075 -------------------------------------------------------------------------*/
25076 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25077 ( NULL == pEventData->pEventData ))
25078 {
25079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025080 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025081 WDI_ASSERT(0);
25082 return WDI_STATUS_E_FAILURE;
25083 }
25084
25085 /*-------------------------------------------------------------------------
25086 Extract response and send it to UMAC
25087 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025088 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25089 {
25090 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
25091 pEventData->pEventData,
25092 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025093
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025094 wdiGtkOffloadGetInfoRsparams.ulStatus =
25095 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
25096 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
25097 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
25098 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
25099 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
25100 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
25101 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
25102 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
25103 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
25104 wdiGtkOffloadGetInfoRsparams.bssIdx =
25105 halGtkOffloadGetInfoRspParams.bssIdx;
25106 }
25107 else
25108 {
25109 halStatus = *((eHalStatus*)pEventData->pEventData);
25110 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25111 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 /*Notify UMAC*/
25113 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25114 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025115 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025116
25117 return WDI_STATUS_SUCCESS;
25118}
25119#endif // WLAN_FEATURE_GTK_OFFLOAD
25120
25121#ifdef WLAN_WAKEUP_EVENTS
25122WDI_Status
25123WDI_ProcessWakeReasonInd
25124(
25125 WDI_ControlBlockType* pWDICtx,
25126 WDI_EventInfoType* pEventData
25127)
25128{
25129 WDI_LowLevelIndType *pWdiInd;
25130 tpWakeReasonParams pWakeReasonParams;
25131 wpt_uint32 allocSize = 0;
25132
25133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025134 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025135
25136 /*-------------------------------------------------------------------------
25137 Sanity check
25138 -------------------------------------------------------------------------*/
25139 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25140 ( NULL == pEventData->pEventData ))
25141 {
25142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025143 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025144 WDI_ASSERT( 0 );
25145 return WDI_STATUS_E_FAILURE;
25146 }
25147
25148 /*-------------------------------------------------------------------------
25149 Extract indication and send it to UMAC
25150 -------------------------------------------------------------------------*/
25151 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25152
25153 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25154
25155 //Allocate memory for WDI_WakeReasonIndType structure
25156 pWdiInd = wpalMemoryAllocate(allocSize) ;
25157
25158 if(NULL == pWdiInd)
25159 {
25160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25161 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025162 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025163 WDI_ASSERT(0);
25164 return WDI_STATUS_E_FAILURE;
25165 }
25166
25167 wpalMemoryZero(pWdiInd, allocSize);
25168
25169 /* Fill in the indication parameters*/
25170 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25171 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25172 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25173 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25174 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25175 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25176 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25177 &(pWakeReasonParams->aDataStart[0]),
25178 pWakeReasonParams->ulStoredDataLen);
25179
25180 /*Notify UMAC*/
25181 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25182
25183 //Free memory allocated for WDI_WakeReasonIndType structure
25184 wpalMemoryFree(pWdiInd);
25185
25186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025187 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025188
25189 return WDI_STATUS_SUCCESS;
25190}
25191#endif // WLAN_WAKEUP_EVENTS
25192
25193void WDI_GetWcnssCompiledApiVersion
25194(
25195 WDI_WlanVersionType *pWcnssApiVersion
25196)
25197{
25198 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25199 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25200 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25201 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25202}
25203
25204/**
25205 @brief Process Set TM Level Rsp function (called when a
25206 response is being received over the bus from HAL)
25207
25208 @param pWDICtx: pointer to the WLAN DAL context
25209 pEventData: pointer to the event information structure
25210
25211 @see
25212 @return Result of the function call
25213*/
25214WDI_Status
25215WDI_ProcessSetTmLevelRsp
25216(
25217 WDI_ControlBlockType* pWDICtx,
25218 WDI_EventInfoType* pEventData
25219)
25220{
25221 WDI_Status wdiStatus;
25222 eHalStatus halStatus;
25223 WDI_SetTmLevelCb wdiSetTmLevelCb;
25224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25225
25226 /*-------------------------------------------------------------------------
25227 Sanity check
25228 -------------------------------------------------------------------------*/
25229 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25230 ( NULL == pEventData->pEventData ))
25231 {
25232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025234 WDI_ASSERT(0);
25235 return WDI_STATUS_E_FAILURE;
25236 }
25237
25238 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25239
25240 /*-------------------------------------------------------------------------
25241 Extract response and send it to UMAC
25242 -------------------------------------------------------------------------*/
25243 halStatus = *((eHalStatus*)pEventData->pEventData);
25244 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25245
25246 /*Notify UMAC*/
25247 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25248
25249 return WDI_STATUS_SUCCESS;
25250}/*WDI_ProcessSetTmLevelRsp*/
25251
25252/**
25253 @brief Process Set Thermal Mitigation level Changed request
25254
25255 @param pWDICtx: pointer to the WLAN DAL context
25256 pEventData: pointer to the event information structure
25257
25258 @see
25259 @return Result of the function call
25260*/
25261WDI_Status
25262WDI_ProcessSetTmLevelReq
25263(
25264 WDI_ControlBlockType* pWDICtx,
25265 WDI_EventInfoType* pEventData
25266)
25267{
25268 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25269 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25270 wpt_uint8* pSendBuffer = NULL;
25271 wpt_uint16 usDataOffset = 0;
25272 wpt_uint16 usSendSize = 0;
25273 tSetThermalMitgationType halTmMsg;
25274
25275 /*-------------------------------------------------------------------------
25276 Sanity check
25277 -------------------------------------------------------------------------*/
25278 if (( NULL == pEventData ) ||
25279 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25280 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25281 {
25282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025283 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025284 WDI_ASSERT(0);
25285 return WDI_STATUS_E_FAILURE;
25286 }
25287
25288 /*-----------------------------------------------------------------------
25289 Get message buffer
25290 -----------------------------------------------------------------------*/
25291 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25292 sizeof(halTmMsg),
25293 &pSendBuffer, &usDataOffset, &usSendSize))||
25294 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25295 {
25296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25297 "Unable to get send buffer in Set PNO req %x %x %x",
25298 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25299 WDI_ASSERT(0);
25300 return WDI_STATUS_E_FAILURE;
25301 }
25302
25303 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25304 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25305
25306 wpalMemoryCopy( pSendBuffer+usDataOffset,
25307 &halTmMsg,
25308 sizeof(halTmMsg));
25309
25310 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25311 pWDICtx->pfncRspCB = NULL;
25312 /*-------------------------------------------------------------------------
25313 Send Get STA Request to HAL
25314 -------------------------------------------------------------------------*/
25315 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25316 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25317}
25318
25319/* Fill the value from the global features enabled array to the global capabilities
25320 * bitmap struct
25321 */
25322static void
25323FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25324{
25325 wpt_int8 i;
25326 for (i=0; i<len; i++)
25327 {
25328 setFeatCaps(fCaps, enabledFeat[i]);
25329 }
25330}
25331
25332/**
25333 @brief WDI_featureCapsExchangeReq
25334 Post feature capability bitmap exchange event.
25335 Host will send its own capability to FW in this req and
25336 expect FW to send its capability back as a bitmap in Response
25337
25338 @param
25339
25340 wdiFeatureCapsExchangeCb: callback called on getting the response.
25341 It is kept to mantain similarity between WDI reqs and if needed, can
25342 be used in future. Currently, It is set to NULL
25343
25344 pUserData: user data will be passed back with the
25345 callback
25346
25347 @see
25348 @return Result of the function call
25349*/
25350WDI_Status
25351WDI_featureCapsExchangeReq
25352(
25353 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25354 void* pUserData
25355)
25356{
25357 WDI_EventInfoType wdiEventData;
25358 wpt_int32 fCapsStructSize;
25359
25360 /*------------------------------------------------------------------------
25361 Sanity Check
25362 ------------------------------------------------------------------------*/
25363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25364 {
25365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25366 "WDI API call before module is initialized - Fail request");
25367
25368 return WDI_STATUS_E_NOT_ALLOWED;
25369 }
25370
25371 /* Allocate memory separately for global variable carrying FW caps */
25372 fCapsStructSize = sizeof(tWlanFeatCaps);
25373 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25374 if ( NULL == gpHostWlanFeatCaps )
25375 {
25376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25377 "Cannot allocate memory for host capability info\n");
25378 WDI_ASSERT(0);
25379 return WDI_STATUS_MEM_FAILURE;
25380 }
25381
25382 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25383
25384 /*------------------------------------------------------------------------
25385 Fill in Event data and post to the Main FSM
25386 ------------------------------------------------------------------------*/
25387 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25388 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25390 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025391 gpHostWlanFeatCaps->featCaps[0],
25392 gpHostWlanFeatCaps->featCaps[1],
25393 gpHostWlanFeatCaps->featCaps[2],
25394 gpHostWlanFeatCaps->featCaps[3]
25395 );
25396
25397 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25398 wdiEventData.pEventData = gpHostWlanFeatCaps;
25399 wdiEventData.uEventDataSize = fCapsStructSize;
25400 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25401 wdiEventData.pUserData = pUserData;
25402
25403 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25404}
25405
25406/**
Yathishd8713192012-12-10 14:21:35 -080025407 @brief Disable Active mode offload in Host
25408
25409 @param void
25410 @see
25411 @return void
25412*/
25413void
25414WDI_disableCapablityFeature(wpt_uint8 feature_index)
25415{
25416 supportEnabledFeatures[feature_index] = 0;
25417 return;
25418}
25419
25420/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025421 @brief Process Host-FW Capability Exchange Request function
25422
25423 @param pWDICtx: pointer to the WLAN DAL context
25424 pEventData: pointer to the event information structure
25425
25426 @see
25427 @return Result of the function call
25428*/
25429WDI_Status
25430WDI_ProcessFeatureCapsExchangeReq
25431(
25432 WDI_ControlBlockType* pWDICtx,
25433 WDI_EventInfoType* pEventData
25434)
25435{
25436 wpt_uint8* pSendBuffer = NULL;
25437 wpt_uint16 usDataOffset = 0;
25438 wpt_uint16 usSendSize = 0;
25439 wpt_uint16 usLen = 0;
25440
25441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25442
25443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025444 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025445
25446 /*-------------------------------------------------------------------------
25447 Sanity check
25448 -------------------------------------------------------------------------*/
25449 /* Call back function is NULL since not required for cap exchange req */
25450 if (( NULL == pEventData ) ||
25451 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25452 {
25453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025455 WDI_ASSERT(0);
25456 return WDI_STATUS_E_FAILURE;
25457 }
25458
25459 /*-----------------------------------------------------------------------
25460 Get message buffer
25461 -----------------------------------------------------------------------*/
25462 usLen = sizeof(tWlanFeatCaps);
25463
25464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25465 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25466 usLen,
25467 &pSendBuffer, &usDataOffset, &usSendSize))||
25468 ( usSendSize < (usDataOffset + usLen )))
25469 {
25470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25471 "Unable to get send buffer in feat caps exchange req %x %x",
25472 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25473 WDI_ASSERT(0);
25474 return WDI_STATUS_E_FAILURE;
25475 }
25476
25477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025478 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025479 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25480 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25481 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25482 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25483 );
25484
25485 /* Copy host caps after the offset in the send buffer */
25486 wpalMemoryCopy( pSendBuffer+usDataOffset,
25487 (tWlanFeatCaps *)pEventData->pEventData,
25488 usLen);
25489
25490 /*-------------------------------------------------------------------------
25491 Send Start Request to HAL
25492 -------------------------------------------------------------------------*/
25493 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25494 (WDI_StartRspCb)pEventData->pCBfnc,
25495 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25496
25497}/*WDI_ProcessFeatureCapsExchangeReq*/
25498
25499/**
25500 @brief Process Host-FW Capability Exchange Response function
25501
25502 @param pWDICtx: pointer to the WLAN DAL context
25503 pEventData: pointer to the event information structure
25504
25505 @see
25506 @return Result of the function call
25507*/
25508WDI_Status
25509WDI_ProcessFeatureCapsExchangeRsp
25510(
25511 WDI_ControlBlockType* pWDICtx,
25512 WDI_EventInfoType* pEventData
25513)
25514{
25515 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25516 wpt_int32 fCapsStructSize;
25517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25518
25519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025520 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025521
25522 /*-------------------------------------------------------------------------
25523 Sanity check
25524 -------------------------------------------------------------------------*/
25525 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25526 ( NULL == pEventData->pEventData ))
25527 {
25528 /* It will go here when riva is old (doesn't understand this msg) and host is new */
25529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025531 WDI_ASSERT(0);
25532 return WDI_STATUS_E_FAILURE;
25533 }
25534
25535 /* Allocate memory separately for global variable carrying FW caps */
25536 fCapsStructSize = sizeof(tWlanFeatCaps);
25537 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25538 if ( NULL == gpFwWlanFeatCaps )
25539 {
25540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25541 "Cannot allocate memory for host capability info\n");
25542 WDI_ASSERT(0);
25543 return WDI_STATUS_MEM_FAILURE;
25544 }
25545
25546 /*-------------------------------------------------------------------------
25547 Unpack HAL Response Message - the header was already extracted by the
25548 main Response Handling procedure
25549 -------------------------------------------------------------------------*/
25550 /*-------------------------------------------------------------------------
25551 Extract response and send it to UMAC
25552 -------------------------------------------------------------------------*/
25553
25554 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
25555 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070025556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25557 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 gpFwWlanFeatCaps->featCaps[0],
25559 gpFwWlanFeatCaps->featCaps[1],
25560 gpFwWlanFeatCaps->featCaps[2],
25561 gpFwWlanFeatCaps->featCaps[3]
25562 );
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
25564
25565 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
25566 if (wdiFeatureCapsExchangeCb != NULL)
25567 wdiFeatureCapsExchangeCb(NULL, NULL);
25568
25569 return WDI_STATUS_SUCCESS;
25570}
25571
Mohit Khanna4a70d262012-09-11 16:30:12 -070025572#ifdef WLAN_FEATURE_11AC
25573WDI_Status
25574WDI_ProcessUpdateVHTOpModeRsp
25575(
25576 WDI_ControlBlockType* pWDICtx,
25577 WDI_EventInfoType* pEventData
25578)
25579{
25580 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25581 WDI_Status wdiStatus;
25582 eHalStatus halStatus;
25583
25584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25585
25586 /*-------------------------------------------------------------------------
25587 Sanity check
25588 -------------------------------------------------------------------------*/
25589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25590 ( NULL == pEventData->pEventData))
25591 {
25592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025593 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025594 WDI_ASSERT(0);
25595 return WDI_STATUS_E_FAILURE;
25596 }
25597 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
25598
25599 /*-------------------------------------------------------------------------
25600 Extract response and send it to UMAC
25601 -------------------------------------------------------------------------*/
25602 halStatus = *((eHalStatus*)pEventData->pEventData);
25603 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25604
25605 /*Notify UMAC*/
25606 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
25607
25608 return WDI_STATUS_SUCCESS;
25609}
25610#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025611/**
25612 @brief WDI_getHostWlanFeatCaps
25613 WDI API that returns whether the feature passed to it as enum value in
25614 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
25615 variable storing host capability bitmap to find this. This can be used by
25616 other moduels to decide certain things like call different APIs based on
25617 whether a particular feature is supported.
25618
25619 @param
25620
25621 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
25622
25623 @see
25624 @return
25625 0 - if the feature is NOT supported in host
25626 any non-zero value - if the feature is SUPPORTED in host.
25627*/
25628wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
25629{
25630 wpt_uint8 featSupported = 0;
25631 if (gpHostWlanFeatCaps != NULL)
25632 {
25633 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
25634 }
25635 else
25636 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025638 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 }
25640 return featSupported;
25641}
25642
25643/**
25644 @brief WDI_getFwWlanFeatCaps
25645 WDI API that returns whether the feature passed to it as enum value in
25646 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
25647 variable storing host capability bitmap to find this. This can be used by
25648 other moduels to decide certain things like call different APIs based on
25649 whether a particular feature is supported.
25650
25651 @param
25652
25653 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
25654 in wlan_hal_msg.h.
25655
25656 @see
25657 @return
25658 0 - if the feature is NOT supported in FW
25659 any non-zero value - if the feature is SUPPORTED in FW.
25660*/
25661wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
25662{
25663 wpt_uint8 featSupported = 0;
25664 if (gpFwWlanFeatCaps != NULL)
25665 {
25666 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
25667 }
25668 else
25669 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025671 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025672 }
25673 return featSupported;
25674}
Mohit Khanna4a70d262012-09-11 16:30:12 -070025675
25676#ifdef WLAN_FEATURE_11AC
25677WDI_Status
25678WDI_ProcessUpdateVHTOpModeReq
25679(
25680 WDI_ControlBlockType* pWDICtx,
25681 WDI_EventInfoType* pEventData
25682)
25683{
25684 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
25685 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25686 wpt_uint8* pSendBuffer = NULL;
25687 wpt_uint16 usDataOffset = 0;
25688 wpt_uint16 usSendSize = 0;
25689
25690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25691
25692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025693 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025694
25695 /*-------------------------------------------------------------------------
25696 Sanity check
25697 -------------------------------------------------------------------------*/
25698 if (( NULL == pEventData ) ||
25699 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
25700 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
25701 {
25702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025703 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025704 WDI_ASSERT(0);
25705 return WDI_STATUS_E_FAILURE;
25706 }
25707
25708 /*-----------------------------------------------------------------------
25709 Get message buffer
25710 -----------------------------------------------------------------------*/
25711 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
25712 sizeof(WDI_UpdateVHTOpMode),
25713 &pSendBuffer, &usDataOffset, &usSendSize))||
25714 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
25715 {
25716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25717 "Unable to get send buffer in update vht opMode req");
25718 WDI_ASSERT(0);
25719 return WDI_STATUS_E_FAILURE;
25720 }
25721
25722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25723 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
25724
25725 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
25726 sizeof(WDI_UpdateVHTOpMode));
25727
25728 /*-------------------------------------------------------------------------
25729 Send Start Request to HAL
25730 -------------------------------------------------------------------------*/
25731 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25732 wdiVHTOpModeCb,
25733 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
25734
25735}
25736
25737WDI_Status
25738WDI_UpdateVHTOpModeReq
25739(
25740 WDI_UpdateVHTOpMode *pData,
25741 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
25742 void* pUserData
25743)
25744{
25745 WDI_EventInfoType wdiEventData;
25746
25747 /*------------------------------------------------------------------------
25748 Sanity Check
25749 ------------------------------------------------------------------------*/
25750 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25751 {
25752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25753 "WDI API call before module is initialized - Fail request");
25754
25755 return WDI_STATUS_E_NOT_ALLOWED;
25756 }
25757
25758 /*------------------------------------------------------------------------
25759 Fill in Event data and post to the Main FSM
25760 ------------------------------------------------------------------------*/
25761 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
25762 wdiEventData.pEventData = pData;
25763 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
25764 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
25765 wdiEventData.pUserData = pUserData;
25766
25767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25768 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
25769
25770 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25771
25772}
25773#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025774
25775/**
25776 @brief WDI_TransportChannelDebug -
25777 Display DXE Channel debugging information
25778 User may request to display DXE channel snapshot
25779 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025780
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080025781 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025782 @param enableStallDetect : Enable stall detect feature
25783 This feature will take effect to data performance
25784 Not integrate till fully verification
25785 @see
25786 @return none
25787*/
25788void WDI_TransportChannelDebug
25789(
25790 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025791 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025792)
25793{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025794 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025795 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070025796}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025797/**
25798 @brief WDI_SsrTimerCB
25799 Callback function for SSR timer, if this is called then the graceful
25800 shutdown for Riva did not happen.
25801
25802 @param pUserData : user data to timer
25803
25804 @see
25805 @return none
25806*/
25807void
25808WDI_SsrTimerCB
25809(
25810 void *pUserData
25811)
25812{
25813 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
25814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25815
25816 if (NULL == pWDICtx )
25817 {
25818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025819 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025820 WDI_ASSERT(0);
25821 return;
25822 }
25823 wpalRivaSubystemRestart();
25824
25825 return;
25826
25827}/*WDI_SsrTimerCB*/