blob: 2c82099225e40f1b51f2baa53e71144c4a15af9a [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*/
358};
359
360
Jeff Johnsone7245742012-09-05 17:12:55 -0700361/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700362 DAL Request Processing Array - the functions in this table will only be
363 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700364 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700365 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700366WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700367{
368 /*INIT*/
369 WDI_ProcessStartRsp, /* WDI_START_RESP */
370 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
371 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
372
373 /*SCAN*/
374 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
375 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
376 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
377 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
378
379 /* ASSOCIATION*/
380 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
381 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
382 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
383 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
384 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
385
386 /* Security */
387 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
388 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
389 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
390 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
391
392 /* QoS and BA APIs */
393 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
394 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
395 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
396 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
397 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
398
399 /* Miscellaneous Control APIs */
400 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
401 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
402 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
403 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
404 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
405
406 /* BA APIs*/
407 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
408 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700409
Jeff Johnson295189b2012-06-20 16:38:30 -0700410 /* IBSS APIs*/
411 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
412 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
413
414 /*Soft AP APIs*/
415 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
416 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
417 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
418 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
419
420 /* PowerSave APIs */
421 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
422 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
423 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
424 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
425 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
426 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
427 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
428 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
429 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
430 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
431 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
432 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
433 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
434 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
435 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
436 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
437 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
438 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700439
Jeff Johnson295189b2012-06-20 16:38:30 -0700440
441 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
442
443 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
444 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
445#ifdef WLAN_FEATURE_VOWIFI_11R
446 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
447#else
448 NULL,
449#endif /* WLAN_FEATURE_VOWIFI_11R */
450 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
451 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700452#ifdef FEATURE_OEM_DATA_SUPPORT
453 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
454#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700455 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700456#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700457 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
458
459#ifdef WLAN_FEATURE_P2P
460 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
461#else
462 NULL,
463#endif
464
465#ifdef ANI_MANF_DIAG
466 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
467#else
468 NULL,
469#endif /* ANI_MANF_DIAG */
470
Jeff Johnsone7245742012-09-05 17:12:55 -0700471 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
472
Jeff Johnson295189b2012-06-20 16:38:30 -0700473#ifdef FEATURE_WLAN_SCAN_PNO
474 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
475 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
476 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
477#else
478 NULL,
479 NULL,
480 NULL,
481#endif // FEATURE_WLAN_SCAN_PNO
482
483 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
484
485 /*---------------------------------------------------------------------
486 Indications
487 ---------------------------------------------------------------------*/
488#ifdef WLAN_FEATURE_PACKET_FILTERING
489 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700490 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700491 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700492 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700493 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700494 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700495 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700496 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700497#else
498 NULL,
499 NULL,
500 NULL,
501 NULL,
502#endif // WLAN_FEATURE_PACKET_FILTERING
503
504 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
505 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
506
507 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
508#ifdef FEATURE_WLAN_CCX
509 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
510#else
511 NULL,
512#endif
513
514#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700515 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
516 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700517#else
518 NULL,
519 NULL,
520#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700521 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
522 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700523#ifdef WLAN_FEATURE_11AC
524 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
525#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700526
527 /*---------------------------------------------------------------------
528 Indications
529 ---------------------------------------------------------------------*/
530 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
531 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
532 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
533 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
534 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
535 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
536
537 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
538
539 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
540
541#ifdef WLAN_FEATURE_P2P
542 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
543#else
544 NULL,
545#endif
546
547#ifdef FEATURE_WLAN_SCAN_PNO
548 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
549#else
550 NULL,
551#endif // FEATURE_WLAN_SCAN_PNO
552
553#ifdef WLAN_WAKEUP_EVENTS
554 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
555#else // WLAN_WAKEUP_EVENTS
556 NULL,
557#endif // WLAN_WAKEUP_EVENTS
558
559 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800560
561#ifdef WLAN_FEATURE_P2P
562 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
563#else
564 NULL,
565#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700566};
567
568
Jeff Johnsone7245742012-09-05 17:12:55 -0700569/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700570 WLAN DAL Global Control Block
571 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700572WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700573static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
574
Jeff Johnsone7245742012-09-05 17:12:55 -0700575const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700576
577/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700578WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700579void* WDI_GET_PAL_CTX( void )
580{
Jeff Johnsone7245742012-09-05 17:12:55 -0700581 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700582}/*WDI_GET_PAL_CTX*/
583
Jeff Johnsone7245742012-09-05 17:12:55 -0700584/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700585 Helper inline converters
586 ============================================================================*/
587/*Convert WDI driver type into HAL driver type*/
588WPT_STATIC WPT_INLINE WDI_Status
589WDI_HAL_2_WDI_STATUS
590(
591 eHalStatus halStatus
592);
593
594/*Convert WDI request type into HAL request type*/
595WPT_STATIC WPT_INLINE tHalHostMsgType
596WDI_2_HAL_REQ_TYPE
597(
598 WDI_RequestEnumType wdiReqType
599);
600
601/*Convert WDI response type into HAL response type*/
602WPT_STATIC WPT_INLINE WDI_ResponseEnumType
603HAL_2_WDI_RSP_TYPE
604(
605 tHalHostMsgType halMsg
606);
607
608/*Convert WDI driver type into HAL driver type*/
609WPT_STATIC WPT_INLINE tDriverType
610WDI_2_HAL_DRV_TYPE
611(
612 WDI_DriverType wdiDriverType
613);
614
615/*Convert WDI stop reason into HAL stop reason*/
616WPT_STATIC WPT_INLINE tHalStopType
617WDI_2_HAL_STOP_REASON
618(
619 WDI_StopType wdiStopType
620);
621
622/*Convert WDI scan mode type into HAL scan mode type*/
623WPT_STATIC WPT_INLINE eHalSysMode
624WDI_2_HAL_SCAN_MODE
625(
626 WDI_ScanMode wdiScanMode
627);
628
629/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700630WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700631WDI_2_HAL_SEC_CH_OFFSET
632(
633 WDI_HTSecondaryChannelOffset wdiSecChOffset
634);
635
636/*Convert WDI BSS type into HAL BSS type*/
637WPT_STATIC WPT_INLINE tSirBssType
638WDI_2_HAL_BSS_TYPE
639(
640 WDI_BssType wdiBSSType
641);
642
643/*Convert WDI NW type into HAL NW type*/
644WPT_STATIC WPT_INLINE tSirNwType
645WDI_2_HAL_NW_TYPE
646(
647 WDI_NwType wdiNWType
648);
649
650/*Convert WDI chanel bonding type into HAL cb type*/
651WPT_STATIC WPT_INLINE ePhyChanBondState
652WDI_2_HAL_CB_STATE
653(
654 WDI_PhyChanBondState wdiCbState
655);
656
657/*Convert WDI chanel bonding type into HAL cb type*/
658WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
659WDI_2_HAL_HT_OPER_MODE
660(
661 WDI_HTOperatingMode wdiHTOperMode
662);
663
664/*Convert WDI mimo PS type into HAL mimo PS type*/
665WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
666WDI_2_HAL_MIMO_PS
667(
668 WDI_HTMIMOPowerSaveState wdiHTOperMode
669);
670
671/*Convert WDI ENC type into HAL ENC type*/
672WPT_STATIC WPT_INLINE tAniEdType
673WDI_2_HAL_ENC_TYPE
674(
675 WDI_EncryptType wdiEncType
676);
677
678/*Convert WDI WEP type into HAL WEP type*/
679WPT_STATIC WPT_INLINE tAniWepType
680WDI_2_HAL_WEP_TYPE
681(
682 WDI_WepType wdiWEPType
683);
684
685/*Convert WDI Link State into HAL Link State*/
686WPT_STATIC WPT_INLINE tSirLinkState
687WDI_2_HAL_LINK_STATE
688(
689 WDI_LinkStateType wdiLinkState
690);
691
Jeff Johnsone7245742012-09-05 17:12:55 -0700692/*Translate a STA Context from WDI into HAL*/
693WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700694void
695WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700696(
Jeff Johnson295189b2012-06-20 16:38:30 -0700697 tConfigStaParams* phalConfigSta,
698 WDI_ConfigStaReqInfoType* pwdiConfigSta
699);
Jeff Johnsone7245742012-09-05 17:12:55 -0700700
701/*Translate a Rate set info from WDI into HAL*/
702WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700703WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700704(
Jeff Johnson295189b2012-06-20 16:38:30 -0700705 tSirMacRateSet* pHalRateSet,
706 WDI_RateSet* pwdiRateSet
707);
708
709/*Translate an EDCA Parameter Record from WDI into HAL*/
710WPT_STATIC WPT_INLINE void
711WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700712(
Jeff Johnson295189b2012-06-20 16:38:30 -0700713 tSirMacEdcaParamRecord* phalEdcaParam,
714 WDI_EdcaParamRecord* pWDIEdcaParam
715);
716
717/*Copy a management frame header from WDI fmt into HAL fmt*/
718WPT_STATIC WPT_INLINE void
719WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
720(
721 tSirMacMgmtHdr* pmacMgmtHdr,
722 WDI_MacMgmtHdr* pwdiMacMgmtHdr
723);
724
725/*Copy config bss parameters from WDI fmt into HAL fmt*/
726WPT_STATIC WPT_INLINE void
727WDI_CopyWDIConfigBSSToHALConfigBSS
728(
729 tConfigBssParams* phalConfigBSS,
730 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
731);
732
Jeff Johnsone7245742012-09-05 17:12:55 -0700733/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700734 pointed to by user data */
735WPT_STATIC WPT_INLINE void
736WDI_ExtractRequestCBFromEvent
737(
738 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700739 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700740 void** ppUserData
741);
742
743wpt_uint8
744WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700745(
Jeff Johnson295189b2012-06-20 16:38:30 -0700746 WDI_ControlBlockType* pWDICtx,
747 WDI_BSSSessionType** ppSession
748);
749
750void
751WDI_AddBcastSTAtoSTATable
752(
753 WDI_ControlBlockType* pWDICtx,
754 WDI_AddStaParams * staParams,
755 wpt_uint16 usBcastStaIdx
756);
757
758WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700759(
Jeff Johnson295189b2012-06-20 16:38:30 -0700760 WDI_ControlBlockType* pWDICtx,
761 WDI_EventInfoType* pEventData
762);
763
764void
765WDI_SetPowerStateCb
766(
767 wpt_status status,
768 unsigned int dxePhyAddr,
769 void *pContext
770);
771
772#define CASE_RETURN_STRING( str ) \
773 case ( ( str ) ): return( #str ); break \
774
775/**
776 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700777
778 @param wdiReqMsgId: WDI Message request Id
779
780 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700781 @return Result of the function call
782*/
783static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
784{
785 switch (wdiReqMsgId)
786 {
787 CASE_RETURN_STRING( WDI_START_REQ );
788 CASE_RETURN_STRING( WDI_STOP_REQ );
789 CASE_RETURN_STRING( WDI_CLOSE_REQ );
790 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
791 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
792 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
793 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
794 CASE_RETURN_STRING( WDI_JOIN_REQ );
795 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
796 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
797 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
798 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
799 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
800 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
801 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
802 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
803 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
804 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
805 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
806 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
807 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
808 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
809 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
810 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
811 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
812 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
813 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
814 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
815 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
816 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
817 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
818 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
819 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
820 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
821 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
822 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
823 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
824 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
825 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
826 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
827 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
828 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
829 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
830 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
831 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
832 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
833 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
834 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
835 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
836 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
837 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
838 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
839 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
840 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
841 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
842 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
843 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
844 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
845 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
846 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700847 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700848 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
849 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
850 #ifdef FEATURE_WLAN_SCAN_PNO
851 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
852 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
853 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
854 #endif
855 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
856 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
857 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
858 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
859 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
860 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
861 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
862 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
863 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
864 default:
865 return "Unknown WDI MessageId";
866 }
867}
868
869
870
871/**
872 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700873
874 @param wdiRespMsgId: WDI Message response Id
875
876 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700877 @return Result of the function call
878*/
879static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
880{
881 switch (wdiRespMsgId)
882 {
883 CASE_RETURN_STRING( WDI_START_RESP );
884 CASE_RETURN_STRING( WDI_STOP_RESP );
885 CASE_RETURN_STRING( WDI_CLOSE_RESP );
886 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
887 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
888 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
889 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
890 CASE_RETURN_STRING( WDI_JOIN_RESP );
891 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
892 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
893 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
894 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
895 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
896 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
897 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
898 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
899 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
900 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
901 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
902 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
903 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
904 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
905 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
906 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
907 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
908 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
909 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
910 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
911 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
912 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
913 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
914 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
915 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
916 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
917 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
918 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
919 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
920 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
921 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
922 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
923 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
924 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
925 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
926 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
927 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
928 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
929 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
930 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
931 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
932 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
933 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
934 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
935 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
936 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
937 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
938 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
939 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
940 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
941 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
942 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700943 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700944 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
945 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
946 #ifdef FEATURE_WLAN_SCAN_PNO
947 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
948 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
949 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
950 #endif
951 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
952 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
953 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
954 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
955 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
956 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
957 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
958 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
959 default:
960 return "Unknown WDI MessageId";
961 }
962}
963
964/**
965 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700966
967 @param halStatusId: HAL status Id
968
969 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700970 @return Result of the function call
971*/
972static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
973{
974 switch (halStatusId)
975 {
976 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
977 CASE_RETURN_STRING( PAL_STATUS_INVAL );
978 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
979 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
980 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
981 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
982 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
983 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
984 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
985 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
986 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
987 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
988 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
989 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
990 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
991 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
992 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
993 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
994 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
995 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
996 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
997 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
998 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
999 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1000 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1001 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1002 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1003 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1004 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1005 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1006 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1007 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1008 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1009 default:
1010 return "Unknown HAL status";
1011 }
1012}
1013
Jeff Johnsone7245742012-09-05 17:12:55 -07001014/*========================================================================
1015
Jeff Johnson295189b2012-06-20 16:38:30 -07001016 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001017
Jeff Johnson295189b2012-06-20 16:38:30 -07001018==========================================================================*/
1019
1020/**
1021 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001022
Jeff Johnson295189b2012-06-20 16:38:30 -07001023 DAL will allocate all the resources it needs. It will open PAL, it will also
1024 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001025 DXE/SMD or any other drivers that they need.
1026
Jeff Johnson295189b2012-06-20 16:38:30 -07001027 @param pOSContext: pointer to the OS context provided by the UMAC
1028 will be passed on to PAL on Open
1029 ppWDIGlobalCtx: output pointer of Global Context
1030 pWdiDevCapability: output pointer of device capability
1031
1032 @return Result of the function call
1033*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001034WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001035WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001036(
Jeff Johnson295189b2012-06-20 16:38:30 -07001037 void* pOSContext,
1038 void** ppWDIGlobalCtx,
1039 WDI_DeviceCapabilityType* pWdiDevCapability,
1040 unsigned int driverType
1041)
1042{
1043 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001044 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001045 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001046 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1048
1049 /*---------------------------------------------------------------------
1050 Sanity check
1051 ---------------------------------------------------------------------*/
1052 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1053 {
1054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1055 "Invalid input parameters in WDI_Init");
1056
Jeff Johnsone7245742012-09-05 17:12:55 -07001057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001058 }
1059
1060 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001061 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001062 ---------------------------------------------------------------------*/
1063 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1064 {
1065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1066 "WDI module already initialized - return");
1067
Jeff Johnsone7245742012-09-05 17:12:55 -07001068 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001069 }
1070
1071 /*Module is now initialized - this flag is to ensure the fact that multiple
1072 init will not happen on WDI
1073 !! - potential race does exist because read and set are not atomic,
1074 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001075 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001076
1077 /*Setup the control block */
1078 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001079 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001080
1081 /*Setup the STA Table*/
1082 wdiStatus = WDI_STATableInit(&gWDICb);
1083 if ( WDI_STATUS_SUCCESS != wdiStatus )
1084 {
1085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1086 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001087 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001088 goto fail_STATableInit;
1089 }
1090
1091 /*------------------------------------------------------------------------
1092 Open the PAL
1093 ------------------------------------------------------------------------*/
1094 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1095 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1096 {
1097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1098 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001099 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001100 goto fail_wpalOpen;
1101 }
1102
1103 /*Initialize main synchro mutex - it will be used to ensure integrity of
1104 the main WDI Control Block*/
1105 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1106 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1107 {
1108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1109 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001110 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001111 goto fail_mutex;
1112 }
1113
1114 /*Initialize the response timer - it will be used to time all messages
1115 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001116 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1117 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001118 &gWDICb);
1119 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1120 {
1121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1122 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001123 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001124 goto fail_timer;
1125 }
1126
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001127 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1128 WDI_SsrTimerCB,
1129 &gWDICb);
1130 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1131 {
1132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1133 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001134 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001135 goto fail_timer2;
1136 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001137 /* Initialize the WDI Pending Request Queue*/
1138 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1139 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1140 {
1141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1142 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001143 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001144 goto fail_pend_queue;
1145 }
1146
1147 /*Init WDI Pending Assoc Id Queue */
1148 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1149 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1150 {
1151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1152 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001153 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001154 goto fail_assoc_queue;
1155 }
1156
1157 /*Initialize the BSS sessions pending Queue */
1158 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1159 {
1160 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1161 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1162 {
1163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1164 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001165 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001166 goto fail_bss_queue;
1167 }
1168 }
1169
1170 /*Indicate the control block is sufficiently initialized for callbacks*/
1171 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1172
1173 /*------------------------------------------------------------------------
1174 Initialize the Data Path Utility Module
1175 ------------------------------------------------------------------------*/
1176 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1177 if ( WDI_STATUS_SUCCESS != wdiStatus )
1178 {
1179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1180 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001181 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001182 goto fail_dp_util_init;
1183 }
1184
1185 /* Init Set power state event */
1186 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001187 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001188 {
1189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1190 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001191 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001192 goto fail_power_event;
1193 }
1194
1195 /* Init WCTS action event */
1196 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001197 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001198 {
1199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1200 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001201 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001202 goto fail_wcts_event;
1203 }
1204
1205 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001206 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001207 ------------------------------------------------------------------------*/
1208 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1209 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001210 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001211 wctsCBs.wctsRxMsgCBData = &gWDICb;
1212
Jeff Johnsone7245742012-09-05 17:12:55 -07001213 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001214 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001215 WDI_CT_CHANNEL_SIZE,
1216 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001217
1218 if ( NULL == gWDICb.wctsHandle )
1219 {
1220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001221 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001222 goto fail_wcts_open;
1223 }
1224
1225 gWDICb.driverMode = (tDriverType)driverType;
1226 /* FTM mode not need to open Transport Driver */
1227 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001228 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001229 /*------------------------------------------------------------------------
1230 Open the Data Transport
1231 ------------------------------------------------------------------------*/
1232 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1233 {
1234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001235 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001236 goto fail_wdts_open;
1237 }
1238 }
1239
1240 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001241 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001242
1243 /*Send the context as a ptr to the global WDI Control Block*/
1244 *ppWDIGlobalCtx = &gWDICb;
1245
1246 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001247 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001248 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1249 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1250 return WDI_STATUS_SUCCESS;
1251
1252 /* ERROR handlers
1253 Undo everything that completed successfully */
1254
1255 fail_wdts_open:
1256 {
1257 wpt_status eventStatus;
1258
1259 /* Closing WCTS in this scenario is tricky since it has to close
1260 the SMD channel and then we get notified asynchronously when
1261 the channel has been closed. So we take some of the logic from
1262 the "normal" close procedure in WDI_Close()
1263 */
1264
1265 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001266 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001267 {
1268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001269 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001270 }
1271
1272 WCTS_CloseTransport(gWDICb.wctsHandle);
1273
1274 /* Wait for WCTS to close the control transport. If we were able
1275 to reset the event flag, then we'll wait for the event,
1276 otherwise we'll wait for a maximum amount of time required for
1277 the channel to be closed */
1278 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1279 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001280 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001281 WDI_WCTS_ACTION_TIMEOUT);
1282 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1283 {
1284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001285 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001286 }
1287 }
1288 else
1289 {
1290 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1291 }
1292 }
1293 fail_wcts_open:
1294 wpalEventDelete(&gWDICb.wctsActionEvent);
1295 fail_wcts_event:
1296 wpalEventDelete(&gWDICb.setPowerStateEvent);
1297 fail_power_event:
1298 WDI_DP_UtilsExit(&gWDICb);
1299 fail_dp_util_init:
1300 gWDICb.magic = 0;
1301 fail_bss_queue:
1302 /* entries 0 thru i-1 were successfully initialized */
1303 while (0 < i)
1304 {
1305 i--;
1306 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1307 }
1308 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1309 fail_assoc_queue:
1310 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1311 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001312 wpalTimerDelete(&gWDICb.ssrTimer);
1313 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001314 wpalTimerDelete(&gWDICb.wptResponseTimer);
1315 fail_timer:
1316 wpalMutexDelete(&gWDICb.wptMutex);
1317 fail_mutex:
1318 wpalClose(gWDICb.pPALContext);
1319 fail_wpalOpen:
1320 WDI_STATableClose(&gWDICb);
1321 fail_STATableInit:
1322 gWDIInitialized = eWLAN_PAL_FALSE;
1323
1324 return WDI_STATUS_E_FAILURE;
1325
1326}/*WDI_Init*/;
1327
1328/**
1329 @brief WDI_Start will be called when the upper MAC is ready to
1330 commence operation with the WLAN Device. Upon the call
1331 of this API the WLAN DAL will pack and send a HAL Start
1332 message to the lower RIVA sub-system if the SMD channel
1333 has been fully opened and the RIVA subsystem is up.
1334
1335 If the RIVA sub-system is not yet up and running DAL
1336 will queue the request for Open and will wait for the
1337 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001338 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001339
1340 WDI_Init must have been called.
1341
Jeff Johnsone7245742012-09-05 17:12:55 -07001342 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001343 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001344
Jeff Johnson295189b2012-06-20 16:38:30 -07001345 wdiStartRspCb: callback for passing back the response of
1346 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001347
Jeff Johnson295189b2012-06-20 16:38:30 -07001348 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001349 callback
1350
Jeff Johnson295189b2012-06-20 16:38:30 -07001351 @see WDI_Start
1352 @return Result of the function call
1353*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001354WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001355WDI_Start
1356(
1357 WDI_StartReqParamsType* pwdiStartParams,
1358 WDI_StartRspCb wdiStartRspCb,
1359 void* pUserData
1360)
1361{
1362 WDI_EventInfoType wdiEventData;
1363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1364
1365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001366 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001367 ------------------------------------------------------------------------*/
1368 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1369 {
1370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1371 "WDI API call before module is initialized - Fail request");
1372
Jeff Johnsone7245742012-09-05 17:12:55 -07001373 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001374 }
1375
1376 /*------------------------------------------------------------------------
1377 Fill in Event data and post to the Main FSM
1378 ------------------------------------------------------------------------*/
1379 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001380 wdiEventData.pEventData = pwdiStartParams;
1381 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1382 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001383 wdiEventData.pUserData = pUserData;
1384
1385 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1386
1387}/*WDI_Start*/
1388
1389/**
1390 @brief WDI_Stop will be called when the upper MAC is ready to
1391 stop any operation with the WLAN Device. Upon the call
1392 of this API the WLAN DAL will pack and send a HAL Stop
1393 message to the lower RIVA sub-system if the DAL Core is
1394 in started state.
1395
1396 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001397
1398 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001399
1400 WDI_Start must have been called.
1401
Jeff Johnsone7245742012-09-05 17:12:55 -07001402 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001403 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001404
Jeff Johnson295189b2012-06-20 16:38:30 -07001405 wdiStopRspCb: callback for passing back the response of
1406 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001407
Jeff Johnson295189b2012-06-20 16:38:30 -07001408 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001409 callback
1410
Jeff Johnson295189b2012-06-20 16:38:30 -07001411 @see WDI_Start
1412 @return Result of the function call
1413*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001414WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001415WDI_Stop
1416(
1417 WDI_StopReqParamsType* pwdiStopParams,
1418 WDI_StopRspCb wdiStopRspCb,
1419 void* pUserData
1420)
1421{
1422 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001423 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1425
1426 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001428 ------------------------------------------------------------------------*/
1429 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1430 {
1431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1432 "WDI API call before module is initialized - Fail request");
1433
Jeff Johnsone7245742012-09-05 17:12:55 -07001434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001435 }
1436
Jeff Johnson43971f52012-07-17 12:26:56 -07001437 /*Access to the global state must be locked before cleaning */
1438 wpalMutexAcquire(&pWDICtx->wptMutex);
1439
1440 /*Clear all pending request*/
1441 WDI_ClearPendingRequests(pWDICtx);
1442
1443 /*We have completed cleaning unlock now*/
1444 wpalMutexRelease(&pWDICtx->wptMutex);
1445
Jeff Johnson295189b2012-06-20 16:38:30 -07001446 /* Free the global variables */
1447 wpalMemoryFree(gpHostWlanFeatCaps);
1448 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001449 gpHostWlanFeatCaps = NULL;
1450 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001451
1452 /*------------------------------------------------------------------------
1453 Fill in Event data and post to the Main FSM
1454 ------------------------------------------------------------------------*/
1455 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001456 wdiEventData.pEventData = pwdiStopParams;
1457 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1458 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001459 wdiEventData.pUserData = pUserData;
1460
1461 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1462
1463}/*WDI_Stop*/
1464
1465
1466
1467/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001468 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001469 needs to interact with DAL. DAL will free its control
1470 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001471
1472 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001473
1474 WDI_Stop must have been called.
1475
1476 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001477
Jeff Johnson295189b2012-06-20 16:38:30 -07001478 @see WDI_Stop
1479 @return Result of the function call
1480*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001481WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001482WDI_Close
1483(
1484 void
1485)
1486{
1487 wpt_uint8 i;
1488 WDI_EventInfoType wdiEventData;
1489 wpt_status wptStatus;
1490 wpt_status eventStatus;
1491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1492
1493 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001494 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001495 ------------------------------------------------------------------------*/
1496 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1497 {
1498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1499 "WDI API call before module is initialized - Fail request");
1500
Jeff Johnsone7245742012-09-05 17:12:55 -07001501 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001502 }
1503
1504 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1505 (the control transport will be closed by the FSM and we'll want
1506 to wait until that completes)*/
1507 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001508 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001509 {
1510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001511 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001512 /* fall through and try to finish closing via the FSM */
1513 }
1514
1515 /*------------------------------------------------------------------------
1516 Fill in Event data and post to the Main FSM
1517 ------------------------------------------------------------------------*/
1518 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001519 wdiEventData.pEventData = NULL;
1520 wdiEventData.uEventDataSize = 0;
1521 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001522 wdiEventData.pUserData = NULL;
1523
1524 gWDIInitialized = eWLAN_PAL_FALSE;
1525
1526 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1527
1528 /*Wait for WCTS to close the control transport
1529 (but only if we were able to reset the event flag*/
1530 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1531 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001532 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001533 WDI_WCTS_ACTION_TIMEOUT);
1534 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1535 {
1536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001537 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001538 }
1539 }
1540
1541 /* Destroy the WCTS action event */
1542 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1543 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1544 {
1545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1546 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001547 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001548 }
1549
1550 /* Destroy the Set Power State event */
1551 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1552 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1553 {
1554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1555 "WDI Close failed to destroy an event");
1556
Jeff Johnsone7245742012-09-05 17:12:55 -07001557 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001558 }
1559
1560 /*------------------------------------------------------------------------
1561 Closes the Data Path Utility Module
1562 ------------------------------------------------------------------------*/
1563 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1564 {
1565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1566 "WDI Init failed to close the DP Util Module");
1567
Jeff Johnsone7245742012-09-05 17:12:55 -07001568 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001569 }
1570
1571 /*destroy the BSS sessions pending Queue */
1572 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1573 {
1574 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1575 }
1576
1577 /* destroy the WDI Pending Assoc Id Request Queue*/
1578 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1579
1580 /* destroy the WDI Pending Request Queue*/
1581 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001582
Jeff Johnson295189b2012-06-20 16:38:30 -07001583 /*destroy the response timer */
1584 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1585
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001586 /*destroy the SSR timer */
1587 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1588
Jeff Johnson295189b2012-06-20 16:38:30 -07001589 /*invalidate the main synchro mutex */
1590 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1591 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1592 {
1593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1594 "Failed to delete mutex %d", wptStatus);
1595 WDI_ASSERT(0);
1596 }
1597
1598 /*Clear control block. note that this will clear the "magic"
1599 which will inhibit all asynchronous callbacks*/
1600 WDI_CleanCB(&gWDICb);
1601
1602 return wptStatus;
1603
1604}/*WDI_Close*/
1605
1606/**
1607 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1608 This will do most of the WDI stop & close
1609 operations without doing any handshake with Riva
1610
1611 This will also make sure that the control transport
1612 will NOT be closed.
1613
1614 This request will not be queued.
1615
1616
1617 WDI_Start must have been called.
1618
1619 @param closeTransport: Close control channel if this is set
1620
1621 @return Result of the function call
1622*/
1623WDI_Status
1624WDI_Shutdown
1625(
1626 wpt_boolean closeTransport
1627)
1628{
1629 WDI_EventInfoType wdiEventData;
1630 wpt_status wptStatus;
1631 int i = 0;
1632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1633
1634 /*------------------------------------------------------------------------
1635 Sanity Check
1636 ------------------------------------------------------------------------*/
1637 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1638 {
1639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1640 "WDI API call before module is initialized - Fail request");
1641
1642 return WDI_STATUS_E_NOT_ALLOWED;
1643 }
1644
1645 /*------------------------------------------------------------------------
1646 Fill in Event data and post to the Main FSM
1647 ------------------------------------------------------------------------*/
1648 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1649 wdiEventData.pEventData = NULL;
1650 wdiEventData.uEventDataSize = 0;
1651
1652 /* Shutdown will not be queued, if the state is busy timer will be
1653 * stopped & this message will be processed.*/
1654 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1655 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1656 {
1657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001658 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 }
1660 /* Destroy the Set Power State event */
1661 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1662 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1663 {
1664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1665 "WDI Close failed to destroy an event");
1666
1667 WDI_ASSERT(0);
1668 }
1669 /*------------------------------------------------------------------------
1670 Closes the Data Path Utility Module
1671 ------------------------------------------------------------------------*/
1672 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1673 {
1674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1675 "WDI Init failed to close the DP Util Module");
1676
1677 WDI_ASSERT(0);
1678 }
1679 if ( closeTransport )
1680 {
1681 /* Close control transport, called from module unload */
1682 WCTS_CloseTransport(gWDICb.wctsHandle);
1683 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001684 else
1685 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001686 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001687 the pending messages in the transport queue */
1688 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1689 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001690 /*destroy the BSS sessions pending Queue */
1691 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1692 {
1693 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1694 }
1695
1696 /* destroy the WDI Pending Assoc Id Request Queue*/
1697 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1698 /* destroy the WDI Pending Request Queue*/
1699 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1700 /*destroy the response timer */
1701 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001702 /*destroy the SSR timer */
1703 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001704
1705 /*invalidate the main synchro mutex */
1706 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1707 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1708 {
1709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001710 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001711 WDI_ASSERT(0);
1712 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001713 /* Free the global variables */
1714 wpalMemoryFree(gpHostWlanFeatCaps);
1715 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001716 gpHostWlanFeatCaps = NULL;
1717 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001718 /*Clear control block. note that this will clear the "magic"
1719 which will inhibit all asynchronous callbacks*/
1720 WDI_CleanCB(&gWDICb);
1721 return wptStatus;
1722
1723}/*WDI_Shutdown*/
1724
1725
Jeff Johnsone7245742012-09-05 17:12:55 -07001726/*========================================================================
1727
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001729
Jeff Johnson295189b2012-06-20 16:38:30 -07001730==========================================================================*/
1731
1732/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001733 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001734 the WLAN Device to get ready for a scan procedure. Upon
1735 the call of this API the WLAN DAL will pack and send a
1736 HAL Init Scan request message to the lower RIVA
1737 sub-system if DAL is in state STARTED.
1738
1739 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001740 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001741
1742 WDI_Start must have been called.
1743
1744 @param wdiInitScanParams: the init scan parameters as specified
1745 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001746
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 wdiInitScanRspCb: callback for passing back the response
1748 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001749
Jeff Johnson295189b2012-06-20 16:38:30 -07001750 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001751 callback
1752
Jeff Johnson295189b2012-06-20 16:38:30 -07001753 @see WDI_Start
1754 @return Result of the function call
1755*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001756WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001757WDI_InitScanReq
1758(
1759 WDI_InitScanReqParamsType* pwdiInitScanParams,
1760 WDI_InitScanRspCb wdiInitScanRspCb,
1761 void* pUserData
1762)
1763{
1764 WDI_EventInfoType wdiEventData;
1765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1766
1767 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001768 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 ------------------------------------------------------------------------*/
1770 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1771 {
1772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1773 "WDI API call before module is initialized - Fail request");
1774
Jeff Johnsone7245742012-09-05 17:12:55 -07001775 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001776 }
1777
1778 /*------------------------------------------------------------------------
1779 Fill in Event data and post to the Main FSM
1780 ------------------------------------------------------------------------*/
1781 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001782 wdiEventData.pEventData = pwdiInitScanParams;
1783 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1784 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001785 wdiEventData.pUserData = pUserData;
1786
1787 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1788
1789}/*WDI_InitScanReq*/
1790
1791/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001792 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001793 wishes to change the Scan channel on the WLAN Device.
1794 Upon the call of this API the WLAN DAL will pack and
1795 send a HAL Start Scan request message to the lower RIVA
1796 sub-system if DAL is in state STARTED.
1797
1798 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001799 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001800
1801 WDI_InitScanReq must have been called.
1802
Jeff Johnsone7245742012-09-05 17:12:55 -07001803 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001804 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001805
Jeff Johnson295189b2012-06-20 16:38:30 -07001806 wdiStartScanRspCb: callback for passing back the
1807 response of the start scan operation received from the
1808 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001809
Jeff Johnson295189b2012-06-20 16:38:30 -07001810 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001811 callback
1812
Jeff Johnson295189b2012-06-20 16:38:30 -07001813 @see WDI_InitScanReq
1814 @return Result of the function call
1815*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001816WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001817WDI_StartScanReq
1818(
1819 WDI_StartScanReqParamsType* pwdiStartScanParams,
1820 WDI_StartScanRspCb wdiStartScanRspCb,
1821 void* pUserData
1822)
1823{
1824 WDI_EventInfoType wdiEventData;
1825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1826
1827 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001828 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001829 ------------------------------------------------------------------------*/
1830 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1831 {
1832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1833 "WDI API call before module is initialized - Fail request");
1834
Jeff Johnsone7245742012-09-05 17:12:55 -07001835 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001836 }
1837
1838 /*------------------------------------------------------------------------
1839 Fill in Event data and post to the Main FSM
1840 ------------------------------------------------------------------------*/
1841 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001842 wdiEventData.pEventData = pwdiStartScanParams;
1843 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1844 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001845 wdiEventData.pUserData = pUserData;
1846
1847 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1848
1849}/*WDI_StartScanReq*/
1850
1851
1852/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001853 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001854 wants to end scanning for a particular channel that it
1855 had set before by calling Scan Start on the WLAN Device.
1856 Upon the call of this API the WLAN DAL will pack and
1857 send a HAL End Scan request message to the lower RIVA
1858 sub-system if DAL is in state STARTED.
1859
1860 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001861 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001862
1863 WDI_StartScanReq must have been called.
1864
Jeff Johnsone7245742012-09-05 17:12:55 -07001865 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001866 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001867
Jeff Johnson295189b2012-06-20 16:38:30 -07001868 wdiEndScanRspCb: callback for passing back the response
1869 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001870
Jeff Johnson295189b2012-06-20 16:38:30 -07001871 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001872 callback
1873
Jeff Johnson295189b2012-06-20 16:38:30 -07001874 @see WDI_StartScanReq
1875 @return Result of the function call
1876*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001877WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001878WDI_EndScanReq
1879(
1880 WDI_EndScanReqParamsType* pwdiEndScanParams,
1881 WDI_EndScanRspCb wdiEndScanRspCb,
1882 void* pUserData
1883)
1884{
1885 WDI_EventInfoType wdiEventData;
1886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1887
1888 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001889 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001890 ------------------------------------------------------------------------*/
1891 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1892 {
1893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1894 "WDI API call before module is initialized - Fail request");
1895
Jeff Johnsone7245742012-09-05 17:12:55 -07001896 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001897 }
1898
1899 /*------------------------------------------------------------------------
1900 Fill in Event data and post to the Main FSM
1901 ------------------------------------------------------------------------*/
1902 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001903 wdiEventData.pEventData = pwdiEndScanParams;
1904 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1905 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001906 wdiEventData.pUserData = pUserData;
1907
1908 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1909
1910}/*WDI_EndScanReq*/
1911
1912
1913/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001914 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 completed the scan process on the WLAN Device. Upon the
1916 call of this API the WLAN DAL will pack and send a HAL
1917 Finish Scan Request request message to the lower RIVA
1918 sub-system if DAL is in state STARTED.
1919
1920 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001921 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001922
1923 WDI_InitScanReq must have been called.
1924
Jeff Johnsone7245742012-09-05 17:12:55 -07001925 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001926 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001927
Jeff Johnson295189b2012-06-20 16:38:30 -07001928 wdiFinishScanRspCb: callback for passing back the
1929 response of the finish scan operation received from the
1930 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001931
Jeff Johnson295189b2012-06-20 16:38:30 -07001932 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001933 callback
1934
Jeff Johnson295189b2012-06-20 16:38:30 -07001935 @see WDI_InitScanReq
1936 @return Result of the function call
1937*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001938WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001939WDI_FinishScanReq
1940(
1941 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1942 WDI_FinishScanRspCb wdiFinishScanRspCb,
1943 void* pUserData
1944)
1945{
1946 WDI_EventInfoType wdiEventData;
1947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1948
1949 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001950 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001951 ------------------------------------------------------------------------*/
1952 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1953 {
1954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1955 "WDI API call before module is initialized - Fail request");
1956
Jeff Johnsone7245742012-09-05 17:12:55 -07001957 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001958 }
1959
1960 /*------------------------------------------------------------------------
1961 Fill in Event data and post to the Main FSM
1962 ------------------------------------------------------------------------*/
1963 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001964 wdiEventData.pEventData = pwdiFinishScanParams;
1965 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1966 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001967 wdiEventData.pUserData = pUserData;
1968
1969 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1970
1971}/*WDI_FinishScanReq*/
1972
Jeff Johnsone7245742012-09-05 17:12:55 -07001973/*========================================================================
1974
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001976
Jeff Johnson295189b2012-06-20 16:38:30 -07001977==========================================================================*/
1978
1979/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001980 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001981 to start an association procedure to a BSS. Upon the
1982 call of this API the WLAN DAL will pack and send a HAL
1983 Join request message to the lower RIVA sub-system if
1984 DAL is in state STARTED.
1985
1986 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001987 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001988
1989 WDI_Start must have been called.
1990
Jeff Johnsone7245742012-09-05 17:12:55 -07001991 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001992 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001993
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 wdiJoinRspCb: callback for passing back the response of
1995 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001996
Jeff Johnson295189b2012-06-20 16:38:30 -07001997 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001998 callback
1999
Jeff Johnson295189b2012-06-20 16:38:30 -07002000 @see WDI_Start
2001 @return Result of the function call
2002*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002003WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002004WDI_JoinReq
2005(
2006 WDI_JoinReqParamsType* pwdiJoinParams,
2007 WDI_JoinRspCb wdiJoinRspCb,
2008 void* pUserData
2009)
2010{
2011 WDI_EventInfoType wdiEventData;
2012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2013
2014 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002015 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002016 ------------------------------------------------------------------------*/
2017 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2018 {
2019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2020 "WDI API call before module is initialized - Fail request");
2021
Jeff Johnsone7245742012-09-05 17:12:55 -07002022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002023 }
2024
2025 /*------------------------------------------------------------------------
2026 Fill in Event data and post to the Main FSM
2027 ------------------------------------------------------------------------*/
2028 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002029 wdiEventData.pEventData = pwdiJoinParams;
2030 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2031 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002032 wdiEventData.pUserData = pUserData;
2033
2034 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2035
2036}/*WDI_JoinReq*/
2037
2038/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002039 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002040 wishes to configure the newly acquired or in process of
2041 being acquired BSS to the HW . Upon the call of this API
2042 the WLAN DAL will pack and send a HAL Config BSS request
2043 message to the lower RIVA sub-system if DAL is in state
2044 STARTED.
2045
2046 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002047 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002048
2049 WDI_JoinReq must have been called.
2050
Jeff Johnsone7245742012-09-05 17:12:55 -07002051 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002052 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002053
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 wdiConfigBSSRspCb: callback for passing back the
2055 response of the config BSS operation received from the
2056 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002057
Jeff Johnson295189b2012-06-20 16:38:30 -07002058 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002059 callback
2060
Jeff Johnson295189b2012-06-20 16:38:30 -07002061 @see WDI_JoinReq
2062 @return Result of the function call
2063*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002064WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002065WDI_ConfigBSSReq
2066(
2067 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2068 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2069 void* pUserData
2070)
2071{
2072 WDI_EventInfoType wdiEventData;
2073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2074
2075 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002076 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002077 ------------------------------------------------------------------------*/
2078 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2079 {
2080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2081 "WDI API call before module is initialized - Fail request");
2082
Jeff Johnsone7245742012-09-05 17:12:55 -07002083 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002084 }
2085
2086 /*------------------------------------------------------------------------
2087 Fill in Event data and post to the Main FSM
2088 ------------------------------------------------------------------------*/
2089 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002090 wdiEventData.pEventData = pwdiConfigBSSParams;
2091 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2092 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002093 wdiEventData.pUserData = pUserData;
2094
2095 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2096
2097}/*WDI_ConfigBSSReq*/
2098
2099/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002100 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002101 disassociating from the BSS and wishes to notify HW.
2102 Upon the call of this API the WLAN DAL will pack and
2103 send a HAL Del BSS request message to the lower RIVA
2104 sub-system if DAL is in state STARTED.
2105
2106 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002107 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002108
2109 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2110
Jeff Johnsone7245742012-09-05 17:12:55 -07002111 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002112 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002113
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 wdiDelBSSRspCb: callback for passing back the response
2115 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002116
Jeff Johnson295189b2012-06-20 16:38:30 -07002117 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002118 callback
2119
2120 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002121 @return Result of the function call
2122*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002123WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002124WDI_DelBSSReq
2125(
2126 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2127 WDI_DelBSSRspCb wdiDelBSSRspCb,
2128 void* pUserData
2129)
2130{
2131 WDI_EventInfoType wdiEventData;
2132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2133
2134 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002135 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002136 ------------------------------------------------------------------------*/
2137 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2138 {
2139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2140 "WDI API call before module is initialized - Fail request");
2141
Jeff Johnsone7245742012-09-05 17:12:55 -07002142 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002143 }
2144
2145 /*------------------------------------------------------------------------
2146 Fill in Event data and post to the Main FSM
2147 ------------------------------------------------------------------------*/
2148 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002149 wdiEventData.pEventData = pwdiDelBSSParams;
2150 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2151 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002152 wdiEventData.pUserData = pUserData;
2153
2154 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2155
2156}/*WDI_DelBSSReq*/
2157
2158/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002159 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002160 associated to a BSS and wishes to configure HW for
2161 associated state. Upon the call of this API the WLAN DAL
2162 will pack and send a HAL Post Assoc request message to
2163 the lower RIVA sub-system if DAL is in state STARTED.
2164
2165 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002166 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002167
2168 WDI_JoinReq must have been called.
2169
2170 @param wdiPostAssocReqParams: the assoc parameters as specified
2171 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002172
Jeff Johnson295189b2012-06-20 16:38:30 -07002173 wdiPostAssocRspCb: callback for passing back the
2174 response of the post assoc operation received from the
2175 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002176
Jeff Johnson295189b2012-06-20 16:38:30 -07002177 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002178 callback
2179
Jeff Johnson295189b2012-06-20 16:38:30 -07002180 @see WDI_JoinReq
2181 @return Result of the function call
2182*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002183WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002184WDI_PostAssocReq
2185(
2186 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2187 WDI_PostAssocRspCb wdiPostAssocRspCb,
2188 void* pUserData
2189)
2190{
2191 WDI_EventInfoType wdiEventData;
2192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2193
2194 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002195 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002196 ------------------------------------------------------------------------*/
2197 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2198 {
2199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2200 "WDI API call before module is initialized - Fail request");
2201
Jeff Johnsone7245742012-09-05 17:12:55 -07002202 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002203 }
2204
2205 /*------------------------------------------------------------------------
2206 Fill in Event data and post to the Main FSM
2207 ------------------------------------------------------------------------*/
2208 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002209 wdiEventData.pEventData = pwdiPostAssocReqParams;
2210 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2211 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002212 wdiEventData.pUserData = pUserData;
2213
2214 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2215
2216}/*WDI_PostAssocReq*/
2217
2218/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002219 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002220 association with another STA has ended and the station
2221 must be deleted from HW. Upon the call of this API the
2222 WLAN DAL will pack and send a HAL Del STA request
2223 message to the lower RIVA sub-system if DAL is in state
2224 STARTED.
2225
2226 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002227 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002228
2229 WDI_PostAssocReq must have been called.
2230
Jeff Johnsone7245742012-09-05 17:12:55 -07002231 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002232 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002233
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 wdiDelSTARspCb: callback for passing back the response
2235 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002236
Jeff Johnson295189b2012-06-20 16:38:30 -07002237 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002238 callback
2239
Jeff Johnson295189b2012-06-20 16:38:30 -07002240 @see WDI_PostAssocReq
2241 @return Result of the function call
2242*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002243WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002244WDI_DelSTAReq
2245(
2246 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2247 WDI_DelSTARspCb wdiDelSTARspCb,
2248 void* pUserData
2249)
2250{
2251 WDI_EventInfoType wdiEventData;
2252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2253
2254 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002255 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 ------------------------------------------------------------------------*/
2257 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2258 {
2259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2260 "WDI API call before module is initialized - Fail request");
2261
Jeff Johnsone7245742012-09-05 17:12:55 -07002262 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002263 }
2264
2265 /*------------------------------------------------------------------------
2266 Fill in Event data and post to the Main FSM
2267 ------------------------------------------------------------------------*/
2268 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002269 wdiEventData.pEventData = pwdiDelSTAParams;
2270 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2271 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002272 wdiEventData.pUserData = pUserData;
2273
2274 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2275
2276}/*WDI_DelSTAReq*/
2277
Jeff Johnsone7245742012-09-05 17:12:55 -07002278/*========================================================================
2279
Jeff Johnson295189b2012-06-20 16:38:30 -07002280 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002281
Jeff Johnson295189b2012-06-20 16:38:30 -07002282==========================================================================*/
2283
2284/**
2285 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2286 install a BSS encryption key on the HW. Upon the call of this
2287 API the WLAN DAL will pack and send a Set BSS Key request
2288 message to the lower RIVA sub-system if DAL is in state
2289 STARTED.
2290
2291 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002292 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002293
2294 WDI_PostAssocReq must have been called.
2295
Jeff Johnsone7245742012-09-05 17:12:55 -07002296 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002297 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002298
Jeff Johnson295189b2012-06-20 16:38:30 -07002299 wdiSetBSSKeyRspCb: callback for passing back the
2300 response of the set BSS Key operation received from the
2301 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002302
Jeff Johnson295189b2012-06-20 16:38:30 -07002303 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002304 callback
2305
Jeff Johnson295189b2012-06-20 16:38:30 -07002306 @see WDI_PostAssocReq
2307 @return Result of the function call
2308*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002309WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002310WDI_SetBSSKeyReq
2311(
2312 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2313 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2314 void* pUserData
2315)
2316{
2317 WDI_EventInfoType wdiEventData;
2318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2319
2320 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002321 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002322 ------------------------------------------------------------------------*/
2323 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2324 {
2325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2326 "WDI API call before module is initialized - Fail request");
2327
Jeff Johnsone7245742012-09-05 17:12:55 -07002328 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002329 }
2330
2331 /*------------------------------------------------------------------------
2332 Fill in Event data and post to the Main FSM
2333 ------------------------------------------------------------------------*/
2334 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002335 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2336 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2337 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002338 wdiEventData.pUserData = pUserData;
2339
2340 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2341
2342}/*WDI_SetBSSKeyReq*/
2343
2344/**
2345 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2346 uninstall a BSS key from HW. Upon the call of this API the
2347 WLAN DAL will pack and send a HAL Remove BSS Key request
2348 message to the lower RIVA sub-system if DAL is in state
2349 STARTED.
2350
2351 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002352 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002353
2354 WDI_SetBSSKeyReq must have been called.
2355
Jeff Johnsone7245742012-09-05 17:12:55 -07002356 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002357 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002358
Jeff Johnson295189b2012-06-20 16:38:30 -07002359 wdiRemoveBSSKeyRspCb: callback for passing back the
2360 response of the remove BSS key operation received from
2361 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002362
Jeff Johnson295189b2012-06-20 16:38:30 -07002363 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002364 callback
2365
Jeff Johnson295189b2012-06-20 16:38:30 -07002366 @see WDI_SetBSSKeyReq
2367 @return Result of the function call
2368*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002369WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002370WDI_RemoveBSSKeyReq
2371(
2372 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2373 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2374 void* pUserData
2375)
2376{
2377 WDI_EventInfoType wdiEventData;
2378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2379
2380 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002381 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002382 ------------------------------------------------------------------------*/
2383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2384 {
2385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2386 "WDI API call before module is initialized - Fail request");
2387
Jeff Johnsone7245742012-09-05 17:12:55 -07002388 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002389 }
2390
2391 /*------------------------------------------------------------------------
2392 Fill in Event data and post to the Main FSM
2393 ------------------------------------------------------------------------*/
2394 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002395 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2396 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2397 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002398 wdiEventData.pUserData = pUserData;
2399
2400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2401
2402}/*WDI_RemoveBSSKeyReq*/
2403
2404
2405/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002406 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002407 ready to install a STA(ast) encryption key in HW. Upon
2408 the call of this API the WLAN DAL will pack and send a
2409 HAL Set STA Key request message to the lower RIVA
2410 sub-system if DAL is in state STARTED.
2411
2412 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002413 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002414
2415 WDI_PostAssocReq must have been called.
2416
Jeff Johnsone7245742012-09-05 17:12:55 -07002417 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002418 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002419
Jeff Johnson295189b2012-06-20 16:38:30 -07002420 wdiSetSTAKeyRspCb: callback for passing back the
2421 response of the set STA key operation received from the
2422 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002423
Jeff Johnson295189b2012-06-20 16:38:30 -07002424 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002425 callback
2426
Jeff Johnson295189b2012-06-20 16:38:30 -07002427 @see WDI_PostAssocReq
2428 @return Result of the function call
2429*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002430WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002431WDI_SetSTAKeyReq
2432(
2433 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2434 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2435 void* pUserData
2436)
2437{
2438 WDI_EventInfoType wdiEventData;
2439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2440
2441 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002442 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002443 ------------------------------------------------------------------------*/
2444 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2445 {
2446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2447 "WDI API call before module is initialized - Fail request");
2448
Jeff Johnsone7245742012-09-05 17:12:55 -07002449 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002450 }
2451
2452 /*------------------------------------------------------------------------
2453 Fill in Event data and post to the Main FSM
2454 ------------------------------------------------------------------------*/
2455 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002456 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2457 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2458 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002459 wdiEventData.pUserData = pUserData;
2460
2461 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2462
2463}/*WDI_SetSTAKeyReq*/
2464
2465
2466/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002467 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 wants to uninstall a previously set STA key in HW. Upon
2469 the call of this API the WLAN DAL will pack and send a
2470 HAL Remove STA Key request message to the lower RIVA
2471 sub-system if DAL is in state STARTED.
2472
2473 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002474 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002475
2476 WDI_SetSTAKeyReq must have been called.
2477
Jeff Johnsone7245742012-09-05 17:12:55 -07002478 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002479 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002480
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 wdiRemoveSTAKeyRspCb: callback for passing back the
2482 response of the remove STA key operation received from
2483 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002484
Jeff Johnson295189b2012-06-20 16:38:30 -07002485 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 callback
2487
Jeff Johnson295189b2012-06-20 16:38:30 -07002488 @see WDI_SetSTAKeyReq
2489 @return Result of the function call
2490*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002491WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002492WDI_RemoveSTAKeyReq
2493(
2494 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2495 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2496 void* pUserData
2497)
2498{
2499 WDI_EventInfoType wdiEventData;
2500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2501
2502 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002503 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002504 ------------------------------------------------------------------------*/
2505 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2506 {
2507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2508 "WDI API call before module is initialized - Fail request");
2509
Jeff Johnsone7245742012-09-05 17:12:55 -07002510 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002511 }
2512
2513 /*------------------------------------------------------------------------
2514 Fill in Event data and post to the Main FSM
2515 ------------------------------------------------------------------------*/
2516 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002517 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2518 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2519 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002520 wdiEventData.pUserData = pUserData;
2521
2522 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2523
2524}/*WDI_RemoveSTAKeyReq*/
2525
2526
2527/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 wants to install a STA Bcast encryption key on the HW.
2530 Upon the call of this API the WLAN DAL will pack and
2531 send a HAL Start request message to the lower RIVA
2532 sub-system if DAL is in state STARTED.
2533
2534 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002535 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002536
2537 WDI_PostAssocReq must have been called.
2538
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002540 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002541
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 wdiSetSTABcastKeyRspCb: callback for passing back the
2543 response of the set BSS Key operation received from the
2544 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002545
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002547 callback
2548
Jeff Johnson295189b2012-06-20 16:38:30 -07002549 @see WDI_PostAssocReq
2550 @return Result of the function call
2551*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002552WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002553WDI_SetSTABcastKeyReq
2554(
2555 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2556 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2557 void* pUserData
2558)
2559
2560{
2561 WDI_EventInfoType wdiEventData;
2562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2563
2564 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002565 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002566 ------------------------------------------------------------------------*/
2567 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2568 {
2569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2570 "WDI API call before module is initialized - Fail request");
2571
Jeff Johnsone7245742012-09-05 17:12:55 -07002572 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 }
2574
2575 /*------------------------------------------------------------------------
2576 Fill in Event data and post to the Main FSM
2577 ------------------------------------------------------------------------*/
2578 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002579 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2580 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2581 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002582 wdiEventData.pUserData = pUserData;
2583
2584 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2585
2586}/*WDI_SetSTABcastKeyReq*/
2587
2588/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002589 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002590 MAC wants to uninstall a STA Bcast key from HW. Upon the
2591 call of this API the WLAN DAL will pack and send a HAL
2592 Remove STA Bcast Key request message to the lower RIVA
2593 sub-system if DAL is in state STARTED.
2594
2595 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002596 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002597
2598 WDI_SetSTABcastKeyReq must have been called.
2599
Jeff Johnsone7245742012-09-05 17:12:55 -07002600 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 parameters as specified by the Device
2602 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002603
Jeff Johnson295189b2012-06-20 16:38:30 -07002604 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2605 response of the remove STA Bcast key operation received
2606 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002607
Jeff Johnson295189b2012-06-20 16:38:30 -07002608 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 callback
2610
Jeff Johnson295189b2012-06-20 16:38:30 -07002611 @see WDI_SetSTABcastKeyReq
2612 @return Result of the function call
2613*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002614WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002615WDI_RemoveSTABcastKeyReq
2616(
2617 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2618 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2619 void* pUserData
2620)
2621{
2622 WDI_EventInfoType wdiEventData;
2623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2624
2625 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002626 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002627 ------------------------------------------------------------------------*/
2628 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2629 {
2630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2631 "WDI API call before module is initialized - Fail request");
2632
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 }
2635
2636 /*------------------------------------------------------------------------
2637 Fill in Event data and post to the Main FSM
2638 ------------------------------------------------------------------------*/
2639 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2641 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2642 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002643 wdiEventData.pUserData = pUserData;
2644
2645 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2646
2647}/*WDI_RemoveSTABcastKeyReq*/
2648
2649/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002650 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 MAC wants to set Max Tx Power to HW. Upon the
2652 call of this API the WLAN DAL will pack and send a HAL
2653 Remove STA Bcast Key request message to the lower RIVA
2654 sub-system if DAL is in state STARTED.
2655
2656 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002657 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002658
2659 WDI_SetSTABcastKeyReq must have been called.
2660
Jeff Johnsone7245742012-09-05 17:12:55 -07002661 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002662 parameters as specified by the Device
2663 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002664
Jeff Johnson295189b2012-06-20 16:38:30 -07002665 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2666 response of the remove STA Bcast key operation received
2667 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002668
Jeff Johnson295189b2012-06-20 16:38:30 -07002669 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002670 callback
2671
Jeff Johnson295189b2012-06-20 16:38:30 -07002672 @see WDI_SetMaxTxPowerReq
2673 @return Result of the function call
2674*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002675WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002676WDI_SetMaxTxPowerReq
2677(
2678 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2679 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2680 void* pUserData
2681)
2682{
2683 WDI_EventInfoType wdiEventData;
2684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2685
2686 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002687 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002688 ------------------------------------------------------------------------*/
2689 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2690 {
2691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2692 "WDI API call before module is initialized - Fail request");
2693
Jeff Johnsone7245742012-09-05 17:12:55 -07002694 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002695 }
2696
2697 /*------------------------------------------------------------------------
2698 Fill in Event data and post to the Main FSM
2699 ------------------------------------------------------------------------*/
2700 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002701 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2702 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2703 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002704 wdiEventData.pUserData = pUserData;
2705
2706 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2707}
2708
2709#ifdef FEATURE_WLAN_CCX
2710WDI_Status
2711WDI_TSMStatsReq
2712(
2713 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2714 WDI_TsmRspCb wdiReqStatusCb,
2715 void* pUserData
2716)
2717{
2718 WDI_EventInfoType wdiEventData;
2719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002720 /*------------------------------------------------------------------------
2721 Sanity Check
2722 ------------------------------------------------------------------------*/
2723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2724 {
2725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2726 "WDI API call before module is initialized - Fail request");
2727
2728 return WDI_STATUS_E_NOT_ALLOWED;
2729 }
2730
2731 /*------------------------------------------------------------------------
2732 Fill in Event data and post to the Main FSM
2733 ------------------------------------------------------------------------*/
2734 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2735 wdiEventData.pEventData = pwdiTsmReqParams;
2736 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2737 wdiEventData.pCBfnc = wdiReqStatusCb;
2738 wdiEventData.pUserData = pUserData;
2739
2740 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2741
2742}
2743#endif
2744
2745/*========================================================================
2746
2747 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002748
Jeff Johnson295189b2012-06-20 16:38:30 -07002749==========================================================================*/
2750
2751/**
2752 @brief WDI_AddTSReq will be called when the upper MAC to inform
2753 the device of a successful add TSpec negotiation. HW
2754 needs to receive the TSpec Info from the UMAC in order
2755 to configure properly the QoS data traffic. Upon the
2756 call of this API the WLAN DAL will pack and send a HAL
2757 Add TS request message to the lower RIVA sub-system if
2758 DAL is in state STARTED.
2759
2760 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002761 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002762
2763 WDI_PostAssocReq must have been called.
2764
2765 @param wdiAddTsReqParams: the add TS parameters as specified by
2766 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002767
Jeff Johnson295189b2012-06-20 16:38:30 -07002768 wdiAddTsRspCb: callback for passing back the response of
2769 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002770
Jeff Johnson295189b2012-06-20 16:38:30 -07002771 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002772 callback
2773
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 @see WDI_PostAssocReq
2775 @return Result of the function call
2776*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002777WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002778WDI_AddTSReq
2779(
2780 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2781 WDI_AddTsRspCb wdiAddTsRspCb,
2782 void* pUserData
2783)
2784{
2785 WDI_EventInfoType wdiEventData;
2786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2787
2788 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002789 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002790 ------------------------------------------------------------------------*/
2791 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2792 {
2793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2794 "WDI API call before module is initialized - Fail request");
2795
Jeff Johnsone7245742012-09-05 17:12:55 -07002796 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002797 }
2798
2799 /*------------------------------------------------------------------------
2800 Fill in Event data and post to the Main FSM
2801 ------------------------------------------------------------------------*/
2802 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002803 wdiEventData.pEventData = pwdiAddTsReqParams;
2804 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2805 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002806 wdiEventData.pUserData = pUserData;
2807
2808 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2809
2810}/*WDI_AddTSReq*/
2811
2812
2813
2814/**
2815 @brief WDI_DelTSReq will be called when the upper MAC has ended
2816 admission on a specific AC. This is to inform HW that
2817 QoS traffic parameters must be rest. Upon the call of
2818 this API the WLAN DAL will pack and send a HAL Del TS
2819 request message to the lower RIVA sub-system if DAL is
2820 in state STARTED.
2821
2822 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002823 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002824
2825 WDI_AddTSReq must have been called.
2826
2827 @param wdiDelTsReqParams: the del TS parameters as specified by
2828 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002829
Jeff Johnson295189b2012-06-20 16:38:30 -07002830 wdiDelTsRspCb: callback for passing back the response of
2831 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002832
Jeff Johnson295189b2012-06-20 16:38:30 -07002833 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 callback
2835
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 @see WDI_AddTSReq
2837 @return Result of the function call
2838*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002839WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002840WDI_DelTSReq
2841(
2842 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2843 WDI_DelTsRspCb wdiDelTsRspCb,
2844 void* pUserData
2845)
2846{
2847 WDI_EventInfoType wdiEventData;
2848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2849
2850 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002851 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002852 ------------------------------------------------------------------------*/
2853 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2854 {
2855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2856 "WDI API call before module is initialized - Fail request");
2857
Jeff Johnsone7245742012-09-05 17:12:55 -07002858 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002859 }
2860
2861 /*------------------------------------------------------------------------
2862 Fill in Event data and post to the Main FSM
2863 ------------------------------------------------------------------------*/
2864 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002865 wdiEventData.pEventData = pwdiDelTsReqParams;
2866 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2867 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002868 wdiEventData.pUserData = pUserData;
2869
2870 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2871
2872}/*WDI_DelTSReq*/
2873
2874
2875
2876/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002877 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 wishes to update the EDCA parameters used by HW for QoS
2879 data traffic. Upon the call of this API the WLAN DAL
2880 will pack and send a HAL Update EDCA Params request
2881 message to the lower RIVA sub-system if DAL is in state
2882 STARTED.
2883
2884 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002885 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002886
2887 WDI_PostAssocReq must have been called.
2888
Jeff Johnsone7245742012-09-05 17:12:55 -07002889 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002890 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002891
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 wdiUpdateEDCAParamsRspCb: callback for passing back the
2893 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002894
Jeff Johnson295189b2012-06-20 16:38:30 -07002895 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002896 callback
2897
Jeff Johnson295189b2012-06-20 16:38:30 -07002898 @see WDI_PostAssocReq
2899 @return Result of the function call
2900*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002901WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002902WDI_UpdateEDCAParams
2903(
2904 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2905 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2906 void* pUserData
2907)
2908{
2909 WDI_EventInfoType wdiEventData;
2910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2911
2912 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002913 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002914 ------------------------------------------------------------------------*/
2915 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2916 {
2917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2918 "WDI API call before module is initialized - Fail request");
2919
Jeff Johnsone7245742012-09-05 17:12:55 -07002920 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002921 }
2922
2923 /*------------------------------------------------------------------------
2924 Fill in Event data and post to the Main FSM
2925 ------------------------------------------------------------------------*/
2926 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002927 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2928 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2929 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002930 wdiEventData.pUserData = pUserData;
2931
2932 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2933
2934}/*WDI_UpdateEDCAParams*/
2935
2936
2937/**
2938 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2939 successfully a BA session and needs to notify the HW for
2940 the appropriate settings to take place. Upon the call of
2941 this API the WLAN DAL will pack and send a HAL Add BA
2942 request message to the lower RIVA sub-system if DAL is
2943 in state STARTED.
2944
2945 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002946 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002947
2948 WDI_PostAssocReq must have been called.
2949
2950 @param wdiAddBAReqParams: the add BA parameters as specified by
2951 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002952
Jeff Johnson295189b2012-06-20 16:38:30 -07002953 wdiAddBARspCb: callback for passing back the response of
2954 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002955
Jeff Johnson295189b2012-06-20 16:38:30 -07002956 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002957 callback
2958
Jeff Johnson295189b2012-06-20 16:38:30 -07002959 @see WDI_PostAssocReq
2960 @return Result of the function call
2961*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002962WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002963WDI_AddBASessionReq
2964(
2965 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
2966 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
2967 void* pUserData
2968)
2969{
2970 WDI_EventInfoType wdiEventData;
2971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2972
2973 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002974 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002975 ------------------------------------------------------------------------*/
2976 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2977 {
2978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2979 "WDI API call before module is initialized - Fail request");
2980
Jeff Johnsone7245742012-09-05 17:12:55 -07002981 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002982 }
2983
2984 /*------------------------------------------------------------------------
2985 Fill in Event data and post to the Main FSM
2986 ------------------------------------------------------------------------*/
2987 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002988 wdiEventData.pEventData = pwdiAddBASessionReqParams;
2989 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
2990 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002991 wdiEventData.pUserData = pUserData;
2992
2993 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2994
2995}/*WDI_AddBASessionReq*/
2996
2997/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002998 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07002999 inform HW that it has deleted a previously created BA
3000 session. Upon the call of this API the WLAN DAL will
3001 pack and send a HAL Del BA request message to the lower
3002 RIVA sub-system if DAL is in state STARTED.
3003
3004 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003005 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003006
3007 WDI_AddBAReq must have been called.
3008
3009 @param wdiDelBAReqParams: the del BA parameters as specified by
3010 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003011
Jeff Johnson295189b2012-06-20 16:38:30 -07003012 wdiDelBARspCb: callback for passing back the response of
3013 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003014
Jeff Johnson295189b2012-06-20 16:38:30 -07003015 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003016 callback
3017
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 @see WDI_AddBAReq
3019 @return Result of the function call
3020*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003021WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003022WDI_DelBAReq
3023(
3024 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3025 WDI_DelBARspCb wdiDelBARspCb,
3026 void* pUserData
3027)
3028{
3029 WDI_EventInfoType wdiEventData;
3030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3031
3032 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003033 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003034 ------------------------------------------------------------------------*/
3035 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3036 {
3037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3038 "WDI API call before module is initialized - Fail request");
3039
Jeff Johnsone7245742012-09-05 17:12:55 -07003040 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003041 }
3042
3043 /*------------------------------------------------------------------------
3044 Fill in Event data and post to the Main FSM
3045 ------------------------------------------------------------------------*/
3046 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003047 wdiEventData.pEventData = pwdiDelBAReqParams;
3048 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3049 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003050 wdiEventData.pUserData = pUserData;
3051
3052 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3053
3054}/*WDI_DelBAReq*/
3055
Jeff Johnsone7245742012-09-05 17:12:55 -07003056/*========================================================================
3057
Jeff Johnson295189b2012-06-20 16:38:30 -07003058 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003059
Jeff Johnson295189b2012-06-20 16:38:30 -07003060==========================================================================*/
3061
3062/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003063 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003064 wants to set the power save related configurations of
3065 the WLAN Device. Upon the call of this API the WLAN DAL
3066 will pack and send a HAL Update CFG request message to
3067 the lower RIVA sub-system if DAL is in state STARTED.
3068
3069 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003070 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003071
3072 WDI_Start must have been called.
3073
Jeff Johnsone7245742012-09-05 17:12:55 -07003074 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003075 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003076
Jeff Johnson295189b2012-06-20 16:38:30 -07003077 wdiSetPwrSaveCfgCb: callback for passing back the
3078 response of the set power save cfg operation received
3079 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003080
Jeff Johnson295189b2012-06-20 16:38:30 -07003081 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003082 callback
3083
Jeff Johnson295189b2012-06-20 16:38:30 -07003084 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003085 @return Result of the function call
3086*/
3087WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003088WDI_SetPwrSaveCfgReq
3089(
3090 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3091 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3092 void* pUserData
3093)
3094{
3095 WDI_EventInfoType wdiEventData;
3096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3097
3098 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003099 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003100 ------------------------------------------------------------------------*/
3101 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3102 {
3103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3104 "WDI API call before module is initialized - Fail request");
3105
Jeff Johnsone7245742012-09-05 17:12:55 -07003106 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 }
3108
3109 /*------------------------------------------------------------------------
3110 Fill in Event data and post to the Main FSM
3111 ------------------------------------------------------------------------*/
3112 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003113 wdiEventData.pEventData = pwdiPowerSaveCfg;
3114 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3115 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003116 wdiEventData.pUserData = pUserData;
3117
3118 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3119
3120}/*WDI_SetPwrSaveCfgReq*/
3121
3122/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003123 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003124 request the device to get into IMPS power state. Upon
3125 the call of this API the WLAN DAL will send a HAL Enter
3126 IMPS request message to the lower RIVA sub-system if DAL
3127 is in state STARTED.
3128
3129 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003130 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003131
Jeff Johnsone7245742012-09-05 17:12:55 -07003132
3133 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003134 response of the Enter IMPS operation received from the
3135 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003136
Jeff Johnson295189b2012-06-20 16:38:30 -07003137 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003138 callback
3139
Jeff Johnson295189b2012-06-20 16:38:30 -07003140 @see WDI_Start
3141 @return Result of the function call
3142*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003143WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003144WDI_EnterImpsReq
3145(
3146 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3147 void* pUserData
3148)
3149{
3150 WDI_EventInfoType wdiEventData;
3151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3152
3153 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003154 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003155 ------------------------------------------------------------------------*/
3156 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3157 {
3158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3159 "WDI API call before module is initialized - Fail request");
3160
Jeff Johnsone7245742012-09-05 17:12:55 -07003161 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003162 }
3163
3164 /*------------------------------------------------------------------------
3165 Fill in Event data and post to the Main FSM
3166 ------------------------------------------------------------------------*/
3167 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003168 wdiEventData.pEventData = NULL;
3169 wdiEventData.uEventDataSize = 0;
3170 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003171 wdiEventData.pUserData = pUserData;
3172
3173 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3174
3175}/*WDI_EnterImpsReq*/
3176
3177/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003178 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003179 request the device to get out of IMPS power state. Upon
3180 the call of this API the WLAN DAL will send a HAL Exit
3181 IMPS request message to the lower RIVA sub-system if DAL
3182 is in state STARTED.
3183
3184 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003185 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003186
Jeff Johnson295189b2012-06-20 16:38:30 -07003187
Jeff Johnsone7245742012-09-05 17:12:55 -07003188
3189 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003190 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003191
Jeff Johnson295189b2012-06-20 16:38:30 -07003192 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003193 callback
3194
Jeff Johnson295189b2012-06-20 16:38:30 -07003195 @see WDI_Start
3196 @return Result of the function call
3197*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003198WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003199WDI_ExitImpsReq
3200(
3201 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3202 void* pUserData
3203)
3204{
3205 WDI_EventInfoType wdiEventData;
3206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3207
3208 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003209 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003210 ------------------------------------------------------------------------*/
3211 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3212 {
3213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3214 "WDI API call before module is initialized - Fail request");
3215
Jeff Johnsone7245742012-09-05 17:12:55 -07003216 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003217 }
3218
3219 /*------------------------------------------------------------------------
3220 Fill in Event data and post to the Main FSM
3221 ------------------------------------------------------------------------*/
3222 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 wdiEventData.pEventData = NULL;
3224 wdiEventData.uEventDataSize = 0;
3225 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003226 wdiEventData.pUserData = pUserData;
3227
3228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3229
3230}/*WDI_ExitImpsReq*/
3231
3232/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003233 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003234 request the device to get into BMPS power state. Upon
3235 the call of this API the WLAN DAL will pack and send a
3236 HAL Enter BMPS request message to the lower RIVA
3237 sub-system if DAL is in state STARTED.
3238
3239 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003240 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003241
3242 WDI_PostAssocReq must have been called.
3243
Jeff Johnsone7245742012-09-05 17:12:55 -07003244 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003245 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003246
Jeff Johnson295189b2012-06-20 16:38:30 -07003247 wdiEnterBmpsRspCb: callback for passing back the
3248 response of the Enter BMPS operation received from the
3249 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003250
Jeff Johnson295189b2012-06-20 16:38:30 -07003251 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003252 callback
3253
Jeff Johnson295189b2012-06-20 16:38:30 -07003254 @see WDI_PostAssocReq
3255 @return Result of the function call
3256*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003257WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003258WDI_EnterBmpsReq
3259(
3260 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3261 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3262 void* pUserData
3263)
3264{
3265 WDI_EventInfoType wdiEventData;
3266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3267
3268 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003269 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003270 ------------------------------------------------------------------------*/
3271 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3272 {
3273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3274 "WDI API call before module is initialized - Fail request");
3275
Jeff Johnsone7245742012-09-05 17:12:55 -07003276 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003277 }
3278
3279 /*------------------------------------------------------------------------
3280 Fill in Event data and post to the Main FSM
3281 ------------------------------------------------------------------------*/
3282 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003283 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3284 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3285 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003286 wdiEventData.pUserData = pUserData;
3287
3288 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3289
3290}/*WDI_EnterBmpsReq*/
3291
3292/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003293 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003294 request the device to get out of BMPS power state. Upon
3295 the call of this API the WLAN DAL will pack and send a
3296 HAL Exit BMPS request message to the lower RIVA
3297 sub-system if DAL is in state STARTED.
3298
3299 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003300 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003301
3302 WDI_PostAssocReq must have been called.
3303
Jeff Johnsone7245742012-09-05 17:12:55 -07003304 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003305 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003306
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 wdiExitBmpsRspCb: callback for passing back the response
3308 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003309
Jeff Johnson295189b2012-06-20 16:38:30 -07003310 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003311 callback
3312
Jeff Johnson295189b2012-06-20 16:38:30 -07003313 @see WDI_PostAssocReq
3314 @return Result of the function call
3315*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003316WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003317WDI_ExitBmpsReq
3318(
3319 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3320 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3321 void* pUserData
3322)
3323{
3324 WDI_EventInfoType wdiEventData;
3325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3326
3327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003328 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003329 ------------------------------------------------------------------------*/
3330 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3331 {
3332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3333 "WDI API call before module is initialized - Fail request");
3334
Jeff Johnsone7245742012-09-05 17:12:55 -07003335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003336 }
3337
3338 /*------------------------------------------------------------------------
3339 Fill in Event data and post to the Main FSM
3340 ------------------------------------------------------------------------*/
3341 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003342 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3343 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3344 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003345 wdiEventData.pUserData = pUserData;
3346
3347 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3348
3349}/*WDI_ExitBmpsReq*/
3350
3351/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003352 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003353 request the device to get into UAPSD power state. Upon
3354 the call of this API the WLAN DAL will pack and send a
3355 HAL Enter UAPSD request message to the lower RIVA
3356 sub-system if DAL is in state STARTED.
3357
3358 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003359 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003360
3361 WDI_PostAssocReq must have been called.
3362 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003363
3364 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003365 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003366
Jeff Johnson295189b2012-06-20 16:38:30 -07003367 wdiEnterUapsdRspCb: callback for passing back the
3368 response of the Enter UAPSD operation received from the
3369 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003370
Jeff Johnson295189b2012-06-20 16:38:30 -07003371 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003372 callback
3373
Jeff Johnson295189b2012-06-20 16:38:30 -07003374 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3375 @return Result of the function call
3376*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003377WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003378WDI_EnterUapsdReq
3379(
3380 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3381 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3382 void* pUserData
3383)
3384{
3385 WDI_EventInfoType wdiEventData;
3386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3387
3388 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003390 ------------------------------------------------------------------------*/
3391 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3392 {
3393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3394 "WDI API call before module is initialized - Fail request");
3395
Jeff Johnsone7245742012-09-05 17:12:55 -07003396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003397 }
3398
3399 /*------------------------------------------------------------------------
3400 Fill in Event data and post to the Main FSM
3401 ------------------------------------------------------------------------*/
3402 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003403 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3404 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3405 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003406 wdiEventData.pUserData = pUserData;
3407
3408 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3409
3410}/*WDI_EnterUapsdReq*/
3411
3412/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003413 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003414 request the device to get out of UAPSD power state. Upon
3415 the call of this API the WLAN DAL will send a HAL Exit
3416 UAPSD request message to the lower RIVA sub-system if
3417 DAL is in state STARTED.
3418
3419 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003420 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003421
3422 WDI_PostAssocReq must have been called.
3423
Jeff Johnsone7245742012-09-05 17:12:55 -07003424 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003425 response of the Exit UAPSD operation received from the
3426 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003427
Jeff Johnson295189b2012-06-20 16:38:30 -07003428 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 callback
3430
Jeff Johnson295189b2012-06-20 16:38:30 -07003431 @see WDI_PostAssocReq
3432 @return Result of the function call
3433*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003434WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003435WDI_ExitUapsdReq
3436(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003437 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003438 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3439 void* pUserData
3440)
3441{
3442 WDI_EventInfoType wdiEventData;
3443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3444
3445 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003446 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003447 ------------------------------------------------------------------------*/
3448 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3449 {
3450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3451 "WDI API call before module is initialized - Fail request");
3452
Jeff Johnsone7245742012-09-05 17:12:55 -07003453 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003454 }
3455
3456 /*------------------------------------------------------------------------
3457 Fill in Event data and post to the Main FSM
3458 ------------------------------------------------------------------------*/
3459 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003460 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3461 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003462 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003463 wdiEventData.pUserData = pUserData;
3464
3465 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3466
3467}/*WDI_ExitUapsdReq*/
3468
3469/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003470 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003471 MAC wants to set the UAPSD related configurations
3472 of an associated STA (while acting as an AP) to the WLAN
3473 Device. Upon the call of this API the WLAN DAL will pack
3474 and send a HAL Update UAPSD params request message to
3475 the lower RIVA sub-system if DAL is in state STARTED.
3476
3477 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003478 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003479
3480 WDI_ConfigBSSReq must have been called.
3481
Jeff Johnsone7245742012-09-05 17:12:55 -07003482 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003483 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003484
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 wdiUpdateUapsdParamsCb: callback for passing back the
3486 response of the update UAPSD params operation received
3487 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003488
Jeff Johnson295189b2012-06-20 16:38:30 -07003489 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003490 callback
3491
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 @see WDI_ConfigBSSReq
3493 @return Result of the function call
3494*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003495WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003496WDI_UpdateUapsdParamsReq
3497(
3498 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3499 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3500 void* pUserData
3501)
3502{
3503 WDI_EventInfoType wdiEventData;
3504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3505
3506 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003507 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003508 ------------------------------------------------------------------------*/
3509 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3510 {
3511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3512 "WDI API call before module is initialized - Fail request");
3513
Jeff Johnsone7245742012-09-05 17:12:55 -07003514 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003515 }
3516
3517 /*------------------------------------------------------------------------
3518 Fill in Event data and post to the Main FSM
3519 ------------------------------------------------------------------------*/
3520 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003521 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003522 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003523 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003524 wdiEventData.pUserData = pUserData;
3525
3526 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3527
3528}/*WDI_UpdateUapsdParamsReq*/
3529
3530/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003531 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 MAC wants to set the UAPSD related configurations before
3533 requesting for enter UAPSD power state to the WLAN
3534 Device. Upon the call of this API the WLAN DAL will pack
3535 and send a HAL Set UAPSD params request message to
3536 the lower RIVA sub-system if DAL is in state STARTED.
3537
3538 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003539 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003540
3541 WDI_PostAssocReq must have been called.
3542
3543 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3544 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003545
Jeff Johnson295189b2012-06-20 16:38:30 -07003546 wdiSetUapsdAcParamsCb: callback for passing back the
3547 response of the set UAPSD params operation received from
3548 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003549
Jeff Johnson295189b2012-06-20 16:38:30 -07003550 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003551 callback
3552
Jeff Johnson295189b2012-06-20 16:38:30 -07003553 @see WDI_PostAssocReq
3554 @return Result of the function call
3555*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003556WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003557WDI_SetUapsdAcParamsReq
3558(
3559 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3560 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3561 void* pUserData
3562)
3563{
3564 WDI_EventInfoType wdiEventData;
3565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3566
3567 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003569 ------------------------------------------------------------------------*/
3570 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3571 {
3572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3573 "WDI API call before module is initialized - Fail request");
3574
Jeff Johnsone7245742012-09-05 17:12:55 -07003575 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003576 }
3577
3578 /*------------------------------------------------------------------------
3579 Fill in Event data and post to the Main FSM
3580 ------------------------------------------------------------------------*/
3581 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003582 wdiEventData.pEventData = pwdiUapsdInfo;
3583 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3584 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003585 wdiEventData.pUserData = pUserData;
3586
3587 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3588
3589}/*WDI_SetUapsdAcParamsReq*/
3590
3591/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003592 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003593 MAC wants to set/reset the RXP filters for received pkts
3594 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3595 and send a HAL configure RXP filter request message to
3596 the lower RIVA sub-system.
3597
3598 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003599 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003600
Jeff Johnsone7245742012-09-05 17:12:55 -07003601
3602 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003603 filter as specified by the Device
3604 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003605
Jeff Johnson295189b2012-06-20 16:38:30 -07003606 wdiConfigureRxpFilterCb: callback for passing back the
3607 response of the configure RXP filter operation received
3608 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003609
Jeff Johnson295189b2012-06-20 16:38:30 -07003610 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003611 callback
3612
Jeff Johnson295189b2012-06-20 16:38:30 -07003613 @return Result of the function call
3614*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003615WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003616WDI_ConfigureRxpFilterReq
3617(
3618 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3619 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3620 void* pUserData
3621)
3622{
3623 WDI_EventInfoType wdiEventData;
3624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3625
3626 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003628 ------------------------------------------------------------------------*/
3629 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3630 {
3631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3632 "WDI API call before module is initialized - Fail request");
3633
Jeff Johnsone7245742012-09-05 17:12:55 -07003634 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003635 }
3636
3637 /*------------------------------------------------------------------------
3638 Fill in Event data and post to the Main FSM
3639 ------------------------------------------------------------------------*/
3640 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003641 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3642 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3643 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003644 wdiEventData.pUserData = pUserData;
3645
3646 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3647}/*WDI_ConfigureRxpFilterReq*/
3648
3649/**
3650 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3651 wants to set the beacon filters while in power save.
3652 Upon the call of this API the WLAN DAL will pack and
3653 send a Beacon filter request message to the
3654 lower RIVA sub-system.
3655
3656 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003657 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003658
Jeff Johnsone7245742012-09-05 17:12:55 -07003659
3660 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003661 filter as specified by the Device
3662 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003663
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 wdiBeaconFilterCb: callback for passing back the
3665 response of the set beacon filter operation received
3666 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003667
Jeff Johnson295189b2012-06-20 16:38:30 -07003668 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003669 callback
3670
Jeff Johnson295189b2012-06-20 16:38:30 -07003671 @return Result of the function call
3672*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003673WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003674WDI_SetBeaconFilterReq
3675(
3676 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3677 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3678 void* pUserData
3679)
3680{
3681 WDI_EventInfoType wdiEventData;
3682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3683
3684 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003685 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 ------------------------------------------------------------------------*/
3687 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3688 {
3689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3690 "WDI API call before module is initialized - Fail request");
3691
Jeff Johnsone7245742012-09-05 17:12:55 -07003692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003693 }
3694
3695 /*------------------------------------------------------------------------
3696 Fill in Event data and post to the Main FSM
3697 ------------------------------------------------------------------------*/
3698 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003699 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003700 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003701 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003702 wdiEventData.pUserData = pUserData;
3703
3704 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3705}/*WDI_SetBeaconFilterReq*/
3706
3707/**
3708 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3709 wants to remove the beacon filter for particular IE
3710 while in power save. Upon the call of this API the WLAN
3711 DAL will pack and send a remove Beacon filter request
3712 message to the lower RIVA sub-system.
3713
3714 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003715 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003716
Jeff Johnsone7245742012-09-05 17:12:55 -07003717
3718 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003719 filter as specified by the Device
3720 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003721
Jeff Johnson295189b2012-06-20 16:38:30 -07003722 wdiBeaconFilterCb: callback for passing back the
3723 response of the remove beacon filter operation received
3724 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003725
Jeff Johnson295189b2012-06-20 16:38:30 -07003726 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003727 callback
3728
Jeff Johnson295189b2012-06-20 16:38:30 -07003729 @return Result of the function call
3730*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003731WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003732WDI_RemBeaconFilterReq
3733(
3734 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3735 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3736 void* pUserData
3737)
3738{
3739 WDI_EventInfoType wdiEventData;
3740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3741
3742 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003743 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003744 ------------------------------------------------------------------------*/
3745 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3746 {
3747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3748 "WDI API call before module is initialized - Fail request");
3749
Jeff Johnsone7245742012-09-05 17:12:55 -07003750 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003751 }
3752
3753 /*------------------------------------------------------------------------
3754 Fill in Event data and post to the Main FSM
3755 ------------------------------------------------------------------------*/
3756 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003757 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003758 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003759 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003760 wdiEventData.pUserData = pUserData;
3761
3762 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3763}/*WDI_RemBeaconFilterReq*/
3764
3765/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 MAC wants to set the RSSI thresholds related
3768 configurations while in power save. Upon the call of
3769 this API the WLAN DAL will pack and send a HAL Set RSSI
3770 thresholds request message to the lower RIVA
3771 sub-system if DAL is in state STARTED.
3772
3773 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003774 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003775
3776 WDI_PostAssocReq must have been called.
3777
3778 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3779 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003780
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 wdiSetUapsdAcParamsCb: callback for passing back the
3782 response of the set UAPSD params operation received from
3783 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003784
Jeff Johnson295189b2012-06-20 16:38:30 -07003785 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003786 callback
3787
Jeff Johnson295189b2012-06-20 16:38:30 -07003788 @see WDI_PostAssocReq
3789 @return Result of the function call
3790*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003791WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003792WDI_SetRSSIThresholdsReq
3793(
3794 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3795 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3796 void* pUserData
3797)
3798{
3799 WDI_EventInfoType wdiEventData;
3800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3801
3802 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003803 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003804 ------------------------------------------------------------------------*/
3805 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3806 {
3807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3808 "WDI API call before module is initialized - Fail request");
3809
Jeff Johnsone7245742012-09-05 17:12:55 -07003810 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003811 }
3812
3813 /*------------------------------------------------------------------------
3814 Fill in Event data and post to the Main FSM
3815 ------------------------------------------------------------------------*/
3816 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003817 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003818 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 wdiEventData.pUserData = pUserData;
3821
3822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3823}/* WDI_SetRSSIThresholdsReq*/
3824
3825/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003827 wants to set the filter to minimize unnecessary host
3828 wakeup due to broadcast traffic while in power save.
3829 Upon the call of this API the WLAN DAL will pack and
3830 send a HAL host offload request message to the
3831 lower RIVA sub-system if DAL is in state STARTED.
3832
3833 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003834 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003835
3836 WDI_PostAssocReq must have been called.
3837
Jeff Johnsone7245742012-09-05 17:12:55 -07003838 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003839 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003840
Jeff Johnson295189b2012-06-20 16:38:30 -07003841 wdiHostOffloadCb: callback for passing back the response
3842 of the host offload operation received from the
3843 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003844
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003846 callback
3847
Jeff Johnson295189b2012-06-20 16:38:30 -07003848 @see WDI_PostAssocReq
3849 @return Result of the function call
3850*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003851WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003852WDI_HostOffloadReq
3853(
3854 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3855 WDI_HostOffloadCb wdiHostOffloadCb,
3856 void* pUserData
3857)
3858{
3859 WDI_EventInfoType wdiEventData;
3860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3861
3862 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003863 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003864 ------------------------------------------------------------------------*/
3865 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3866 {
3867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3868 "WDI API call before module is initialized - Fail request");
3869
Jeff Johnsone7245742012-09-05 17:12:55 -07003870 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003871 }
3872
3873 /*------------------------------------------------------------------------
3874 Fill in Event data and post to the Main FSM
3875 ------------------------------------------------------------------------*/
3876 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003877 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003878 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 wdiEventData.pUserData = pUserData;
3881
3882 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3883}/*WDI_HostOffloadReq*/
3884
3885/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003886 @brief WDI_KeepAliveReq will be called when the upper MAC
3887 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003888 and minimize unnecessary host wakeups due to while in power save.
3889 Upon the call of this API the WLAN DAL will pack and
3890 send a HAL Keep Alive request message to the
3891 lower RIVA sub-system if DAL is in state STARTED.
3892
3893 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003894 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003895
3896 WDI_PostAssocReq must have been called.
3897
Jeff Johnsone7245742012-09-05 17:12:55 -07003898 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003899 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003900
Jeff Johnson295189b2012-06-20 16:38:30 -07003901 wdiKeepAliveCb: callback for passing back the response
3902 of the Keep Alive operation received from the
3903 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003904
Jeff Johnson295189b2012-06-20 16:38:30 -07003905 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003906 callback
3907
Jeff Johnson295189b2012-06-20 16:38:30 -07003908 @see WDI_PostAssocReq
3909 @return Result of the function call
3910*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003911WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003912WDI_KeepAliveReq
3913(
3914 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3915 WDI_KeepAliveCb wdiKeepAliveCb,
3916 void* pUserData
3917)
3918{
3919 WDI_EventInfoType wdiEventData;
3920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3921
3922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003924 ------------------------------------------------------------------------*/
3925 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3926 {
3927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3928 "WDI_KeepAliveReq: WDI API call before module "
3929 "is initialized - Fail request");
3930
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003932 }
3933
3934 /*------------------------------------------------------------------------
3935 Fill in Event data and post to the Main FSM
3936 ------------------------------------------------------------------------*/
3937 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003938 wdiEventData.pEventData = pwdiKeepAliveParams;
3939 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3940 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 wdiEventData.pUserData = pUserData;
3942
3943 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3944}/*WDI_KeepAliveReq*/
3945
3946/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003947 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003948 wants to set the Wowl Bcast ptrn to minimize unnecessary
3949 host wakeup due to broadcast traffic while in power
3950 save. Upon the call of this API the WLAN DAL will pack
3951 and send a HAL Wowl Bcast ptrn request message to the
3952 lower RIVA sub-system if DAL is in state STARTED.
3953
3954 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003955 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003956
3957 WDI_PostAssocReq must have been called.
3958
Jeff Johnsone7245742012-09-05 17:12:55 -07003959 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003960 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003961
Jeff Johnson295189b2012-06-20 16:38:30 -07003962 wdiWowlAddBcPtrnCb: callback for passing back the
3963 response of the add Wowl bcast ptrn operation received
3964 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003965
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003967 callback
3968
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 @see WDI_PostAssocReq
3970 @return Result of the function call
3971*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003972WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003973WDI_WowlAddBcPtrnReq
3974(
3975 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
3976 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
3977 void* pUserData
3978)
3979{
3980 WDI_EventInfoType wdiEventData;
3981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3982
3983 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003984 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003985 ------------------------------------------------------------------------*/
3986 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3987 {
3988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3989 "WDI API call before module is initialized - Fail request");
3990
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003992 }
3993
3994 /*------------------------------------------------------------------------
3995 Fill in Event data and post to the Main FSM
3996 ------------------------------------------------------------------------*/
3997 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003998 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003999 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004000 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004001 wdiEventData.pUserData = pUserData;
4002
4003 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4004}/*WDI_WowlAddBcPtrnReq*/
4005
4006/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004007 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004008 wants to clear the Wowl Bcast ptrn. Upon the call of
4009 this API the WLAN DAL will pack and send a HAL delete
4010 Wowl Bcast ptrn request message to the lower RIVA
4011 sub-system if DAL is in state STARTED.
4012
4013 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004014 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004015
4016 WDI_WowlAddBcPtrnReq must have been called.
4017
Jeff Johnsone7245742012-09-05 17:12:55 -07004018 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004019 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004020
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 wdiWowlDelBcPtrnCb: callback for passing back the
4022 response of the del Wowl bcast ptrn operation received
4023 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004024
Jeff Johnson295189b2012-06-20 16:38:30 -07004025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004026 callback
4027
Jeff Johnson295189b2012-06-20 16:38:30 -07004028 @see WDI_WowlAddBcPtrnReq
4029 @return Result of the function call
4030*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004031WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004032WDI_WowlDelBcPtrnReq
4033(
4034 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4035 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4036 void* pUserData
4037)
4038{
4039 WDI_EventInfoType wdiEventData;
4040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4041
4042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004044 ------------------------------------------------------------------------*/
4045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4046 {
4047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4048 "WDI API call before module is initialized - Fail request");
4049
Jeff Johnsone7245742012-09-05 17:12:55 -07004050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004051 }
4052
4053 /*------------------------------------------------------------------------
4054 Fill in Event data and post to the Main FSM
4055 ------------------------------------------------------------------------*/
4056 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004057 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004058 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004060 wdiEventData.pUserData = pUserData;
4061
4062 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4063}/*WDI_WowlDelBcPtrnReq*/
4064
4065/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004066 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004067 wants to enter the Wowl state to minimize unnecessary
4068 host wakeup while in power save. Upon the call of this
4069 API the WLAN DAL will pack and send a HAL Wowl enter
4070 request message to the lower RIVA sub-system if DAL is
4071 in state STARTED.
4072
4073 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004074 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004075
4076 WDI_PostAssocReq must have been called.
4077
Jeff Johnsone7245742012-09-05 17:12:55 -07004078 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004079 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004080
Jeff Johnson295189b2012-06-20 16:38:30 -07004081 wdiWowlEnterReqCb: callback for passing back the
4082 response of the enter Wowl operation received from the
4083 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004084
Jeff Johnson295189b2012-06-20 16:38:30 -07004085 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 callback
4087
Jeff Johnson295189b2012-06-20 16:38:30 -07004088 @see WDI_PostAssocReq
4089 @return Result of the function call
4090*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004091WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004092WDI_WowlEnterReq
4093(
4094 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4095 WDI_WowlEnterReqCb wdiWowlEnterCb,
4096 void* pUserData
4097)
4098{
4099 WDI_EventInfoType wdiEventData;
4100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4101
4102 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004103 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004104 ------------------------------------------------------------------------*/
4105 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4106 {
4107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4108 "WDI API call before module is initialized - Fail request");
4109
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004111 }
4112
4113 /*------------------------------------------------------------------------
4114 Fill in Event data and post to the Main FSM
4115 ------------------------------------------------------------------------*/
4116 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004118 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 wdiEventData.pUserData = pUserData;
4121
4122 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4123}/*WDI_WowlEnterReq*/
4124
4125/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004126 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004127 wants to exit the Wowl state. Upon the call of this API
4128 the WLAN DAL will pack and send a HAL Wowl exit request
4129 message to the lower RIVA sub-system if DAL is in state
4130 STARTED.
4131
4132 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004133 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004134
4135 WDI_WowlEnterReq must have been called.
4136
Jeff Johnsone7245742012-09-05 17:12:55 -07004137 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004138 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004139
Jeff Johnson295189b2012-06-20 16:38:30 -07004140 wdiWowlExitReqCb: callback for passing back the response
4141 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004142
Jeff Johnson295189b2012-06-20 16:38:30 -07004143 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004144 callback
4145
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 @see WDI_WowlEnterReq
4147 @return Result of the function call
4148*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004149WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004150WDI_WowlExitReq
4151(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004152 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004153 WDI_WowlExitReqCb wdiWowlExitCb,
4154 void* pUserData
4155)
4156{
4157 WDI_EventInfoType wdiEventData;
4158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4159
4160 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004162 ------------------------------------------------------------------------*/
4163 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4164 {
4165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4166 "WDI API call before module is initialized - Fail request");
4167
Jeff Johnsone7245742012-09-05 17:12:55 -07004168 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004169 }
4170
4171 /*------------------------------------------------------------------------
4172 Fill in Event data and post to the Main FSM
4173 ------------------------------------------------------------------------*/
4174 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004175 wdiEventData.pEventData = pwdiWowlExitParams;
4176 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004177 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004178 wdiEventData.pUserData = pUserData;
4179
4180 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4181}/*WDI_WowlExitReq*/
4182
4183/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004184 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 the upper MAC wants to dynamically adjusts the listen
4186 interval based on the WLAN/MSM activity. Upon the call
4187 of this API the WLAN DAL will pack and send a HAL
4188 configure Apps Cpu Wakeup State request message to the
4189 lower RIVA sub-system.
4190
4191 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004192 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004193
Jeff Johnsone7245742012-09-05 17:12:55 -07004194
4195 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004196 Apps Cpu Wakeup State as specified by the
4197 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004198
Jeff Johnson295189b2012-06-20 16:38:30 -07004199 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4200 back the response of the configure Apps Cpu Wakeup State
4201 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004202
Jeff Johnson295189b2012-06-20 16:38:30 -07004203 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004204 callback
4205
Jeff Johnson295189b2012-06-20 16:38:30 -07004206 @return Result of the function call
4207*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004208WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004209WDI_ConfigureAppsCpuWakeupStateReq
4210(
4211 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4212 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4213 void* pUserData
4214)
4215{
4216 WDI_EventInfoType wdiEventData;
4217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4218
4219 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004220 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004221 ------------------------------------------------------------------------*/
4222 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4223 {
4224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4225 "WDI API call before module is initialized - Fail request");
4226
Jeff Johnsone7245742012-09-05 17:12:55 -07004227 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004228 }
4229
4230 /*------------------------------------------------------------------------
4231 Fill in Event data and post to the Main FSM
4232 ------------------------------------------------------------------------*/
4233 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004234 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4235 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4236 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004237 wdiEventData.pUserData = pUserData;
4238
4239 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4240}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4241/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004242 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004243 to to perform a flush operation on a given AC. Upon the
4244 call of this API the WLAN DAL will pack and send a HAL
4245 Flush AC request message to the lower RIVA sub-system if
4246 DAL is in state STARTED.
4247
4248 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004249 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004250
4251 WDI_AddBAReq must have been called.
4252
Jeff Johnsone7245742012-09-05 17:12:55 -07004253 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004254 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004255
Jeff Johnson295189b2012-06-20 16:38:30 -07004256 wdiFlushAcRspCb: callback for passing back the response
4257 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004258
Jeff Johnson295189b2012-06-20 16:38:30 -07004259 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004260 callback
4261
Jeff Johnson295189b2012-06-20 16:38:30 -07004262 @see WDI_AddBAReq
4263 @return Result of the function call
4264*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004265WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004266WDI_FlushAcReq
4267(
4268 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4269 WDI_FlushAcRspCb wdiFlushAcRspCb,
4270 void* pUserData
4271)
4272{
4273 WDI_EventInfoType wdiEventData;
4274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4275
4276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004277 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004278 ------------------------------------------------------------------------*/
4279 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4280 {
4281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4282 "WDI API call before module is initialized - Fail request");
4283
Jeff Johnsone7245742012-09-05 17:12:55 -07004284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004285 }
4286
4287 /*------------------------------------------------------------------------
4288 Fill in Event data and post to the Main FSM
4289 ------------------------------------------------------------------------*/
4290 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004291 wdiEventData.pEventData = pwdiFlushAcReqParams;
4292 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4293 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 wdiEventData.pUserData = pUserData;
4295
4296 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4297
4298}/*WDI_FlushAcReq*/
4299
4300/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004301 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004302 wants to notify the lower mac on a BT AMP event. This is
4303 to inform BTC-SLM that some BT AMP event occurred. Upon
4304 the call of this API the WLAN DAL will pack and send a
4305 HAL BT AMP event request message to the lower RIVA
4306 sub-system if DAL is in state STARTED.
4307
4308 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004309 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004310
Jeff Johnsone7245742012-09-05 17:12:55 -07004311
4312 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004313 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004314
Jeff Johnson295189b2012-06-20 16:38:30 -07004315 wdiBtAmpEventRspCb: callback for passing back the
4316 response of the BT AMP event operation received from the
4317 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004318
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004320 callback
4321
Jeff Johnson295189b2012-06-20 16:38:30 -07004322 @return Result of the function call
4323*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004324WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004325WDI_BtAmpEventReq
4326(
4327 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4328 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4329 void* pUserData
4330)
4331{
4332 WDI_EventInfoType wdiEventData;
4333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4334
4335 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004336 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004337 ------------------------------------------------------------------------*/
4338 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4339 {
4340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4341 "WDI API call before module is initialized - Fail request");
4342
Jeff Johnsone7245742012-09-05 17:12:55 -07004343 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004344 }
4345
4346 /*------------------------------------------------------------------------
4347 Fill in Event data and post to the Main FSM
4348 ------------------------------------------------------------------------*/
4349 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4351 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4352 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004353 wdiEventData.pUserData = pUserData;
4354
4355 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4356
4357}/*WDI_BtAmpEventReq*/
4358
Jeff Johnsone7245742012-09-05 17:12:55 -07004359#ifdef FEATURE_OEM_DATA_SUPPORT
4360/**
4361 @brief WDI_Start Oem Data Req will be called when the upper MAC
4362 wants to notify the lower mac on a oem data Req event.Upon
4363 the call of this API the WLAN DAL will pack and send a
4364 HAL OEM Data Req event request message to the lower RIVA
4365 sub-system if DAL is in state STARTED.
4366
4367 In state BUSY this request will be queued. Request won't
4368 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004369
4370
Jeff Johnsone7245742012-09-05 17:12:55 -07004371
4372 @param pwdiOemDataReqParams: the Oem Data Req as
4373 specified by the Device Interface
4374
4375 wdiStartOemDataRspCb: callback for passing back the
4376 response of the Oem Data Req received from the
4377 device
4378
4379 pUserData: user data will be passed back with the
4380 callback
4381
4382 @return Result of the function call
4383*/
4384WDI_Status
4385WDI_StartOemDataReq
4386(
4387 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4388 WDI_oemDataRspCb wdiOemDataRspCb,
4389 void* pUserData
4390)
4391{
4392 WDI_EventInfoType wdiEventData;
4393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4394
4395 /*------------------------------------------------------------------------
4396 Sanity Check
4397 ------------------------------------------------------------------------*/
4398 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4399 {
4400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4401 "WDI API call before module is initialized - Fail request");
4402
4403 return WDI_STATUS_E_NOT_ALLOWED;
4404 }
4405
4406 /*------------------------------------------------------------------------
4407 Fill in Event data and post to the Main FSM
4408 ------------------------------------------------------------------------*/
4409 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4410 wdiEventData.pEventData = pwdiOemDataReqParams;
4411 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4412 wdiEventData.pCBfnc = wdiOemDataRspCb;
4413 wdiEventData.pUserData = pUserData;
4414
4415 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4416
4417
4418}
4419
4420#endif
4421
4422
4423/*========================================================================
4424
Jeff Johnson295189b2012-06-20 16:38:30 -07004425 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004426
Jeff Johnson295189b2012-06-20 16:38:30 -07004427==========================================================================*/
4428/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004429 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004430 the WLAN HW to change the current channel of operation.
4431 Upon the call of this API the WLAN DAL will pack and
4432 send a HAL Start request message to the lower RIVA
4433 sub-system if DAL is in state STARTED.
4434
4435 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004436 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004437
4438 WDI_Start must have been called.
4439
Jeff Johnsone7245742012-09-05 17:12:55 -07004440 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004441 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004442
Jeff Johnson295189b2012-06-20 16:38:30 -07004443 wdiSwitchChRspCb: callback for passing back the response
4444 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004445
Jeff Johnson295189b2012-06-20 16:38:30 -07004446 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004447 callback
4448
Jeff Johnson295189b2012-06-20 16:38:30 -07004449 @see WDI_Start
4450 @return Result of the function call
4451*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004452WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004453WDI_SwitchChReq
4454(
4455 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4456 WDI_SwitchChRspCb wdiSwitchChRspCb,
4457 void* pUserData
4458)
4459{
4460 WDI_EventInfoType wdiEventData;
4461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4462
4463 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004464 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004465 ------------------------------------------------------------------------*/
4466 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4467 {
4468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4469 "WDI API call before module is initialized - Fail request");
4470
Jeff Johnsone7245742012-09-05 17:12:55 -07004471 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004472 }
4473
4474 /*------------------------------------------------------------------------
4475 Fill in Event data and post to the Main FSM
4476 ------------------------------------------------------------------------*/
4477 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004478 wdiEventData.pEventData = pwdiSwitchChReqParams;
4479 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4480 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004481 wdiEventData.pUserData = pUserData;
4482
4483 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4484
4485}/*WDI_SwitchChReq*/
4486
4487
4488/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004489 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004490 wishes to add or update a STA in HW. Upon the call of
4491 this API the WLAN DAL will pack and send a HAL Start
4492 message request message to the lower RIVA sub-system if
4493 DAL is in state STARTED.
4494
4495 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004496 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004497
4498 WDI_Start must have been called.
4499
Jeff Johnsone7245742012-09-05 17:12:55 -07004500 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004501 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004502
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 wdiConfigSTARspCb: callback for passing back the
4504 response of the config STA operation received from the
4505 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004506
Jeff Johnson295189b2012-06-20 16:38:30 -07004507 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004508 callback
4509
Jeff Johnson295189b2012-06-20 16:38:30 -07004510 @see WDI_Start
4511 @return Result of the function call
4512*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004513WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004514WDI_ConfigSTAReq
4515(
4516 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4517 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4518 void* pUserData
4519)
4520{
4521 WDI_EventInfoType wdiEventData;
4522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4523
4524 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004525 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004526 ------------------------------------------------------------------------*/
4527 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4528 {
4529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4530 "WDI API call before module is initialized - Fail request");
4531
Jeff Johnsone7245742012-09-05 17:12:55 -07004532 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004533 }
4534
4535 /*------------------------------------------------------------------------
4536 Fill in Event data and post to the Main FSM
4537 ------------------------------------------------------------------------*/
4538 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004539 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4540 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4541 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004542 wdiEventData.pUserData = pUserData;
4543
4544 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4545
4546}/*WDI_ConfigSTAReq*/
4547
4548/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004549 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004550 wants to change the state of an ongoing link. Upon the
4551 call of this API the WLAN DAL will pack and send a HAL
4552 Start message request message to the lower RIVA
4553 sub-system if DAL is in state STARTED.
4554
4555 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004556 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004557
4558 WDI_JoinStartReq must have been called.
4559
Jeff Johnsone7245742012-09-05 17:12:55 -07004560 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004561 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004562
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 wdiSetLinkStateRspCb: callback for passing back the
4564 response of the set link state operation received from
4565 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004566
Jeff Johnson295189b2012-06-20 16:38:30 -07004567 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004568 callback
4569
Jeff Johnson295189b2012-06-20 16:38:30 -07004570 @see WDI_JoinStartReq
4571 @return Result of the function call
4572*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004573WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004574WDI_SetLinkStateReq
4575(
4576 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4577 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4578 void* pUserData
4579)
4580{
4581 WDI_EventInfoType wdiEventData;
4582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4583
4584 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004585 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004586 ------------------------------------------------------------------------*/
4587 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4588 {
4589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4590 "WDI API call before module is initialized - Fail request");
4591
Jeff Johnsone7245742012-09-05 17:12:55 -07004592 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004593 }
4594
4595 /*------------------------------------------------------------------------
4596 Fill in Event data and post to the Main FSM
4597 ------------------------------------------------------------------------*/
4598 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004599 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4600 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4601 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004602 wdiEventData.pUserData = pUserData;
4603
4604 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4605
4606}/*WDI_SetLinkStateReq*/
4607
4608
4609/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004610 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004611 to get statistics (MIB counters) from the device. Upon
4612 the call of this API the WLAN DAL will pack and send a
4613 HAL Start request message to the lower RIVA sub-system
4614 if DAL is in state STARTED.
4615
4616 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004617 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004618
4619 WDI_Start must have been called.
4620
Jeff Johnsone7245742012-09-05 17:12:55 -07004621 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004622 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004623
Jeff Johnson295189b2012-06-20 16:38:30 -07004624 wdiGetStatsRspCb: callback for passing back the response
4625 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004626
Jeff Johnson295189b2012-06-20 16:38:30 -07004627 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004628 callback
4629
Jeff Johnson295189b2012-06-20 16:38:30 -07004630 @see WDI_Start
4631 @return Result of the function call
4632*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004633WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004634WDI_GetStatsReq
4635(
4636 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4637 WDI_GetStatsRspCb wdiGetStatsRspCb,
4638 void* pUserData
4639)
4640{
4641 WDI_EventInfoType wdiEventData;
4642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4643
4644 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004645 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004646 ------------------------------------------------------------------------*/
4647 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4648 {
4649 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4650 "WDI API call before module is initialized - Fail request");
4651
Jeff Johnsone7245742012-09-05 17:12:55 -07004652 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004653 }
4654
4655 /*------------------------------------------------------------------------
4656 Fill in Event data and post to the Main FSM
4657 ------------------------------------------------------------------------*/
4658 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004659 wdiEventData.pEventData = pwdiGetStatsReqParams;
4660 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4661 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004662 wdiEventData.pUserData = pUserData;
4663
4664 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4665
4666}/*WDI_GetStatsReq*/
4667
4668
4669/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004671 it wishes to change the configuration of the WLAN
4672 Device. Upon the call of this API the WLAN DAL will pack
4673 and send a HAL Update CFG request message to the lower
4674 RIVA sub-system if DAL is in state STARTED.
4675
4676 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004677 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004678
4679 WDI_Start must have been called.
4680
Jeff Johnsone7245742012-09-05 17:12:55 -07004681 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004682 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004683
Jeff Johnson295189b2012-06-20 16:38:30 -07004684 wdiUpdateCfgsRspCb: callback for passing back the
4685 response of the update cfg operation received from the
4686 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004687
Jeff Johnson295189b2012-06-20 16:38:30 -07004688 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004689 callback
4690
Jeff Johnson295189b2012-06-20 16:38:30 -07004691 @see WDI_Start
4692 @return Result of the function call
4693*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004694WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004695WDI_UpdateCfgReq
4696(
4697 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4698 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4699 void* pUserData
4700)
4701{
4702 WDI_EventInfoType wdiEventData;
4703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4704
4705 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004706 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004707 ------------------------------------------------------------------------*/
4708 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4709 {
4710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4711 "WDI API call before module is initialized - Fail request");
4712
Jeff Johnsone7245742012-09-05 17:12:55 -07004713 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004714 }
4715
4716 /*------------------------------------------------------------------------
4717 Fill in Event data and post to the Main FSM
4718 ------------------------------------------------------------------------*/
4719 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004720 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4721 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4722 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004723 wdiEventData.pUserData = pUserData;
4724
4725 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4726
4727}/*WDI_UpdateCfgReq*/
4728
4729
4730
4731/**
4732 @brief WDI_AddBAReq will be called when the upper MAC has setup
4733 successfully a BA session and needs to notify the HW for
4734 the appropriate settings to take place. Upon the call of
4735 this API the WLAN DAL will pack and send a HAL Add BA
4736 request message to the lower RIVA sub-system if DAL is
4737 in state STARTED.
4738
4739 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004740 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004741
4742 WDI_PostAssocReq must have been called.
4743
4744 @param wdiAddBAReqParams: the add BA parameters as specified by
4745 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004746
Jeff Johnson295189b2012-06-20 16:38:30 -07004747 wdiAddBARspCb: callback for passing back the response of
4748 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004749
Jeff Johnson295189b2012-06-20 16:38:30 -07004750 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004751 callback
4752
Jeff Johnson295189b2012-06-20 16:38:30 -07004753 @see WDI_PostAssocReq
4754 @return Result of the function call
4755*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004756WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004757WDI_AddBAReq
4758(
4759 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4760 WDI_AddBARspCb wdiAddBARspCb,
4761 void* pUserData
4762)
4763{
4764 WDI_EventInfoType wdiEventData;
4765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4766
4767 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004768 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004769 ------------------------------------------------------------------------*/
4770 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4771 {
4772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4773 "WDI API call before module is initialized - Fail request");
4774
Jeff Johnsone7245742012-09-05 17:12:55 -07004775 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004776 }
4777
4778 /*------------------------------------------------------------------------
4779 Fill in Event data and post to the Main FSM
4780 ------------------------------------------------------------------------*/
4781 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004782 wdiEventData.pEventData = pwdiAddBAReqParams;
4783 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4784 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 wdiEventData.pUserData = pUserData;
4786
4787 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4788
4789}/*WDI_AddBAReq*/
4790
4791
4792/**
4793 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4794 successfully a BA session and needs to notify the HW for
4795 the appropriate settings to take place. Upon the call of
4796 this API the WLAN DAL will pack and send a HAL Add BA
4797 request message to the lower RIVA sub-system if DAL is
4798 in state STARTED.
4799
4800 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004801 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004802
4803 WDI_PostAssocReq must have been called.
4804
4805 @param wdiAddBAReqParams: the add BA parameters as specified by
4806 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004807
Jeff Johnson295189b2012-06-20 16:38:30 -07004808 wdiAddBARspCb: callback for passing back the response of
4809 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004810
Jeff Johnson295189b2012-06-20 16:38:30 -07004811 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004812 callback
4813
Jeff Johnson295189b2012-06-20 16:38:30 -07004814 @see WDI_PostAssocReq
4815 @return Result of the function call
4816*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004817WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004818WDI_TriggerBAReq
4819(
4820 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4821 WDI_TriggerBARspCb wdiTriggerBARspCb,
4822 void* pUserData
4823)
4824{
4825 WDI_EventInfoType wdiEventData;
4826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4827
4828 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004829 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004830 ------------------------------------------------------------------------*/
4831 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4832 {
4833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4834 "WDI API call before module is initialized - Fail request");
4835
Jeff Johnsone7245742012-09-05 17:12:55 -07004836 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 }
4838
4839 /*------------------------------------------------------------------------
4840 Fill in Event data and post to the Main FSM
4841 ------------------------------------------------------------------------*/
4842 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004843 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4844 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4845 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004846 wdiEventData.pUserData = pUserData;
4847
4848 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4849
4850}/*WDI_AddBAReq*/
4851
4852/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004854 wishes to update any of the Beacon parameters used by HW.
4855 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4856 message to the lower RIVA sub-system if DAL is in state
4857 STARTED.
4858
4859 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004860 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004861
4862 WDI_PostAssocReq must have been called.
4863
Jeff Johnsone7245742012-09-05 17:12:55 -07004864 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004865 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004866
Jeff Johnson295189b2012-06-20 16:38:30 -07004867 wdiUpdateBeaconParamsRspCb: callback for passing back the
4868 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004869
Jeff Johnson295189b2012-06-20 16:38:30 -07004870 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004871 callback
4872
Jeff Johnson295189b2012-06-20 16:38:30 -07004873 @see WDI_PostAssocReq
4874 @return Result of the function call
4875*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004876WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004877WDI_UpdateBeaconParamsReq
4878(
4879 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4880 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4881 void* pUserData
4882)
4883{
4884 WDI_EventInfoType wdiEventData;
4885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4886
4887 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004888 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004889 ------------------------------------------------------------------------*/
4890 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4891 {
4892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4893 "WDI API call before module is initialized - Fail request");
4894
Jeff Johnsone7245742012-09-05 17:12:55 -07004895 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004896 }
4897
4898 /*------------------------------------------------------------------------
4899 Fill in Event data and post to the Main FSM
4900 ------------------------------------------------------------------------*/
4901 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004902 wdiEventData.pEventData = pwdiUpdateBeaconParams;
4903 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
4904 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 wdiEventData.pUserData = pUserData;
4906
4907 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4908
4909}/*WDI_UpdateBeaconParamsReq*/
4910
4911/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004912 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004913 wishes to update the Beacon template used by HW.
4914 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
4915 message to the lower RIVA sub-system if DAL is in state
4916 STARTED.
4917
4918 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004919 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004920
4921 WDI_PostAssocReq must have been called.
4922
Jeff Johnsone7245742012-09-05 17:12:55 -07004923 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004924 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004925
Jeff Johnson295189b2012-06-20 16:38:30 -07004926 wdiSendBeaconParamsRspCb: callback for passing back the
4927 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004928
Jeff Johnson295189b2012-06-20 16:38:30 -07004929 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004930 callback
4931
Jeff Johnson295189b2012-06-20 16:38:30 -07004932 @see WDI_PostAssocReq
4933 @return Result of the function call
4934*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004935WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004936WDI_SendBeaconParamsReq
4937(
4938 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
4939 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
4940 void* pUserData
4941)
4942{
4943 WDI_EventInfoType wdiEventData;
4944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4945
4946 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004947 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004948 ------------------------------------------------------------------------*/
4949 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4950 {
4951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4952 "WDI API call before module is initialized - Fail request");
4953
Jeff Johnsone7245742012-09-05 17:12:55 -07004954 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004955 }
4956
4957 /*------------------------------------------------------------------------
4958 Fill in Event data and post to the Main FSM
4959 ------------------------------------------------------------------------*/
4960 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 wdiEventData.pEventData = pwdiSendBeaconParams;
4962 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
4963 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004964 wdiEventData.pUserData = pUserData;
4965
4966 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4967
4968}/*WDI_SendBeaconParamsReq*/
4969
4970/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004971 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07004972 upper MAC wants to update the probe response template to
4973 be transmitted as Soft AP
4974 Upon the call of this API the WLAN DAL will
4975 pack and send the probe rsp template message to the
4976 lower RIVA sub-system if DAL is in state STARTED.
4977
4978 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004979 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004980
4981
Jeff Johnsone7245742012-09-05 17:12:55 -07004982 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004983 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004984
Jeff Johnson295189b2012-06-20 16:38:30 -07004985 wdiSendBeaconParamsRspCb: callback for passing back the
4986 response of the Send Beacon Params operation received
4987 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004988
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004990 callback
4991
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 @see WDI_AddBAReq
4993 @return Result of the function call
4994*/
4995
Jeff Johnsone7245742012-09-05 17:12:55 -07004996WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004997WDI_UpdateProbeRspTemplateReq
4998(
4999 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5000 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5001 void* pUserData
5002)
5003{
5004 WDI_EventInfoType wdiEventData;
5005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5006
5007 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005008 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005009 ------------------------------------------------------------------------*/
5010 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5011 {
5012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5013 "WDI API call before module is initialized - Fail request");
5014
Jeff Johnsone7245742012-09-05 17:12:55 -07005015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005016 }
5017
5018 /*------------------------------------------------------------------------
5019 Fill in Event data and post to the Main FSM
5020 ------------------------------------------------------------------------*/
5021 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005022 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5023 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5024 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005025 wdiEventData.pUserData = pUserData;
5026
5027 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5028
5029}/*WDI_UpdateProbeRspTemplateReq*/
5030
5031/**
5032 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5033 to the NV memory.
5034
5035
5036 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5037 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005038
Jeff Johnson295189b2012-06-20 16:38:30 -07005039 wdiNvDownloadRspCb: callback for passing back the response of
5040 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005041
Jeff Johnson295189b2012-06-20 16:38:30 -07005042 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005043 callback
5044
Jeff Johnson295189b2012-06-20 16:38:30 -07005045 @see WDI_PostAssocReq
5046 @return Result of the function call
5047*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005048WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005049WDI_NvDownloadReq
5050(
5051 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5052 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5053 void* pUserData
5054)
5055{
5056 WDI_EventInfoType wdiEventData;
5057
5058 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005059 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005060 ------------------------------------------------------------------------*/
5061 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5062 {
5063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5064 "WDI API call before module is initialized - Fail request");
5065
Jeff Johnsone7245742012-09-05 17:12:55 -07005066 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005067 }
5068
5069 /*------------------------------------------------------------------------
5070 Fill in Event data and post to the Main FSM
5071 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005072 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5073 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5074 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5075 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005076 wdiEventData.pUserData = pUserData;
5077
5078 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5079
5080}/*WDI_NVDownloadReq*/
5081
5082#ifdef WLAN_FEATURE_P2P
5083/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005085 upper MAC wants to send Notice of Absence
5086 Upon the call of this API the WLAN DAL will
5087 pack and send the probe rsp template message to the
5088 lower RIVA sub-system if DAL is in state STARTED.
5089
5090 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005091 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005092
5093
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005095 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005096
Jeff Johnson295189b2012-06-20 16:38:30 -07005097 wdiSendBeaconParamsRspCb: callback for passing back the
5098 response of the Send Beacon Params operation received
5099 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005100
Jeff Johnson295189b2012-06-20 16:38:30 -07005101 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 callback
5103
Jeff Johnson295189b2012-06-20 16:38:30 -07005104 @see WDI_AddBAReq
5105 @return Result of the function call
5106*/
5107WDI_Status
5108WDI_SetP2PGONOAReq
5109(
5110 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5111 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5112 void* pUserData
5113)
5114{
5115 WDI_EventInfoType wdiEventData;
5116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5117
5118 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005119 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005120 ------------------------------------------------------------------------*/
5121 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5122 {
5123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5124 "WDI API call before module is initialized - Fail request");
5125
Jeff Johnsone7245742012-09-05 17:12:55 -07005126 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005127 }
5128
5129 /*------------------------------------------------------------------------
5130 Fill in Event data and post to the Main FSM
5131 ------------------------------------------------------------------------*/
5132 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005133 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5134 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5135 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005136 wdiEventData.pUserData = pUserData;
5137
5138 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5139
5140}/*WDI_SetP2PGONOAReq*/
5141#endif
5142
5143/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005144 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005145 UMAC wanted to add STA self while opening any new session
5146 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005147 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005148
5149
Jeff Johnsone7245742012-09-05 17:12:55 -07005150 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005151 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005152
Jeff Johnson295189b2012-06-20 16:38:30 -07005153 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005154 callback
5155
5156 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005157 @return Result of the function call
5158*/
5159WDI_Status
5160WDI_AddSTASelfReq
5161(
5162 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5163 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5164 void* pUserData
5165)
5166{
5167 WDI_EventInfoType wdiEventData;
5168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5169
5170 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005171 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 ------------------------------------------------------------------------*/
5173 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5174 {
5175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5176 "WDI API call before module is initialized - Fail request");
5177
Jeff Johnsone7245742012-09-05 17:12:55 -07005178 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005179 }
5180
5181 /*------------------------------------------------------------------------
5182 Fill in Event data and post to the Main FSM
5183 ------------------------------------------------------------------------*/
5184 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005185 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5186 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5187 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005188 wdiEventData.pUserData = pUserData;
5189
5190 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5191
5192}/*WDI_AddSTASelfReq*/
5193
5194
Jeff Johnsone7245742012-09-05 17:12:55 -07005195#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005196/**
5197 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5198 the device of a successful add TSpec negotiation. HW
5199 needs to receive the TSpec Info from the UMAC in order
5200 to configure properly the QoS data traffic. Upon the
5201 call of this API the WLAN DAL will pack and send a HAL
5202 Add TS request message to the lower RIVA sub-system if
5203 DAL is in state STARTED.
5204
5205 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005206 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005207
5208 WDI_PostAssocReq must have been called.
5209
5210 @param wdiAddTsReqParams: the add TS parameters as specified by
5211 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005212
Jeff Johnson295189b2012-06-20 16:38:30 -07005213 wdiAddTsRspCb: callback for passing back the response of
5214 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005215
Jeff Johnson295189b2012-06-20 16:38:30 -07005216 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005217 callback
5218
Jeff Johnson295189b2012-06-20 16:38:30 -07005219 @see WDI_PostAssocReq
5220 @return Result of the function call
5221*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005222WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005223WDI_AggrAddTSReq
5224(
5225 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5226 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5227 void* pUserData
5228)
5229{
5230 WDI_EventInfoType wdiEventData;
5231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5232
5233 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005234 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005235 ------------------------------------------------------------------------*/
5236 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5237 {
5238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5239 "WDI API call before module is initialized - Fail request");
5240
Jeff Johnsone7245742012-09-05 17:12:55 -07005241 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005242 }
5243
5244 /*------------------------------------------------------------------------
5245 Fill in Event data and post to the Main FSM
5246 ------------------------------------------------------------------------*/
5247 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005248 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5249 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5250 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005251 wdiEventData.pUserData = pUserData;
5252
5253 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5254
5255}/*WDI_AggrAddTSReq*/
5256
5257#endif /* WLAN_FEATURE_VOWIFI_11R */
5258
5259#ifdef ANI_MANF_DIAG
5260/**
5261 @brief WDI_FTMCommandReq
5262 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005263
5264 @param ftmCommandReq: FTM Command Body
5265 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005266 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005267
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 @see
5269 @return Result of the function call
5270*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005271WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005272WDI_FTMCommandReq
5273(
5274 WDI_FTMCommandReqType *ftmCommandReq,
5275 WDI_FTMCommandRspCb ftmCommandRspCb,
5276 void *pUserData
5277)
5278{
5279 WDI_EventInfoType wdiEventData;
5280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5281
5282 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005283 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005284 ------------------------------------------------------------------------*/
5285 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5286 {
5287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5288 "WDI API call before module is initialized - Fail request");
5289
Jeff Johnsone7245742012-09-05 17:12:55 -07005290 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005291 }
5292
5293 /*------------------------------------------------------------------------
5294 Fill in Event data and post to the Main FSM
5295 ------------------------------------------------------------------------*/
5296 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5297 wdiEventData.pEventData = (void *)ftmCommandReq;
5298 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5299 wdiEventData.pCBfnc = ftmCommandRspCb;
5300 wdiEventData.pUserData = pUserData;
5301
5302 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5303}
Jeff Johnsone7245742012-09-05 17:12:55 -07005304#endif /* ANI_MANF_DIAG */
Jeff Johnson295189b2012-06-20 16:38:30 -07005305/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005306 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005307
5308 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005310
5311
5312 @param pwdiResumeReqParams: as specified by
5313 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005314
Jeff Johnson295189b2012-06-20 16:38:30 -07005315 wdiResumeReqRspCb: callback for passing back the response of
5316 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005317
Jeff Johnson295189b2012-06-20 16:38:30 -07005318 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005319 callback
5320
5321 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005322 @return Result of the function call
5323*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005324WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005325WDI_HostResumeReq
5326(
5327 WDI_ResumeParamsType* pwdiResumeReqParams,
5328 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5329 void* pUserData
5330)
5331{
5332 WDI_EventInfoType wdiEventData;
5333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5334
5335 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005336 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005337 ------------------------------------------------------------------------*/
5338 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5339 {
5340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5341 "WDI API call before module is initialized - Fail request");
5342
Jeff Johnsone7245742012-09-05 17:12:55 -07005343 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005344 }
5345
5346 /*------------------------------------------------------------------------
5347 Fill in Event data and post to the Main FSM
5348 ------------------------------------------------------------------------*/
5349 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005350 wdiEventData.pEventData = pwdiResumeReqParams;
5351 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5352 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005353 wdiEventData.pUserData = pUserData;
5354
5355 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5356
5357}/*WDI_HostResumeReq*/
5358
5359/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005360 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005361
5362 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005364
5365
5366 @param pwdiDelStaSelfReqParams: as specified by
5367 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005368
Jeff Johnson295189b2012-06-20 16:38:30 -07005369 wdiDelStaSelfRspCb: callback for passing back the response of
5370 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005371
Jeff Johnson295189b2012-06-20 16:38:30 -07005372 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005373 callback
5374
Jeff Johnson295189b2012-06-20 16:38:30 -07005375 @see WDI_PostAssocReq
5376 @return Result of the function call
5377*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005378WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005379WDI_DelSTASelfReq
5380(
5381 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5382 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5383 void* pUserData
5384)
5385{
5386 WDI_EventInfoType wdiEventData;
5387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5388
5389 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005390 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005391 ------------------------------------------------------------------------*/
5392 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5393 {
5394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5395 "WDI API call before module is initialized - Fail request");
5396
Jeff Johnsone7245742012-09-05 17:12:55 -07005397 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005398 }
5399
5400 /*------------------------------------------------------------------------
5401 Fill in Event data and post to the Main FSM
5402 ------------------------------------------------------------------------*/
5403 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005404 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5405 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5406 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005407 wdiEventData.pUserData = pUserData;
5408
5409 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5410
5411}/*WDI_AggrAddTSReq*/
5412
5413/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005414 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5415 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005416 Upon the call of this API the WLAN DAL will pack
5417 and send a HAL Set Tx Per Tracking request message to the
5418 lower RIVA sub-system if DAL is in state STARTED.
5419
5420 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005421 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005422
Jeff Johnsone7245742012-09-05 17:12:55 -07005423 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005424 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005425
Jeff Johnson295189b2012-06-20 16:38:30 -07005426 pwdiSetTxPerTrackingRspCb: callback for passing back the
5427 response of the set Tx PER Tracking configurations operation received
5428 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005429
Jeff Johnson295189b2012-06-20 16:38:30 -07005430 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005431 callback
5432
Jeff Johnson295189b2012-06-20 16:38:30 -07005433 @return Result of the function call
5434*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005435WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005436WDI_SetTxPerTrackingReq
5437(
5438 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5439 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5440 void* pUserData
5441)
5442{
5443 WDI_EventInfoType wdiEventData;
5444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5445
5446 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005447 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005448 ------------------------------------------------------------------------*/
5449 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5450 {
5451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5452 "WDI API call before module is initialized - Fail request");
5453
Jeff Johnsone7245742012-09-05 17:12:55 -07005454 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 }
5456
5457 /*------------------------------------------------------------------------
5458 Fill in Event data and post to the Main FSM
5459 ------------------------------------------------------------------------*/
5460 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005463 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005464 wdiEventData.pUserData = pUserData;
5465
5466 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5467
5468}/*WDI_SetTxPerTrackingReq*/
5469
5470/**
5471 @brief WDI_SetTmLevelReq
5472 If HW Thermal condition changed, driver should react based on new
5473 HW thermal condition.
5474
5475 @param pwdiSetTmLevelReq: New thermal condition information
5476
5477 pwdiSetTmLevelRspCb: callback
5478
5479 usrData: user data will be passed back with the
5480 callback
5481
5482 @return Result of the function call
5483*/
5484WDI_Status
5485WDI_SetTmLevelReq
5486(
5487 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5488 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5489 void *usrData
5490)
5491{
5492 WDI_EventInfoType wdiEventData;
5493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5494
5495 /*------------------------------------------------------------------------
5496 Sanity Check
5497 ------------------------------------------------------------------------*/
5498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5499 {
5500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5501 "WDI API call before module is initialized - Fail request");
5502
5503 return WDI_STATUS_E_NOT_ALLOWED;
5504 }
5505
5506 /*------------------------------------------------------------------------
5507 Fill in Event data and post to the Main FSM
5508 ------------------------------------------------------------------------*/
5509 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5510 wdiEventData.pEventData = pwdiSetTmLevelReq;
5511 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5512 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5513 wdiEventData.pUserData = usrData;
5514
5515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5516}
5517
5518/**
5519 @brief WDI_HostSuspendInd
5520
5521 Suspend Indication from the upper layer will be sent
5522 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005523
Jeff Johnson295189b2012-06-20 16:38:30 -07005524 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005525
5526 @see
5527
Jeff Johnson295189b2012-06-20 16:38:30 -07005528 @return Status of the request
5529*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005530WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005531WDI_HostSuspendInd
5532(
5533 WDI_SuspendParamsType* pwdiSuspendIndParams
5534)
5535{
5536
5537 WDI_EventInfoType wdiEventData;
5538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5539
5540 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005541 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005542 ------------------------------------------------------------------------*/
5543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5544 {
5545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5546 "WDI API call before module is initialized - Fail request");
5547
Jeff Johnsone7245742012-09-05 17:12:55 -07005548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005549 }
5550
5551 /*------------------------------------------------------------------------
5552 Fill in Event data and post to the Main FSM
5553 ------------------------------------------------------------------------*/
5554 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005555 wdiEventData.pEventData = pwdiSuspendIndParams;
5556 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5557 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005558 wdiEventData.pUserData = NULL;
5559
5560 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5561
5562}/*WDI_HostSuspendInd*/
5563
5564/**
5565 @brief WDI_HALDumpCmdReq
5566 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005567
5568 @param halDumpCmdReqParams: Hal Dump Command Body
5569 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005570 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005571
Jeff Johnson295189b2012-06-20 16:38:30 -07005572 @see
5573 @return Result of the function call
5574*/
5575WDI_Status WDI_HALDumpCmdReq
5576(
5577 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5578 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5579 void *pUserData
5580)
5581{
5582 WDI_EventInfoType wdiEventData;
5583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5584
5585 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005586 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005587 ------------------------------------------------------------------------*/
5588 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5589 {
5590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5591 "WDI API call before module is initialized - Fail request");
5592
Jeff Johnsone7245742012-09-05 17:12:55 -07005593 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005594 }
5595
5596 /*------------------------------------------------------------------------
5597 Fill in Event data and post to the Main FSM
5598 ------------------------------------------------------------------------*/
5599 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5600 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5601 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5602 wdiEventData.pCBfnc = halDumpCmdRspCb;
5603 wdiEventData.pUserData = pUserData;
5604
5605 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5606}
5607
Jeff Johnsone7245742012-09-05 17:12:55 -07005608/*============================================================================
5609
Jeff Johnson295189b2012-06-20 16:38:30 -07005610 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005611
Jeff Johnson295189b2012-06-20 16:38:30 -07005612 ============================================================================*/
5613
5614/**
5615 @brief Main FSM Start function for all states except BUSY
5616
Jeff Johnsone7245742012-09-05 17:12:55 -07005617
5618 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005619 wdiEV: event posted to the main DAL FSM
5620 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005621 structure
5622
Jeff Johnson295189b2012-06-20 16:38:30 -07005623 @see
5624 @return Result of the function call
5625*/
5626WDI_Status
5627WDI_PostMainEvent
5628(
Jeff Johnsone7245742012-09-05 17:12:55 -07005629 WDI_ControlBlockType* pWDICtx,
5630 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005631 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005632
Jeff Johnson295189b2012-06-20 16:38:30 -07005633)
5634{
Jeff Johnsone7245742012-09-05 17:12:55 -07005635 WDI_Status wdiStatus;
5636 WDI_MainFuncType pfnWDIMainEvHdlr;
5637 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5639
5640 /*-------------------------------------------------------------------------
5641 Sanity check
5642 -------------------------------------------------------------------------*/
5643 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5644 ( wdiEV >= WDI_MAX_EVENT ))
5645 {
5646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5647 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5648 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005649 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005650 }
5651
5652 /*Access to the global state must be locked */
5653 wpalMutexAcquire(&pWDICtx->wptMutex);
5654
5655 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005656 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005657
5658 wdiOldState = pWDICtx->uGlobalState;
5659
5660 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005661 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5662 response comes from CCPU for the request sent by host:
5663 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 -07005664 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 -07005665 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005666 CCPU:
5667 don't change the state */
5668 if ( WDI_RESPONSE_EVENT != wdiEV)
5669 {
5670 /*Transition to BUSY State - the request is now being processed by the FSM,
5671 if the request fails we shall transition back to the old state, if not
5672 the request will manage its own state transition*/
5673 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5674 }
5675 /* If the state function associated with the EV is NULL it means that this
5676 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005677 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 {
5679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005680 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005681 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005682 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005683 }
5684 else
5685 {
5686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005687 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005688 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005689 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005690 }
5691
5692 /* If a request handles itself well it will end up in a success or in a
5693 pending
5694 Success - means that the request was processed and the proper state
5695 transition already occurred or will occur when the resp is received
5696 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005697
Jeff Johnson295189b2012-06-20 16:38:30 -07005698 Pending - means the request could not be processed at this moment in time
5699 because the FSM was already busy so no state transition or dequeueing
5700 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005701
Jeff Johnson295189b2012-06-20 16:38:30 -07005702 Success for synchronous case means that the transition may occur and
5703 processing of pending requests may continue - so it should go through
5704 and restores the state and continue processing queued requests*/
5705 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5706 ( WDI_STATUS_PENDING != wdiStatus ))
5707 {
5708 if ( WDI_RESPONSE_EVENT != wdiEV)
5709 {
5710 /*The request has failed or could not be processed - transition back to
5711 the old state - check to see if anything was queued and try to execute
5712 The dequeue logic should post a message to a thread and return - no
5713 actual processing can occur */
5714 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5715 }
5716 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005717
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 }
5719
5720 /* we have completed processing the event */
5721 wpalMutexRelease(&pWDICtx->wptMutex);
5722
Jeff Johnsone7245742012-09-05 17:12:55 -07005723 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005724
5725}/*WDI_PostMainEvent*/
5726
5727
5728/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005729 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005730--------------------------------------------------------------------------*/
5731/**
5732 @brief Main FSM Start function for all states except BUSY
5733
Jeff Johnsone7245742012-09-05 17:12:55 -07005734
5735 @param pWDICtx: pointer to the WLAN DAL context
5736 pEventData: pointer to the event information structure
5737
Jeff Johnson295189b2012-06-20 16:38:30 -07005738 @see
5739 @return Result of the function call
5740*/
5741WDI_Status
5742WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005743(
Jeff Johnson295189b2012-06-20 16:38:30 -07005744 WDI_ControlBlockType* pWDICtx,
5745 WDI_EventInfoType* pEventData
5746)
5747{
5748
5749 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005750 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005751 ----------------------------------------------------------------------*/
5752 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5753 {
5754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005755 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 pWDICtx, pEventData);
5757 return WDI_STATUS_E_FAILURE;
5758 }
5759
5760 wpalMutexAcquire(&pWDICtx->wptMutex);
5761
5762 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005763 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005764 ----------------------------------------------------------------------*/
5765 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5766 {
5767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5768 "Control Transport not yet Open - queueing the request");
5769
5770 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005771 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005772
5773 wpalMutexRelease(&pWDICtx->wptMutex);
5774 return WDI_STATUS_PENDING;
5775 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005776
Jeff Johnson295189b2012-06-20 16:38:30 -07005777 wpalMutexRelease(&pWDICtx->wptMutex);
5778
5779 /*Return Success*/
5780 return WDI_ProcessRequest( pWDICtx, pEventData );
5781
5782}/*WDI_MainStart*/
5783
5784/**
5785 @brief Main FSM Response function for state INIT
5786
Jeff Johnsone7245742012-09-05 17:12:55 -07005787
5788 @param pWDICtx: pointer to the WLAN DAL context
5789 pEventData: pointer to the event information structure
5790
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 @see
5792 @return Result of the function call
5793*/
5794WDI_Status
5795WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005796(
Jeff Johnson295189b2012-06-20 16:38:30 -07005797 WDI_ControlBlockType* pWDICtx,
5798 WDI_EventInfoType* pEventData
5799)
5800{
5801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005802 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005803 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005804 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005805
5806 /*Return Success*/
5807 return WDI_STATUS_E_NOT_ALLOWED;
5808}/* WDI_MainRspInit */
5809
5810/**
5811 @brief Main FSM Close function for all states except BUSY
5812
Jeff Johnsone7245742012-09-05 17:12:55 -07005813
5814 @param pWDICtx: pointer to the WLAN DAL context
5815 pEventData: pointer to the event information structure
5816
Jeff Johnson295189b2012-06-20 16:38:30 -07005817 @see
5818 @return Result of the function call
5819*/
5820WDI_Status
5821WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005822(
Jeff Johnson295189b2012-06-20 16:38:30 -07005823 WDI_ControlBlockType* pWDICtx,
5824 WDI_EventInfoType* pEventData
5825)
5826{
5827
5828 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005829 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005830 ----------------------------------------------------------------------*/
5831 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5832 {
5833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005834 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005835 pWDICtx, pEventData);
5836 return WDI_STATUS_E_FAILURE;
5837 }
5838
5839 /*Return Success*/
5840 return WDI_ProcessRequest( pWDICtx, pEventData );
5841
5842}/*WDI_MainClose*/
5843/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005844 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005845--------------------------------------------------------------------------*/
5846/**
5847 @brief Main FSM Start function for state STARTED
5848
Jeff Johnsone7245742012-09-05 17:12:55 -07005849
5850 @param pWDICtx: pointer to the WLAN DAL context
5851 pEventData: pointer to the event information structure
5852
Jeff Johnson295189b2012-06-20 16:38:30 -07005853 @see
5854 @return Result of the function call
5855*/
5856WDI_Status
5857WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005858(
Jeff Johnson295189b2012-06-20 16:38:30 -07005859 WDI_ControlBlockType* pWDICtx,
5860 WDI_EventInfoType* pEventData
5861)
5862{
5863 WDI_StartRspCb wdiStartRspCb = NULL;
5864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5865
5866 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005867 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 ----------------------------------------------------------------------*/
5869 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5870 {
5871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005872 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005873 pWDICtx, pEventData);
5874 return WDI_STATUS_E_FAILURE;
5875 }
5876
5877 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005878 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07005879 ----------------------------------------------------------------------*/
5880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005881 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07005882
5883 wpalMutexAcquire(&pWDICtx->wptMutex);
5884
5885 /*Transition back to started because the post function transitioned us to
5886 busy*/
5887 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
5888
5889 /*Check to see if any request is pending*/
5890 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005891
Jeff Johnson295189b2012-06-20 16:38:30 -07005892 wpalMutexRelease(&pWDICtx->wptMutex);
5893
5894 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005895 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
5896
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 /*Notify UMAC*/
5898 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
5899
5900 /*Return Success*/
5901 return WDI_STATUS_SUCCESS;
5902
5903}/*WDI_MainStartStarted*/
5904
5905/**
5906 @brief Main FSM Stop function for state STARTED
5907
Jeff Johnsone7245742012-09-05 17:12:55 -07005908
5909 @param pWDICtx: pointer to the WLAN DAL context
5910 pEventData: pointer to the event information structure
5911
Jeff Johnson295189b2012-06-20 16:38:30 -07005912 @see
5913 @return Result of the function call
5914*/
5915WDI_Status
5916WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005917(
Jeff Johnson295189b2012-06-20 16:38:30 -07005918 WDI_ControlBlockType* pWDICtx,
5919 WDI_EventInfoType* pEventData
5920)
5921{
5922 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005924 ----------------------------------------------------------------------*/
5925 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5926 {
5927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005928 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005929 pWDICtx, pEventData);
5930 return WDI_STATUS_E_FAILURE;
5931 }
5932
5933 /*State at this point is BUSY - because we enter this state before posting
5934 an event to the FSM in order to prevent potential race conditions*/
5935
5936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5937 "Processing stop request in FSM");
5938
5939 /*Return Success*/
5940 return WDI_ProcessRequest( pWDICtx, pEventData );
5941
5942}/*WDI_MainStopStarted*/
5943/**
5944 @brief Main FSM Request function for state started
5945
Jeff Johnsone7245742012-09-05 17:12:55 -07005946
5947 @param pWDICtx: pointer to the WLAN DAL context
5948 pEventData: pointer to the event information structure
5949
Jeff Johnson295189b2012-06-20 16:38:30 -07005950 @see
5951 @return Result of the function call
5952*/
5953WDI_Status
5954WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005955(
Jeff Johnson295189b2012-06-20 16:38:30 -07005956 WDI_ControlBlockType* pWDICtx,
5957 WDI_EventInfoType* pEventData
5958)
5959{
5960
5961 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005962 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005963 ----------------------------------------------------------------------*/
5964 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5965 {
5966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005967 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005968 pWDICtx, pEventData);
5969 return WDI_STATUS_E_FAILURE;
5970 }
5971
5972 /*State at this point is BUSY - because we enter this state before posting
5973 an event to the FSM in order to prevent potential race conditions*/
5974
5975 /*Return Success*/
5976 return WDI_ProcessRequest( pWDICtx, pEventData );
5977
5978}/*WDI_MainReqStarted*/
5979
5980/**
5981 @brief Main FSM Response function for all states except INIT
5982
Jeff Johnsone7245742012-09-05 17:12:55 -07005983
5984 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005985 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07005986
Jeff Johnson295189b2012-06-20 16:38:30 -07005987 @see
5988 @return Result of the function call
5989*/
5990WDI_Status
5991WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07005992(
Jeff Johnson295189b2012-06-20 16:38:30 -07005993 WDI_ControlBlockType* pWDICtx,
5994 WDI_EventInfoType* pEventData
5995)
5996{
Jeff Johnsone7245742012-09-05 17:12:55 -07005997 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005998 wpt_boolean expectedResponse;
5999
6000 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006001 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006002 ----------------------------------------------------------------------*/
6003 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6004 {
6005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006006 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006007 pWDICtx, pEventData);
6008 return WDI_STATUS_E_FAILURE;
6009 }
6010
6011 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6012 {
6013 /* we received an expected response */
6014 expectedResponse = eWLAN_PAL_TRUE;
6015
6016 /*We expect that we will transition to started after this processing*/
6017 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6018
6019 /* we are no longer expecting a response */
6020 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6021 }
6022 else
6023 {
6024 /* we received an indication or unexpected response */
6025 expectedResponse = eWLAN_PAL_FALSE;
6026 /* for indications no need to update state from what it is right
6027 now, unless it explicitly does it in the indication handler (say
6028 for device failure ind) */
6029 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6030 }
6031
6032 /*Process the response and indication */
6033 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6034
6035 /*Lock the CB as we are about to do a state transition*/
6036 wpalMutexAcquire(&pWDICtx->wptMutex);
6037
6038 /*Transition to the expected state after the response processing
6039 - this should always be started state with the following exceptions:
6040 1. processing of a failed start response
6041 2. device failure detected while processing response
6042 3. stop response received*/
6043 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006044
Jeff Johnson295189b2012-06-20 16:38:30 -07006045 /*Dequeue request that may have been queued while we were waiting for the
6046 response */
6047 if ( expectedResponse )
6048 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006049 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006050 }
6051
6052 wpalMutexRelease(&pWDICtx->wptMutex);
6053
6054 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006055 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006056
6057}/*WDI_MainRsp*/
6058
6059/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006060 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006061--------------------------------------------------------------------------*/
6062/**
6063 @brief Main FSM Stop function for state STOPPED
6064
Jeff Johnsone7245742012-09-05 17:12:55 -07006065
6066 @param pWDICtx: pointer to the WLAN DAL context
6067 pEventData: pointer to the event information structure
6068
Jeff Johnson295189b2012-06-20 16:38:30 -07006069 @see
6070 @return Result of the function call
6071*/
6072WDI_Status
6073WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006074(
Jeff Johnson295189b2012-06-20 16:38:30 -07006075 WDI_ControlBlockType* pWDICtx,
6076 WDI_EventInfoType* pEventData
6077)
6078{
6079 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006080 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006081 ----------------------------------------------------------------------*/
6082 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6083 {
6084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006085 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006086 pWDICtx, pEventData);
6087 return WDI_STATUS_E_FAILURE;
6088 }
6089
6090 /*We should normally not get a STOP request if we are already stopped
6091 since we should normally be stopped by the UMAC. However in some
6092 error situations we put ourselves in the stopped state without the
6093 UMAC knowing, so when we get a STOP request in this state we still
6094 process it since we need to clean up the underlying state */
6095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6096 "Processing stop request while stopped in FSM");
6097
6098 /*Return Success*/
6099 return WDI_ProcessRequest( pWDICtx, pEventData );
6100
6101}/*WDI_MainStopStopped*/
6102
6103/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006104 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006105--------------------------------------------------------------------------*/
6106/**
6107 @brief Main FSM Start function for state BUSY
6108
Jeff Johnsone7245742012-09-05 17:12:55 -07006109
6110 @param pWDICtx: pointer to the WLAN DAL context
6111 pEventData: pointer to the event information structure
6112
Jeff Johnson295189b2012-06-20 16:38:30 -07006113 @see
6114 @return Result of the function call
6115*/
6116WDI_Status
6117WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006118(
Jeff Johnson295189b2012-06-20 16:38:30 -07006119 WDI_ControlBlockType* pWDICtx,
6120 WDI_EventInfoType* pEventData
6121)
6122{
6123 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006124 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006125 ----------------------------------------------------------------------*/
6126 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6127 {
6128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006129 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006130 pWDICtx, pEventData);
6131 return WDI_STATUS_E_FAILURE;
6132 }
6133
6134 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006135 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006136 ----------------------------------------------------------------------*/
6137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6138 "WDI Busy state - queue start request");
6139
6140 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006141 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006142
6143 /*Return Success*/
6144 return WDI_STATUS_PENDING;
6145}/*WDI_MainStartBusy*/
6146
6147/**
6148 @brief Main FSM Stop function for state BUSY
6149
Jeff Johnsone7245742012-09-05 17:12:55 -07006150
6151 @param pWDICtx: pointer to the WLAN DAL context
6152 pEventData: pointer to the event information structure
6153
Jeff Johnson295189b2012-06-20 16:38:30 -07006154 @see
6155 @return Result of the function call
6156*/
6157WDI_Status
6158WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006159(
Jeff Johnson295189b2012-06-20 16:38:30 -07006160 WDI_ControlBlockType* pWDICtx,
6161 WDI_EventInfoType* pEventData
6162)
6163{
6164 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006165 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006166 ----------------------------------------------------------------------*/
6167 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6168 {
6169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006170 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006171 pWDICtx, pEventData);
6172 return WDI_STATUS_E_FAILURE;
6173 }
6174
6175 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006177 ----------------------------------------------------------------------*/
6178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6179 "WDI Busy state - queue stop request");
6180
Jeff Johnsone7245742012-09-05 17:12:55 -07006181 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006182 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006183
Jeff Johnson295189b2012-06-20 16:38:30 -07006184}/*WDI_MainStopBusy*/
6185
6186/**
6187 @brief Main FSM Request function for state BUSY
6188
Jeff Johnsone7245742012-09-05 17:12:55 -07006189
6190 @param pWDICtx: pointer to the WLAN DAL context
6191 pEventData: pointer to the event information structure
6192
Jeff Johnson295189b2012-06-20 16:38:30 -07006193 @see
6194 @return Result of the function call
6195*/
6196WDI_Status
6197WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006198(
Jeff Johnson295189b2012-06-20 16:38:30 -07006199 WDI_ControlBlockType* pWDICtx,
6200 WDI_EventInfoType* pEventData
6201)
6202{
6203 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006204 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006205 ----------------------------------------------------------------------*/
6206 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6207 {
6208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006209 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 pWDICtx, pEventData);
6211 return WDI_STATUS_E_FAILURE;
6212 }
6213
6214 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006215 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006216 ----------------------------------------------------------------------*/
6217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6218 "WDI Busy state - queue request %d because waiting for response %d",
6219 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6220
Jeff Johnsone7245742012-09-05 17:12:55 -07006221 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006222 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006223
Jeff Johnson295189b2012-06-20 16:38:30 -07006224}/*WDI_MainReqBusy*/
6225/**
6226 @brief Main FSM Close function for state BUSY
6227
Jeff Johnsone7245742012-09-05 17:12:55 -07006228
6229 @param pWDICtx: pointer to the WLAN DAL context
6230 pEventData: pointer to the event information structure
6231
Jeff Johnson295189b2012-06-20 16:38:30 -07006232 @see
6233 @return Result of the function call
6234*/
6235WDI_Status
6236WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006237(
Jeff Johnson295189b2012-06-20 16:38:30 -07006238 WDI_ControlBlockType* pWDICtx,
6239 WDI_EventInfoType* pEventData
6240)
6241{
6242 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006243 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006244 ----------------------------------------------------------------------*/
6245 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6246 {
6247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006248 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006249 pWDICtx, pEventData);
6250 return WDI_STATUS_E_FAILURE;
6251 }
6252
6253 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006254 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006255 ----------------------------------------------------------------------*/
6256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6257 "WDI Busy state - queue close request");
6258
Jeff Johnsone7245742012-09-05 17:12:55 -07006259 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006260 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006261
Jeff Johnson295189b2012-06-20 16:38:30 -07006262}/*WDI_MainCloseBusy*/
6263
6264/**
6265 @brief Main FSM Shutdown function for INIT & STARTED states
6266
6267
6268 @param pWDICtx: pointer to the WLAN DAL context
6269 pEventData: pointer to the event information structure
6270
6271 @see
6272 @return Result of the function call
6273*/
6274WDI_Status
6275WDI_MainShutdown
6276(
6277 WDI_ControlBlockType* pWDICtx,
6278 WDI_EventInfoType* pEventData
6279)
6280{
6281 /*--------------------------------------------------------------------
6282 Sanity Check
6283 ----------------------------------------------------------------------*/
6284 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6285 {
6286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6287 "Invalid parameters on Main Start %x %x",
6288 pWDICtx, pEventData);
6289 return WDI_STATUS_E_FAILURE;
6290 }
6291
6292 /*State at this point is BUSY - because we enter this state before posting
6293 an event to the FSM in order to prevent potential race conditions*/
6294
6295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6296 "Processing shutdown request in FSM");
6297
6298 /*Return Success*/
6299 return WDI_ProcessRequest( pWDICtx, pEventData );
6300
6301}/*WDI_MainShutdown*/
6302
6303/**
6304 @brief Main FSM Shutdown function for BUSY state
6305
6306
6307 @param pWDICtx: pointer to the WLAN DAL context
6308 pEventData: pointer to the event information structure
6309
6310 @see
6311 @return Result of the function call
6312*/
6313WDI_Status
6314WDI_MainShutdownBusy
6315(
6316 WDI_ControlBlockType* pWDICtx,
6317 WDI_EventInfoType* pEventData
6318)
6319{
6320 /*--------------------------------------------------------------------
6321 Sanity Check
6322 ----------------------------------------------------------------------*/
6323 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6324 {
6325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6326 "Invalid parameters on Main Start %x %x",
6327 pWDICtx, pEventData);
6328 return WDI_STATUS_E_FAILURE;
6329 }
6330
6331 /* If you are waiting for a HAL response at this stage, you are not
6332 * going to get it. Riva is already shutdown/crashed.
6333 */
6334 wpalTimerStop(&gWDICb.wptResponseTimer);
6335
6336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6337 "Processing shutdown request in FSM: Busy state ");
6338
6339 return WDI_ProcessRequest( pWDICtx, pEventData );
6340
6341}/*WDI_MainShutdownBusy*/
6342
6343
Jeff Johnsone7245742012-09-05 17:12:55 -07006344/*=======================================================================
6345
Jeff Johnson295189b2012-06-20 16:38:30 -07006346 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006347
Jeff Johnson295189b2012-06-20 16:38:30 -07006348*=======================================================================*/
6349
6350/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006351 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006352========================================================================*/
6353/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006354 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006355 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006356
6357 @param pWDICtx: pointer to the WLAN DAL context
6358 pEventData: pointer to the event information structure
6359
Jeff Johnson295189b2012-06-20 16:38:30 -07006360 @see
6361 @return Result of the function call
6362*/
6363WDI_Status
6364WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006365(
Jeff Johnson295189b2012-06-20 16:38:30 -07006366 WDI_ControlBlockType* pWDICtx,
6367 WDI_EventInfoType* pEventData
6368)
6369{
6370 WDI_StartReqParamsType* pwdiStartParams = NULL;
6371 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006372 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006373 wpt_uint16 usDataOffset = 0;
6374 wpt_uint16 usSendSize = 0;
6375
Jeff Johnsone7245742012-09-05 17:12:55 -07006376 tHalMacStartReqMsg halStartReq;
6377 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6379
6380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006382 -------------------------------------------------------------------------*/
6383 if (( NULL == pEventData ) ||
6384 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6385 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6386 {
6387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006391 }
6392
6393 /*-----------------------------------------------------------------------
6394 Get message buffer
6395 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006396 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006397 pwdiStartParams->usConfigBufferLen;
6398
Jeff Johnsone7245742012-09-05 17:12:55 -07006399 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006400 usLen,
6401 &pSendBuffer, &usDataOffset, &usSendSize))||
6402 ( usSendSize < (usDataOffset + usLen )))
6403 {
6404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6405 "Unable to get send buffer in start req %x %x %x",
6406 pEventData, pwdiStartParams, wdiStartRspCb);
6407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006409 }
6410
6411 /*-----------------------------------------------------------------------
6412 Fill in the message
6413 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006414 halStartReq.startReqParams.driverType =
6415 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006416
Jeff Johnsone7245742012-09-05 17:12:55 -07006417 halStartReq.startReqParams.uConfigBufferLen =
6418 pwdiStartParams->usConfigBufferLen;
6419 wpalMemoryCopy( pSendBuffer+usDataOffset,
6420 &halStartReq.startReqParams,
6421 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006422
Jeff Johnsone7245742012-09-05 17:12:55 -07006423 usDataOffset += sizeof(halStartReq.startReqParams);
6424 wpalMemoryCopy( pSendBuffer+usDataOffset,
6425 pwdiStartParams->pConfigBuffer,
6426 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006427
6428 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006429 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006430
6431 /*Save Low Level Ind CB and associated user data - it will be used further
6432 on when an indication is coming from the lower MAC*/
6433 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006434 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006435
Jeff Johnsone7245742012-09-05 17:12:55 -07006436 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006438 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006439 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006440 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006441 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6442
Jeff Johnsone7245742012-09-05 17:12:55 -07006443
Jeff Johnson295189b2012-06-20 16:38:30 -07006444}/*WDI_ProcessStartReq*/
6445
6446/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006447 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006448 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006449
6450 @param pWDICtx: pointer to the WLAN DAL context
6451 pEventData: pointer to the event information structure
6452
Jeff Johnson295189b2012-06-20 16:38:30 -07006453 @see
6454 @return Result of the function call
6455*/
6456WDI_Status
6457WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006458(
Jeff Johnson295189b2012-06-20 16:38:30 -07006459 WDI_ControlBlockType* pWDICtx,
6460 WDI_EventInfoType* pEventData
6461)
6462{
6463 WDI_StopReqParamsType* pwdiStopParams = NULL;
6464 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006465 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006466 wpt_uint16 usDataOffset = 0;
6467 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006468 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006469 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6471
6472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006473 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006474 -------------------------------------------------------------------------*/
6475 if (( NULL == pEventData ) ||
6476 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6477 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6478 {
6479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006483 }
6484
6485 /*-----------------------------------------------------------------------
6486 Get message buffer
6487 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006488 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006489 sizeof(halStopReq.stopReqParams),
6490 &pSendBuffer, &usDataOffset, &usSendSize))||
6491 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6492 {
6493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6494 "Unable to get send buffer in stop req %x %x %x",
6495 pEventData, pwdiStopParams, wdiStopRspCb);
6496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006498 }
6499
6500 /*-----------------------------------------------------------------------
6501 Fill in the message
6502 -----------------------------------------------------------------------*/
6503 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6504 pwdiStopParams->wdiStopReason);
6505
Jeff Johnsone7245742012-09-05 17:12:55 -07006506 wpalMemoryCopy( pSendBuffer+usDataOffset,
6507 &halStopReq.stopReqParams,
6508 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006509
6510 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006511 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006512
6513 /*! TO DO: stop the data services */
6514 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6515 {
6516 /*Stop the STA Table !UT- check this logic again
6517 It is safer to do it here than on the response - because a stop is imminent*/
6518 WDI_STATableStop(pWDICtx);
6519
6520 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006521 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6522 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006523 {
6524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6525 "WDI Init failed to reset power state event");
6526
Jeff Johnsone7245742012-09-05 17:12:55 -07006527 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 return VOS_STATUS_E_FAILURE;
6529 }
6530 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006531 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6532 if( eWLAN_PAL_STATUS_SUCCESS != status )
6533 {
6534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6535 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6536 WDI_ASSERT(0);
6537 return WDI_STATUS_E_FAILURE;
6538 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006539 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006540 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006541 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006542 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6543 WDI_SET_POWER_STATE_TIMEOUT);
6544 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006545 {
6546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6547 "WDI Init failed to wait on an event");
6548
Jeff Johnsone7245742012-09-05 17:12:55 -07006549 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006550 return VOS_STATUS_E_FAILURE;
6551 }
6552 }
6553
6554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006555 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006558 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6559
6560}/*WDI_ProcessStopReq*/
6561
6562/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006563 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006564 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006565
6566 @param pWDICtx: pointer to the WLAN DAL context
6567 pEventData: pointer to the event information structure
6568
Jeff Johnson295189b2012-06-20 16:38:30 -07006569 @see
6570 @return Result of the function call
6571*/
6572WDI_Status
6573WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006574(
Jeff Johnson295189b2012-06-20 16:38:30 -07006575 WDI_ControlBlockType* pWDICtx,
6576 WDI_EventInfoType* pEventData
6577)
6578{
Jeff Johnsone7245742012-09-05 17:12:55 -07006579 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6581
6582 /*Lock control block for cleanup*/
6583 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006584
Jeff Johnson295189b2012-06-20 16:38:30 -07006585 /*Clear all pending request*/
6586 WDI_ClearPendingRequests(pWDICtx);
6587
6588 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006589 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006590
6591 /* Close Data transport*/
6592 /* FTM mode does not open Data Path */
6593 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6594 {
6595 WDTS_Close(pWDICtx);
6596 }
6597
6598 /*Close the STA Table !UT- check this logic again*/
6599 WDI_STATableClose(pWDICtx);
6600
6601 /*close the PAL */
6602 wptStatus = wpalClose(pWDICtx->pPALContext);
6603 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6604 {
6605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6606 "Failed to wpal Close %d", wptStatus);
6607 WDI_ASSERT(0);
6608 }
6609
6610 /*Transition back to init state*/
6611 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6612
6613 wpalMutexRelease(&pWDICtx->wptMutex);
6614
6615 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006616 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006617
Jeff Johnsone7245742012-09-05 17:12:55 -07006618 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006619}/*WDI_ProcessCloseReq*/
6620
6621
6622/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006623 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006624===========================================================================*/
6625
6626/**
6627 @brief Process Init Scan Request function (called when Main FSM
6628 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006629
6630 @param pWDICtx: pointer to the WLAN DAL context
6631 pEventData: pointer to the event information structure
6632
Jeff Johnson295189b2012-06-20 16:38:30 -07006633 @see
6634 @return Result of the function call
6635*/
6636WDI_Status
6637WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006638(
Jeff Johnson295189b2012-06-20 16:38:30 -07006639 WDI_ControlBlockType* pWDICtx,
6640 WDI_EventInfoType* pEventData
6641)
6642{
6643 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6644 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006645 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006646 wpt_uint16 usDataOffset = 0;
6647 wpt_uint16 usSendSize = 0;
6648 wpt_uint8 i = 0;
6649
6650 tHalInitScanReqMsg halInitScanReqMsg;
6651
Jeff Johnsone7245742012-09-05 17:12:55 -07006652 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006653 * It shold be removed once host and riva changes are in sync*/
6654 tHalInitScanConReqMsg halInitScanConReqMsg;
6655
6656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6657
6658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006659 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006660 -------------------------------------------------------------------------*/
6661 if (( NULL == pEventData ) ||
6662 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6663 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6664 {
6665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006669 }
6670
6671#if 0
6672 wpalMutexAcquire(&pWDICtx->wptMutex);
6673 /*-----------------------------------------------------------------------
6674 Check to see if SCAN is already in progress - if so reject the req
6675 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006676 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 -----------------------------------------------------------------------*/
6678 if ( pWDICtx->bScanInProgress )
6679 {
6680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6681 "Scan is already in progress - subsequent scan is not allowed"
6682 " until the first scan completes");
6683
6684 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 }
6687
Jeff Johnsone7245742012-09-05 17:12:55 -07006688 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6689 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006690
6691 wpalMutexRelease(&pWDICtx->wptMutex);
6692#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08006693 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006694 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006695 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006696 * It shold be removed once host and riva changes are in sync*/
6697 /*-----------------------------------------------------------------------
6698 Get message buffer
6699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006701 sizeof(halInitScanConReqMsg.initScanParams),
6702 &pSendBuffer, &usDataOffset, &usSendSize))||
6703 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6704 {
6705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6706 "Unable to get send buffer in init scan req %x %x %x",
6707 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006710 }
6711
6712
6713 /*-----------------------------------------------------------------------
6714 Fill in the message
6715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006716 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006717 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6718
6719 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6720 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6721
Jeff Johnsone7245742012-09-05 17:12:55 -07006722 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006723 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006724 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006725 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006726 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006727 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6728
6729 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6730 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6731
6732#ifdef WLAN_FEATURE_P2P
6733 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6734 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
6735#endif
6736
Jeff Johnsone7245742012-09-05 17:12:55 -07006737 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006738 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6739
6740 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6741 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006742 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6744 }
6745
Jeff Johnsone7245742012-09-05 17:12:55 -07006746 wpalMemoryCopy( pSendBuffer+usDataOffset,
6747 &halInitScanConReqMsg.initScanParams,
6748 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006749 }
6750 else
6751 {
6752 /*-----------------------------------------------------------------------
6753 Get message buffer
6754 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006756 sizeof(halInitScanReqMsg.initScanParams),
6757 &pSendBuffer, &usDataOffset, &usSendSize))||
6758 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6759 {
6760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6761 "Unable to get send buffer in init scan req %x %x %x",
6762 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006765 }
6766
6767
6768 /*-----------------------------------------------------------------------
6769 Fill in the message
6770 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006771 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006772 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6773
6774 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6775 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6776
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006778 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006779 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006781 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006782 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6783
6784 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6785 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6786
Jeff Johnsone7245742012-09-05 17:12:55 -07006787 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006788 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6789
6790 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6791 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006792 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006793 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6794 }
6795
Jeff Johnsone7245742012-09-05 17:12:55 -07006796 wpalMemoryCopy( pSendBuffer+usDataOffset,
6797 &halInitScanReqMsg.initScanParams,
6798 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006799 }
6800
6801 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006802 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006803
6804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006805 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006806 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006807 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6809
6810}/*WDI_ProcessInitScanReq*/
6811
6812/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006813 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006814 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006815
6816 @param pWDICtx: pointer to the WLAN DAL context
6817 pEventData: pointer to the event information structure
6818
Jeff Johnson295189b2012-06-20 16:38:30 -07006819 @see
6820 @return Result of the function call
6821*/
6822WDI_Status
6823WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006824(
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 WDI_ControlBlockType* pWDICtx,
6826 WDI_EventInfoType* pEventData
6827)
6828{
6829 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6830 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006831 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006832 wpt_uint16 usDataOffset = 0;
6833 wpt_uint16 usSendSize = 0;
6834
Jeff Johnsone7245742012-09-05 17:12:55 -07006835 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6837
6838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006840 -------------------------------------------------------------------------*/
6841 if (( NULL == pEventData ) ||
6842 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6843 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6844 {
6845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006849 }
6850
6851#if 0
6852 wpalMutexAcquire(&pWDICtx->wptMutex);
6853 /*-----------------------------------------------------------------------
6854 Check to see if SCAN is already in progress - start scan is only
6855 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07006856 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07006857 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006858 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006859 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
6860 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
6861 {
6862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6863 "Scan start not allowed in this state %d %d",
6864 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006865
Jeff Johnson295189b2012-06-20 16:38:30 -07006866 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006867 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006868 }
6869
Jeff Johnsone7245742012-09-05 17:12:55 -07006870 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006871
6872 wpalMutexRelease(&pWDICtx->wptMutex);
6873#endif
6874
6875 /*-----------------------------------------------------------------------
6876 Get message buffer
6877 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 sizeof(halStartScanReqMsg.startScanParams),
6880 &pSendBuffer, &usDataOffset, &usSendSize))||
6881 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
6882 {
6883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6884 "Unable to get send buffer in start scan req %x %x %x",
6885 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
6886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 }
6889
Jeff Johnsone7245742012-09-05 17:12:55 -07006890 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07006892 wpalMemoryCopy( pSendBuffer+usDataOffset,
6893 &halStartScanReqMsg.startScanParams,
6894 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006895
6896 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006897 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006898
6899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006900 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006901 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006902 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006903 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
6904}/*WDI_ProcessStartScanReq*/
6905
6906
6907/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006908 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006909 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006910
6911 @param pWDICtx: pointer to the WLAN DAL context
6912 pEventData: pointer to the event information structure
6913
Jeff Johnson295189b2012-06-20 16:38:30 -07006914 @see
6915 @return Result of the function call
6916*/
6917WDI_Status
6918WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006919(
Jeff Johnson295189b2012-06-20 16:38:30 -07006920 WDI_ControlBlockType* pWDICtx,
6921 WDI_EventInfoType* pEventData
6922)
6923{
6924 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
6925 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006926 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006927 wpt_uint16 usDataOffset = 0;
6928 wpt_uint16 usSendSize = 0;
6929
Jeff Johnsone7245742012-09-05 17:12:55 -07006930 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6932
6933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006935 -------------------------------------------------------------------------*/
6936 if (( NULL == pEventData ) ||
6937 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
6938 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
6939 {
6940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006944 }
6945
Jeff Johnsone7245742012-09-05 17:12:55 -07006946 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
6947 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07006948 * forwarded to HAL and result in hang*/
6949#if 0
6950 wpalMutexAcquire(&pWDICtx->wptMutex);
6951 /*-----------------------------------------------------------------------
6952 Check to see if SCAN is already in progress - end scan is only
6953 allowed when a scan is ongoing and the state of the scan procedure
6954 is started
6955 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006956 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006957 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
6958 {
6959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6960 "End start not allowed in this state %d %d",
6961 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006962
Jeff Johnson295189b2012-06-20 16:38:30 -07006963 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006964 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006965 }
6966
Jeff Johnsone7245742012-09-05 17:12:55 -07006967 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006968
6969 wpalMutexRelease(&pWDICtx->wptMutex);
6970#endif
6971
6972 /*-----------------------------------------------------------------------
6973 Get message buffer
6974 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006975 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006976 sizeof(halEndScanReqMsg.endScanParams),
6977 &pSendBuffer, &usDataOffset, &usSendSize))||
6978 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
6979 {
6980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6981 "Unable to get send buffer in start scan req %x %x %x",
6982 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
6983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006985 }
6986
6987 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
6988
Jeff Johnsone7245742012-09-05 17:12:55 -07006989 wpalMemoryCopy( pSendBuffer+usDataOffset,
6990 &halEndScanReqMsg.endScanParams,
6991 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006992
6993 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006994 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006995
6996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006997 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006999 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007000 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7001}/*WDI_ProcessEndScanReq*/
7002
7003
7004/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007005 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007007
7008 @param pWDICtx: pointer to the WLAN DAL context
7009 pEventData: pointer to the event information structure
7010
Jeff Johnson295189b2012-06-20 16:38:30 -07007011 @see
7012 @return Result of the function call
7013*/
7014WDI_Status
7015WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007016(
Jeff Johnson295189b2012-06-20 16:38:30 -07007017 WDI_ControlBlockType* pWDICtx,
7018 WDI_EventInfoType* pEventData
7019)
7020{
7021 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7022 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007023 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007024 wpt_uint16 usDataOffset = 0;
7025 wpt_uint16 usSendSize = 0;
7026 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007027 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007028 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7030
7031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007033 -------------------------------------------------------------------------*/
7034 if (( NULL == pEventData ) ||
7035 ( NULL == pEventData->pEventData) ||
7036 ( NULL == pEventData->pCBfnc))
7037 {
7038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007042 }
7043
7044 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7045 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7047 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007048 * forwarded to HAL and result in hang*/
7049#if 0
7050 wpalMutexAcquire(&pWDICtx->wptMutex);
7051 /*-----------------------------------------------------------------------
7052 Check to see if SCAN is already in progress
7053 Finish scan gets invoked any scan states. ie. abort scan
7054 It should be allowed in any states.
7055 -----------------------------------------------------------------------*/
7056 if ( !pWDICtx->bScanInProgress )
7057 {
7058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7059 "Finish start not allowed in this state %d",
7060 pWDICtx->bScanInProgress );
7061
7062 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007063 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007064 }
7065
7066 /*-----------------------------------------------------------------------
7067 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007068 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007069 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007070 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7071 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007072 wpalMutexRelease(&pWDICtx->wptMutex);
7073#endif
7074
7075 if ( pWDICtx->bInBmps )
7076 {
7077 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007078 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7079 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7080 {
7081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7082 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7083 WDI_ASSERT(0);
7084 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 }
7086
7087 /*-----------------------------------------------------------------------
7088 Get message buffer
7089 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 sizeof(halFinishScanReqMsg.finishScanParams),
7092 &pSendBuffer, &usDataOffset, &usSendSize))||
7093 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7094 {
7095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7096 "Unable to get send buffer in start scan req %x %x %x",
7097 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007100 }
7101
Jeff Johnsone7245742012-09-05 17:12:55 -07007102 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7104
Jeff Johnsone7245742012-09-05 17:12:55 -07007105 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007106 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7107
Jeff Johnsone7245742012-09-05 17:12:55 -07007108 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007109 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7110
7111 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7112 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7113
Jeff Johnsone7245742012-09-05 17:12:55 -07007114 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007116 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007118 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007119 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7120
Jeff Johnsone7245742012-09-05 17:12:55 -07007121 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007122 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7123
7124 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7125 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007126 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007127 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7128 }
7129
7130 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7131 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7132
Jeff Johnsone7245742012-09-05 17:12:55 -07007133 wpalMemoryCopy( pSendBuffer+usDataOffset,
7134 &halFinishScanReqMsg.finishScanParams,
7135 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007136
7137 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007138 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007139
7140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007141 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007143 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007144 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7145}/*WDI_ProcessFinishScanReq*/
7146
7147
7148/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007149 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007150==========================================================================*/
7151/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007152 @brief Process BSS Join for a given Session
7153
7154 @param pWDICtx: pointer to the WLAN DAL context
7155 pEventData: pointer to the event information structure
7156
Jeff Johnson295189b2012-06-20 16:38:30 -07007157 @see
7158 @return Result of the function call
7159*/
7160WDI_Status
7161WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007162(
Jeff Johnson295189b2012-06-20 16:38:30 -07007163 WDI_ControlBlockType* pWDICtx,
7164 WDI_JoinReqParamsType* pwdiJoinParams,
7165 WDI_JoinRspCb wdiJoinRspCb,
7166 void* pUserData
7167)
7168{
7169 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007170 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007171 wpt_uint16 usDataOffset = 0;
7172 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007173 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007174
Jeff Johnsone7245742012-09-05 17:12:55 -07007175 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7177
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007178 wpalMutexAcquire(&pWDICtx->wptMutex);
7179
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 /*------------------------------------------------------------------------
7181 Check to see if we have any session with this BSSID already stored, we
7182 should not
7183 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007184 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7185 pwdiJoinParams->wdiReqInfo.macBSSID,
7186 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007187
7188 if ( NULL != pBSSSes )
7189 {
7190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007191 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7192 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007193
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007194 /*reset the bAssociationInProgress otherwise the next
7195 *join request will be queued*/
7196 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7197 wpalMutexRelease(&pWDICtx->wptMutex);
7198 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007199 }
7200
Jeff Johnson295189b2012-06-20 16:38:30 -07007201 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007202 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007203 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007204 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007205 if ( NULL == pBSSSes )
7206 {
7207
7208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7209 "DAL has no free sessions - cannot run another join");
7210
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007211 /*reset the bAssociationInProgress otherwise the next
7212 *join request will be queued*/
7213 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007214 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007215 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007216 }
7217
7218 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007219 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7220 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 WDI_MAC_ADDR_LEN);
7222
7223 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007226
Jeff Johnson295189b2012-06-20 16:38:30 -07007227 wpalMutexRelease(&pWDICtx->wptMutex);
7228
7229 /*-----------------------------------------------------------------------
7230 Get message buffer
7231 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007232 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007233 sizeof(halJoinReqMsg.joinReqParams),
7234 &pSendBuffer, &usDataOffset, &usSendSize))||
7235 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7236 {
7237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7238 "Unable to get send buffer in join req %x %x %x",
7239 pUserData, pwdiJoinParams, wdiJoinRspCb);
7240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007242 }
7243
7244 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007245 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007246
7247 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007248 pwdiJoinParams->wdiReqInfo.macSTASelf,
7249 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007250
Jeff Johnsone7245742012-09-05 17:12:55 -07007251 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007252 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7253
7254 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7255
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007256#ifdef WLAN_FEATURE_VOWIFI
7257 halJoinReqMsg.joinReqParams.maxTxPower =
7258 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7259#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007260 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7262#endif
7263
Jeff Johnsone7245742012-09-05 17:12:55 -07007264 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007265 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7266 wdiSecondaryChannelOffset);
7267
Jeff Johnsone7245742012-09-05 17:12:55 -07007268 wpalMemoryCopy( pSendBuffer+usDataOffset,
7269 &halJoinReqMsg.joinReqParams,
7270 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007271
7272 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007273 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007274
7275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7279 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007280
7281}/*WDI_ProcessBSSSessionJoinReq*/
7282
7283/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007284 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007285 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007286
7287 @param pWDICtx: pointer to the WLAN DAL context
7288 pEventData: pointer to the event information structure
7289
Jeff Johnson295189b2012-06-20 16:38:30 -07007290 @see
7291 @return Result of the function call
7292*/
7293WDI_Status
7294WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007295(
Jeff Johnson295189b2012-06-20 16:38:30 -07007296 WDI_ControlBlockType* pWDICtx,
7297 WDI_EventInfoType* pEventData
7298)
7299{
7300 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7301 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7302 WDI_JoinRspCb wdiJoinRspCb = NULL;
7303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7304
7305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 -------------------------------------------------------------------------*/
7308 if (( NULL == pEventData ) ||
7309 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7310 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7311 {
7312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007313 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007316 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007317
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 /*-------------------------------------------------------------------------
7319 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007320 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007321 -------------------------------------------------------------------------*/
7322 wpalMutexAcquire(&pWDICtx->wptMutex);
7323
7324 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7325 {
7326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7327 "Association is currently in progress, queueing new join req");
7328
7329 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007330 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007331 pwdiJoinParams->wdiReqInfo.macBSSID);
7332
7333 wpalMutexRelease(&pWDICtx->wptMutex);
7334
Jeff Johnsone7245742012-09-05 17:12:55 -07007335 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007336 }
7337
7338 /*Starting a new association */
7339 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7340 wpalMutexRelease(&pWDICtx->wptMutex);
7341
7342 /*Process the Join Request*/
7343 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7344 wdiJoinRspCb,pEventData->pUserData);
7345
7346}/*WDI_ProcessJoinReq*/
7347
7348
7349/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007350 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007352
7353 @param pWDICtx: pointer to the WLAN DAL context
7354 pEventData: pointer to the event information structure
7355
Jeff Johnson295189b2012-06-20 16:38:30 -07007356 @see
7357 @return Result of the function call
7358*/
7359WDI_Status
7360WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007361(
Jeff Johnson295189b2012-06-20 16:38:30 -07007362 WDI_ControlBlockType* pWDICtx,
7363 WDI_EventInfoType* pEventData
7364)
7365{
7366 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7367 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007368 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007370 wpt_uint16 uMsgSize = 0;
7371 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 wpt_uint16 usDataOffset = 0;
7373 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007374 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007375
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7378
7379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007380 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007381 -------------------------------------------------------------------------*/
7382 if (( NULL == pEventData ) ||
7383 ( NULL == pEventData->pEventData ) ||
7384 ( NULL == pEventData->pCBfnc ))
7385 {
7386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 }
7391
7392 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7393 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7394 /*-------------------------------------------------------------------------
7395 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007396 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007397 -------------------------------------------------------------------------*/
7398 wpalMutexAcquire(&pWDICtx->wptMutex);
7399
7400 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007401 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7404 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7405 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007406
Jeff Johnsone7245742012-09-05 17:12:55 -07007407 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007408 {
7409#ifdef WLAN_FEATURE_VOWIFI_11R
7410 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007413 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007414 if ( NULL == pBSSSes )
7415 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007416
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7418 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007419
Jeff Johnson295189b2012-06-20 16:38:30 -07007420 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007421 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007423
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7426 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007428
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7432#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007433 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007434 * Request in case of IBSS*/
7435 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7436 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7437 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7438 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7439 {
7440 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007441 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007442 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 if ( NULL == pBSSSes )
7445 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007446
Jeff Johnson295189b2012-06-20 16:38:30 -07007447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7448 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007449
Jeff Johnson295189b2012-06-20 16:38:30 -07007450 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007451 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007453
Jeff Johnson295189b2012-06-20 16:38:30 -07007454 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007455 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7456 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007458
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7462 }
7463 else
7464 {
7465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007466 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7467 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7468 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7469
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 /* for IBSS testing */
7471 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007472 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007473 }
7474#endif
7475 }
7476
7477 /*------------------------------------------------------------------------
7478 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007479 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007480 ------------------------------------------------------------------------*/
7481 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7482 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7484 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7485 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7486 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007487
Jeff Johnsone7245742012-09-05 17:12:55 -07007488 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007489
7490 wpalMutexRelease(&pWDICtx->wptMutex);
7491
Jeff Johnsone7245742012-09-05 17:12:55 -07007492 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007493 }
7494
7495 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007496 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7497 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007498 sizeof(pWDICtx->wdiCachedConfigBssReq));
7499
7500 wpalMutexRelease(&pWDICtx->wptMutex);
7501
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7503#ifdef WLAN_FEATURE_11AC
7504 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007505 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007506 else
7507#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007508 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007509
7510 /*-----------------------------------------------------------------------
7511 Get message buffer
7512 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7515 ( usSendSize < (usDataOffset + uMsgSize )))
7516 {
7517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7518 "Unable to get send buffer in config bss req %x %x %x",
7519 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 }
7523
7524 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007525#ifdef WLAN_FEATURE_11AC
7526 if (WDI_getFwWlanFeatCaps(DOT11AC))
7527 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7528 &pwdiConfigBSSParams->wdiReqInfo);
7529 else
7530#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007531 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 &pwdiConfigBSSParams->wdiReqInfo);
7533
7534 /* Need to fill in the STA Index to invalid, since at this point we have not
7535 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007536 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007537
7538 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007539 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7540
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007541#ifdef WLAN_FEATURE_11AC
7542 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7543 wpalMemoryCopy( pSendBuffer+usDataOffset,
7544 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7545 uMsgSize);
7546 }else
7547#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007548 wpalMemoryCopy( pSendBuffer+usDataOffset,
7549 &halConfigBssReqMsg.uBssParams.configBssParams,
7550 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -07007551
7552 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007554
7555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007558 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7559 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 WDI_CONFIG_BSS_RESP);
7561
7562}/*WDI_ProcessConfigBSSReq*/
7563
7564
7565/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007566 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007568
7569 @param pWDICtx: pointer to the WLAN DAL context
7570 pEventData: pointer to the event information structure
7571
Jeff Johnson295189b2012-06-20 16:38:30 -07007572 @see
7573 @return Result of the function call
7574*/
7575WDI_Status
7576WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007577(
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 WDI_ControlBlockType* pWDICtx,
7579 WDI_EventInfoType* pEventData
7580)
7581{
7582 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7583 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007584 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007585 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007586 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007587 wpt_uint16 usDataOffset = 0;
7588 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007589 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007590
Jeff Johnsone7245742012-09-05 17:12:55 -07007591 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7593
7594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 -------------------------------------------------------------------------*/
7597 if (( NULL == pEventData ) ||
7598 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7599 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7600 {
7601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007602 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007605 }
7606
7607 /*-------------------------------------------------------------------------
7608 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007609 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007610 -------------------------------------------------------------------------*/
7611 wpalMutexAcquire(&pWDICtx->wptMutex);
7612
7613 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007614 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007615 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7617 pwdiDelBSSParams->ucBssIdx,
7618 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007619
Jeff Johnsone7245742012-09-05 17:12:55 -07007620 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007621 {
7622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007623 "%s: BSS does not yet exist. ucBssIdx %d",
7624 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007625
7626 wpalMutexRelease(&pWDICtx->wptMutex);
7627
7628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007630
7631 /*------------------------------------------------------------------------
7632 Check if this BSS is being currently processed or queued,
7633 if queued - queue the new request as well
7634 ------------------------------------------------------------------------*/
7635 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007636 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7638 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7639 __func__, pwdiDelBSSParams->ucBssIdx);
7640
7641 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7642
7643 wpalMutexRelease(&pWDICtx->wptMutex);
7644
7645 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007647
Jeff Johnson295189b2012-06-20 16:38:30 -07007648 /*-----------------------------------------------------------------------
7649 If we receive a Del BSS request for an association that is already in
7650 progress, it indicates that the assoc has failed => we no longer have
7651 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 -----------------------------------------------------------------------*/
7654 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7655 {
7656 /*We can switch to false here because even if a subsequent Join comes in
7657 it will only be processed when DAL transitions out of BUSY state which
7658 happens when the Del BSS request comes */
7659 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7660
7661 /*Former association is complete - prepare next pending assoc for
7662 processing */
7663 WDI_DequeueAssocRequest(pWDICtx);
7664 }
7665
7666 wpalMutexRelease(&pWDICtx->wptMutex);
7667 /*-----------------------------------------------------------------------
7668 Get message buffer
7669 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 sizeof(halBssReqMsg.deleteBssParams),
7672 &pSendBuffer, &usDataOffset, &usSendSize))||
7673 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7674 {
7675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7676 "Unable to get send buffer in start req %x %x %x",
7677 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 }
7681
7682 /*Fill in the message request structure*/
7683
7684 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007685 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007686
Jeff Johnsone7245742012-09-05 17:12:55 -07007687 wpalMemoryCopy( pSendBuffer+usDataOffset,
7688 &halBssReqMsg.deleteBssParams,
7689 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007690
7691 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007692 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007693
Jeff Johnsone7245742012-09-05 17:12:55 -07007694
Jeff Johnson295189b2012-06-20 16:38:30 -07007695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007696 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007697 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7700
Jeff Johnsone7245742012-09-05 17:12:55 -07007701
Jeff Johnson295189b2012-06-20 16:38:30 -07007702}/*WDI_ProcessDelBSSReq*/
7703
7704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007707
7708 @param pWDICtx: pointer to the WLAN DAL context
7709 pEventData: pointer to the event information structure
7710
Jeff Johnson295189b2012-06-20 16:38:30 -07007711 @see
7712 @return Result of the function call
7713*/
7714WDI_Status
7715WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007716(
Jeff Johnson295189b2012-06-20 16:38:30 -07007717 WDI_ControlBlockType* pWDICtx,
7718 WDI_EventInfoType* pEventData
7719)
7720{
7721 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7722 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007723 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007725 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 wpt_uint16 usDataOffset = 0;
7727 wpt_uint16 usSendSize = 0;
7728 wpt_uint16 uMsgSize = 0;
7729 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007730 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007731
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7734
7735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 -------------------------------------------------------------------------*/
7738 if (( NULL == pEventData ) ||
7739 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7740 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7741 {
7742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 }
7747
7748 /*-------------------------------------------------------------------------
7749 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 -------------------------------------------------------------------------*/
7752 wpalMutexAcquire(&pWDICtx->wptMutex);
7753
7754 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007755 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007757 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7758 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7759 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007760
7761 if ( NULL == pBSSSes )
7762 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7764 "%s: Association sequence for this BSS does not yet exist - "
7765 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7766 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007767
7768 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007769 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 }
7771
7772 /*------------------------------------------------------------------------
7773 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 ------------------------------------------------------------------------*/
7776 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7777 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7779 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7780 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007781
Jeff Johnsone7245742012-09-05 17:12:55 -07007782 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007783
7784 wpalMutexRelease(&pWDICtx->wptMutex);
7785
Jeff Johnsone7245742012-09-05 17:12:55 -07007786 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007787 }
7788
7789 /*-----------------------------------------------------------------------
7790 If Post Assoc was not yet received - the current association must
7791 be in progress
7792 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007794 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7795 {
7796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7797 "Association sequence for this BSS association no longer in "
7798 "progress - not allowed");
7799
7800 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007801 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007802 }
7803
7804 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007806 -----------------------------------------------------------------------*/
7807 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7808 {
7809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7810 "Post Assoc not allowed before JOIN - failing request");
7811
7812 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007813 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007814 }
7815
7816 wpalMutexRelease(&pWDICtx->wptMutex);
7817
7818 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7819 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7820 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007823 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7825 ( usSendSize < (usDataOffset + uMsgSize )))
7826 {
7827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7828 "Unable to get send buffer in start req %x %x %x",
7829 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 }
7833
7834 /*Copy the STA parameters */
7835 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7836 &pwdiPostAssocParams->wdiSTAParams );
7837
7838 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007839 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 WDI_STATableFindStaidByAddr(pWDICtx,
7841 pwdiPostAssocParams->wdiSTAParams.macSTA,
7842 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
7843 {
7844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7845 "This station does not exist in the WDI Station Table %d");
7846 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007847 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 }
7850
7851 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007852 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007853 pBSSSes->ucBSSIdx;
7854
7855 /*Copy the BSS parameters */
7856 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7857 &pwdiPostAssocParams->wdiBSSParams);
7858
7859 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 WDI_STATableFindStaidByAddr(pWDICtx,
7862 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07007864 {
7865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7866 "This station does not exist in the WDI Station Table %d");
7867 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 }
7870
7871 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007872 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007873 pBSSSes->ucBSSIdx;
7874
Jeff Johnsone7245742012-09-05 17:12:55 -07007875
7876 wpalMemoryCopy( pSendBuffer+usDataOffset,
7877 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
7878 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007879
7880 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
7881
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
7883 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7884 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007885
Jeff Johnsone7245742012-09-05 17:12:55 -07007886
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007888 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007889
Jeff Johnsone7245742012-09-05 17:12:55 -07007890
7891 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07007892 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07007894
7895 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007896 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
7900
Jeff Johnsone7245742012-09-05 17:12:55 -07007901
Jeff Johnson295189b2012-06-20 16:38:30 -07007902}/*WDI_ProcessPostAssocReq*/
7903
7904/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007907
7908 @param pWDICtx: pointer to the WLAN DAL context
7909 pEventData: pointer to the event information structure
7910
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 @see
7912 @return Result of the function call
7913*/
7914WDI_Status
7915WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007916(
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 WDI_ControlBlockType* pWDICtx,
7918 WDI_EventInfoType* pEventData
7919)
7920{
7921 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
7922 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007923 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007924 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007925 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 wpt_uint16 usDataOffset = 0;
7927 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007928 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07007929 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7930
Jeff Johnsone7245742012-09-05 17:12:55 -07007931 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7933
7934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 -------------------------------------------------------------------------*/
7937 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
7938 ( NULL == pEventData->pCBfnc ))
7939 {
7940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007944 }
7945
7946 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
7947 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
7948 /*-------------------------------------------------------------------------
7949 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007951 -------------------------------------------------------------------------*/
7952 wpalMutexAcquire(&pWDICtx->wptMutex);
7953
7954 /*------------------------------------------------------------------------
7955 Find the BSS for which the request is made and identify WDI session
7956 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007957 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
7958 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 &macBSSID))
7960 {
7961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7962 "This station does not exist in the WDI Station Table %d");
7963 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007965 }
7966
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
7968 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007969 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7971 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
7972 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007973
7974 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007975 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007976 }
7977
7978 /*------------------------------------------------------------------------
7979 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 ------------------------------------------------------------------------*/
7982 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7983 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7985 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7986 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007987
Jeff Johnsone7245742012-09-05 17:12:55 -07007988 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007990 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 }
7992
7993 wpalMutexRelease(&pWDICtx->wptMutex);
7994 /*-----------------------------------------------------------------------
7995 Get message buffer
7996 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 sizeof(halDelStaReqMsg.delStaParams),
7999 &pSendBuffer, &usDataOffset, &usSendSize))||
8000 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8001 {
8002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8003 "Unable to get send buffer in start req %x %x %x",
8004 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008007 }
8008
Jeff Johnsone7245742012-09-05 17:12:55 -07008009 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8010 wpalMemoryCopy( pSendBuffer+usDataOffset,
8011 &halDelStaReqMsg.delStaParams,
8012 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008013
8014 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008015 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008016
8017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8022
8023}/*WDI_ProcessDelSTAReq*/
8024
8025
8026/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008027 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008028==========================================================================*/
8029/**
8030 @brief Process Set BSS Key Request function (called when Main FSM
8031 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008032
8033 @param pWDICtx: pointer to the WLAN DAL context
8034 pEventData: pointer to the event information structure
8035
Jeff Johnson295189b2012-06-20 16:38:30 -07008036 @see
8037 @return Result of the function call
8038*/
8039WDI_Status
8040WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008041(
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 WDI_ControlBlockType* pWDICtx,
8043 WDI_EventInfoType* pEventData
8044)
8045{
8046 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8047 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 wpt_uint16 usDataOffset = 0;
8052 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8055 wpt_uint8 keyIndex = 0;
8056
8057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8058
8059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 -------------------------------------------------------------------------*/
8062 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8063 ( NULL == pEventData->pCBfnc ))
8064 {
8065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008069 }
8070
8071 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8072 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8073 /*-------------------------------------------------------------------------
8074 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 -------------------------------------------------------------------------*/
8077 wpalMutexAcquire(&pWDICtx->wptMutex);
8078
8079 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008080 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008081 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008082 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8083 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8084 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008085
Jeff Johnsone7245742012-09-05 17:12:55 -07008086 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008087 {
8088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008089 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8090 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008091
8092 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 }
8095
8096 /*------------------------------------------------------------------------
8097 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 ------------------------------------------------------------------------*/
8100 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8101 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8103 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8104 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008105
Jeff Johnsone7245742012-09-05 17:12:55 -07008106 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008107 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 }
8110
8111
8112 wpalMutexRelease(&pWDICtx->wptMutex);
8113 /*-----------------------------------------------------------------------
8114 Get message buffer
8115 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008117 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8118 &pSendBuffer, &usDataOffset, &usSendSize))||
8119 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8120 {
8121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8122 "Unable to get send buffer in set bss key req %x %x %x",
8123 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008126 }
8127
8128 /*-----------------------------------------------------------------------
8129 Copy the Key parameters into the HAL message
8130 -----------------------------------------------------------------------*/
8131
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008133
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008135 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8136
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8139
8140 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8141 keyIndex++)
8142 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008143 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008144 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8145 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8146 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8147 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8148 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8149 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008152 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008154 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008155 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8156 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008157 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008158 WDI_MAX_KEY_LENGTH);
8159 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008160
8161 wpalMemoryCopy( pSendBuffer+usDataOffset,
8162 &halSetBssKeyReqMsg.setBssKeyParams,
8163 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008164
8165 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008167
8168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008169 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8172 wdiSetBSSKeyRspCb, pEventData->pUserData,
8173 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008174
8175}/*WDI_ProcessSetBssKeyReq*/
8176
8177/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008178 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008179 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008180
8181 @param pWDICtx: pointer to the WLAN DAL context
8182 pEventData: pointer to the event information structure
8183
Jeff Johnson295189b2012-06-20 16:38:30 -07008184 @see
8185 @return Result of the function call
8186*/
8187WDI_Status
8188WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008189(
Jeff Johnson295189b2012-06-20 16:38:30 -07008190 WDI_ControlBlockType* pWDICtx,
8191 WDI_EventInfoType* pEventData
8192)
8193{
8194 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8195 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008196 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008197 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 wpt_uint16 usDataOffset = 0;
8200 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008201 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008202 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8204
8205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008207 -------------------------------------------------------------------------*/
8208 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8209 ( NULL == pEventData->pCBfnc ))
8210 {
8211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008215 }
8216
8217 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8218 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8219 /*-------------------------------------------------------------------------
8220 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008221 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008222 -------------------------------------------------------------------------*/
8223 wpalMutexAcquire(&pWDICtx->wptMutex);
8224
8225 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008226 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008227 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008228 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8229 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8230 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008231
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 {
8234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8236 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008237
8238 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 }
8241
8242 /*------------------------------------------------------------------------
8243 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 ------------------------------------------------------------------------*/
8246 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8247 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8249 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8250 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008251
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 }
8256
8257
8258 wpalMutexRelease(&pWDICtx->wptMutex);
8259
8260 /*-----------------------------------------------------------------------
8261 Get message buffer
8262 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008263 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008264 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8265 &pSendBuffer, &usDataOffset, &usSendSize))||
8266 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8267 {
8268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8269 "Unable to get send buffer in set bss key req %x %x %x",
8270 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008273 }
8274 /*-----------------------------------------------------------------------
8275 Copy the Key parameters into the HAL message
8276 -----------------------------------------------------------------------*/
8277 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8278
Jeff Johnsone7245742012-09-05 17:12:55 -07008279 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008280 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8281
8282 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8283
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8286
Jeff Johnsone7245742012-09-05 17:12:55 -07008287 wpalMemoryCopy( pSendBuffer+usDataOffset,
8288 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8289 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008290
8291 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008292 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008293
8294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008295 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008296 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008297 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008300}/*WDI_ProcessRemoveBssKeyReq*/
8301
8302/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008305
8306 @param pWDICtx: pointer to the WLAN DAL context
8307 pEventData: pointer to the event information structure
8308
Jeff Johnson295189b2012-06-20 16:38:30 -07008309 @see
8310 @return Result of the function call
8311*/
8312WDI_Status
8313WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008314(
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 WDI_ControlBlockType* pWDICtx,
8316 WDI_EventInfoType* pEventData
8317)
8318{
8319 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8320 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8321 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008322 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 wpt_uint16 usDataOffset = 0;
8324 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008325 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008326 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008327 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008328 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8329 wpt_uint8 keyIndex = 0;
8330
8331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8332
8333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 -------------------------------------------------------------------------*/
8336 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8337 ( NULL == pEventData->pCBfnc ))
8338 {
8339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008340 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 }
8344
8345 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8346 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8347 /*-------------------------------------------------------------------------
8348 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008349 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 -------------------------------------------------------------------------*/
8351 wpalMutexAcquire(&pWDICtx->wptMutex);
8352
8353 /*------------------------------------------------------------------------
8354 Find the BSS for which the request is made and identify WDI session
8355 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8357 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008358 &macBSSID))
8359 {
8360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8361 "This station does not exist in the WDI Station Table %d");
8362 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 }
8365
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8367 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8370 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8371 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008372
8373 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008376
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 /*------------------------------------------------------------------------
8378 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 ------------------------------------------------------------------------*/
8381 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8382 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8384 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8385 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008386
Jeff Johnsone7245742012-09-05 17:12:55 -07008387 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008388 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 }
8391
8392
8393 wpalMutexRelease(&pWDICtx->wptMutex);
8394 /*-----------------------------------------------------------------------
8395 Get message buffer
8396 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008398 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8399 &pSendBuffer, &usDataOffset, &usSendSize))||
8400 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8401 {
8402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8403 "Unable to get send buffer in set bss key req %x %x %x",
8404 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 }
8408 /*-----------------------------------------------------------------------
8409 Copy the STA Key parameters into the HAL message
8410 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8413
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8416
8417 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8418
8419 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8420
8421 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8422
8423#ifdef WLAN_SOFTAP_FEATURE
8424 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8425 keyIndex++)
8426 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8429 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8430 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8431 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8432 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8433 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008437 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008438 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008439 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8440 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 WDI_MAX_KEY_LENGTH);
8443 }
8444#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008445 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008446 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8447 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8448 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8449 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8450 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8451 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008455 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008457 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8458 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008459 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008460 WDI_MAX_KEY_LENGTH);
8461#endif
8462
Jeff Johnsone7245742012-09-05 17:12:55 -07008463 wpalMemoryCopy( pSendBuffer+usDataOffset,
8464 &halSetStaKeyReqMsg.setStaKeyParams,
8465 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008466
8467 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008469
8470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8474 wdiSetSTAKeyRspCb, pEventData->pUserData,
8475 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008476
8477}/*WDI_ProcessSetSTAKeyReq*/
8478
8479/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008482
8483 @param pWDICtx: pointer to the WLAN DAL context
8484 pEventData: pointer to the event information structure
8485
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 @see
8487 @return Result of the function call
8488*/
8489WDI_Status
8490WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008491(
Jeff Johnson295189b2012-06-20 16:38:30 -07008492 WDI_ControlBlockType* pWDICtx,
8493 WDI_EventInfoType* pEventData
8494)
8495{
8496 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8497 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8498 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008500 wpt_uint16 usDataOffset = 0;
8501 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 wpt_macAddr macBSSID;
8504 wpt_uint8 ucCurrentBSSSesIdx;
8505 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8507
8508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 -------------------------------------------------------------------------*/
8511 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8512 ( NULL == pEventData->pCBfnc ))
8513 {
8514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 }
8519
8520 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8521 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8522 /*-------------------------------------------------------------------------
8523 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008524 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 -------------------------------------------------------------------------*/
8526 wpalMutexAcquire(&pWDICtx->wptMutex);
8527
8528 /*------------------------------------------------------------------------
8529 Find the BSS for which the request is made and identify WDI session
8530 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8532 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 &macBSSID))
8534 {
8535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8536 "This station does not exist in the WDI Station Table %d");
8537 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 }
8540
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8542 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8545 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8546 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008547
8548 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008551
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 /*------------------------------------------------------------------------
8553 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008555 ------------------------------------------------------------------------*/
8556 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8557 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8559 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8560 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008561
Jeff Johnsone7245742012-09-05 17:12:55 -07008562 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008563 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 }
8566
8567
8568
8569 wpalMutexRelease(&pWDICtx->wptMutex);
8570 /*-----------------------------------------------------------------------
8571 Get message buffer
8572 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8575 &pSendBuffer, &usDataOffset, &usSendSize))||
8576 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8577 {
8578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8579 "Unable to get send buffer in set bss key req %x %x %x",
8580 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 }
8584
8585 /*-----------------------------------------------------------------------
8586 Copy the Key parameters into the HAL message
8587 -----------------------------------------------------------------------*/
8588
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8591
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8594
Jeff Johnsone7245742012-09-05 17:12:55 -07008595 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008596 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8597
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8600
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 wpalMemoryCopy( pSendBuffer+usDataOffset,
8602 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8603 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008604
8605 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008607
8608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008609 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008613 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008614
8615}/*WDI_ProcessRemoveSTAKeyReq*/
8616
8617/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008620
8621 @param pWDICtx: pointer to the WLAN DAL context
8622 pEventData: pointer to the event information structure
8623
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 @see
8625 @return Result of the function call
8626*/
8627WDI_Status
8628WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008629(
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 WDI_ControlBlockType* pWDICtx,
8631 WDI_EventInfoType* pEventData
8632)
8633{
8634 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8635 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8636 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 wpt_uint16 usDataOffset = 0;
8639 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008640 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008641 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8644 wpt_uint8 keyIndex = 0;
8645
8646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8647
8648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 -------------------------------------------------------------------------*/
8651 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8652 ( NULL == pEventData->pCBfnc ))
8653 {
8654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008658 }
8659
8660 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8661 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8662 /*-------------------------------------------------------------------------
8663 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008664 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008665 -------------------------------------------------------------------------*/
8666 wpalMutexAcquire(&pWDICtx->wptMutex);
8667
8668 /*------------------------------------------------------------------------
8669 Find the BSS for which the request is made and identify WDI session
8670 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8672 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 &macBSSID))
8674 {
8675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8676 "This station does not exist in the WDI Station Table %d");
8677 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008679 }
8680
Jeff Johnsone7245742012-09-05 17:12:55 -07008681 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8682 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 {
8684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8686 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008687
8688 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008689 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008690 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008691
Jeff Johnson295189b2012-06-20 16:38:30 -07008692 /*------------------------------------------------------------------------
8693 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008694 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008695 ------------------------------------------------------------------------*/
8696 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8697 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8699 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8700 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008701
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 }
8706
8707
8708 wpalMutexRelease(&pWDICtx->wptMutex);
8709 /*-----------------------------------------------------------------------
8710 Get message buffer
8711 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8714 &pSendBuffer, &usDataOffset, &usSendSize))||
8715 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8716 {
8717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8718 "Unable to get send buffer in set bss key req %x %x %x",
8719 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 }
8723 /*-----------------------------------------------------------------------
8724 Copy the STA Key parameters into the HAL message
8725 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008727 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8728
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8731
8732 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8733
8734 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8735
8736 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8737
8738#ifdef WLAN_SOFTAP_FEATURE
8739 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8740 keyIndex++)
8741 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008742 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008743 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8744 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8745 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8746 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8747 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8748 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008749 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008753 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008754 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8755 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008757 WDI_MAX_KEY_LENGTH);
8758 }
8759#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008761 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8762 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8763 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8764 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8765 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8766 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008767 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8773 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008774 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 WDI_MAX_KEY_LENGTH);
8776#endif
8777
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 wpalMemoryCopy( pSendBuffer+usDataOffset,
8779 &halSetStaKeyReqMsg.setStaKeyParams,
8780 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008781
8782 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008784
8785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8789 wdiSetSTAKeyRspCb, pEventData->pUserData,
8790 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008791
8792}/*WDI_ProcessSetSTABcastKeyReq*/
8793
8794/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008795 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008796 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008797
8798 @param pWDICtx: pointer to the WLAN DAL context
8799 pEventData: pointer to the event information structure
8800
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 @see
8802 @return Result of the function call
8803*/
8804WDI_Status
8805WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008806(
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 WDI_ControlBlockType* pWDICtx,
8808 WDI_EventInfoType* pEventData
8809)
8810{
8811 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8812 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8813 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 wpt_uint16 usDataOffset = 0;
8816 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 wpt_macAddr macBSSID;
8819 wpt_uint8 ucCurrentBSSSesIdx;
8820 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8822
8823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008825 -------------------------------------------------------------------------*/
8826 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8827 ( NULL == pEventData->pCBfnc ))
8828 {
8829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 }
8834
8835 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8836 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8837 /*-------------------------------------------------------------------------
8838 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008839 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008840 -------------------------------------------------------------------------*/
8841 wpalMutexAcquire(&pWDICtx->wptMutex);
8842
8843 /*------------------------------------------------------------------------
8844 Find the BSS for which the request is made and identify WDI session
8845 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8847 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 &macBSSID))
8849 {
8850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8851 "This station does not exist in the WDI Station Table %d");
8852 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 }
8855
Jeff Johnsone7245742012-09-05 17:12:55 -07008856 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8857 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8860 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8861 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008862
8863 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008866
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 /*------------------------------------------------------------------------
8868 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 ------------------------------------------------------------------------*/
8871 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8872 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8874 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8875 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008876
Jeff Johnsone7245742012-09-05 17:12:55 -07008877 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008878 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 }
8881
8882
8883
8884 wpalMutexRelease(&pWDICtx->wptMutex);
8885 /*-----------------------------------------------------------------------
8886 Get message buffer
8887 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
8890 &pSendBuffer, &usDataOffset, &usSendSize))||
8891 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
8892 {
8893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8894 "Unable to get send buffer in set bss key req %x %x %x",
8895 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
8896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008898 }
8899
8900 /*-----------------------------------------------------------------------
8901 Copy the Key parameters into the HAL message
8902 -----------------------------------------------------------------------*/
8903
Jeff Johnsone7245742012-09-05 17:12:55 -07008904 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008905 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
8906
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
8909
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
8912
Jeff Johnsone7245742012-09-05 17:12:55 -07008913 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
8915
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 wpalMemoryCopy( pSendBuffer+usDataOffset,
8917 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
8918 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008919
8920 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008922
8923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008924 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008928 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008929
8930}/*WDI_ProcessRemoveSTABcastKeyReq*/
8931
8932/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008934==========================================================================*/
8935/**
8936 @brief Process Add TSpec Request function (called when Main FSM
8937 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008938
8939 @param pWDICtx: pointer to the WLAN DAL context
8940 pEventData: pointer to the event information structure
8941
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 @see
8943 @return Result of the function call
8944*/
8945WDI_Status
8946WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008947(
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 WDI_ControlBlockType* pWDICtx,
8949 WDI_EventInfoType* pEventData
8950)
8951{
8952 WDI_AddTSReqParamsType* pwdiAddTSParams;
8953 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 wpt_uint16 usDataOffset = 0;
8958 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 wpt_macAddr macBSSID;
8961 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07008962
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8964
8965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 -------------------------------------------------------------------------*/
8968 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8969 ( NULL == pEventData->pCBfnc ))
8970 {
8971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008972 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008975 }
8976
8977 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
8978 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
8979 /*-------------------------------------------------------------------------
8980 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 -------------------------------------------------------------------------*/
8983 wpalMutexAcquire(&pWDICtx->wptMutex);
8984
8985 /*------------------------------------------------------------------------
8986 Find the BSS for which the request is made and identify WDI session
8987 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8989 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 &macBSSID))
8991 {
8992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8993 "This station does not exist in the WDI Station Table %d");
8994 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 }
8997
Jeff Johnsone7245742012-09-05 17:12:55 -07008998 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8999 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009000 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9002 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9003 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009004
9005 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009008
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 /*------------------------------------------------------------------------
9010 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009011 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009012 ------------------------------------------------------------------------*/
9013 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9014 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9016 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9017 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009018
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 }
9023
9024 wpalMutexRelease(&pWDICtx->wptMutex);
9025 /*-----------------------------------------------------------------------
9026 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9030 sizeof(halAddTsParams),
9031 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 &usSendSize))||
9033 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9034 {
9035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9036 "Unable to get send buffer in set bss key req %x %x %x",
9037 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 }
9041
9042 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9043 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9044
9045 //TSPEC IE
9046 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9047 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009054 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009055 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009058 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009061 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009070 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009072 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009073 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009076 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009077 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9078
9079 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009084 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009085 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009090 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009091 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009093 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9094
9095 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009096 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009097 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9100
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 wpalMemoryCopy( pSendBuffer+usDataOffset,
9102 &halAddTsParams,
9103 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009104
9105 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009107
9108 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009113 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009114}/*WDI_ProcessAddTSpecReq*/
9115
9116
9117/**
9118 @brief Process Del TSpec Request function (called when Main FSM
9119 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009120
9121 @param pWDICtx: pointer to the WLAN DAL context
9122 pEventData: pointer to the event information structure
9123
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 @see
9125 @return Result of the function call
9126*/
9127WDI_Status
9128WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009129(
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 WDI_ControlBlockType* pWDICtx,
9131 WDI_EventInfoType* pEventData
9132)
9133{
9134 WDI_DelTSReqParamsType* pwdiDelTSParams;
9135 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009138 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009139 wpt_uint16 usDataOffset = 0;
9140 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009141 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9143
9144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 -------------------------------------------------------------------------*/
9147 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9148 ( NULL == pEventData->pCBfnc ))
9149 {
9150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 }
9155
9156 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9157 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9158
9159 /*-------------------------------------------------------------------------
9160 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009162 -------------------------------------------------------------------------*/
9163 wpalMutexAcquire(&pWDICtx->wptMutex);
9164
9165 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9169 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9170 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009171
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9175 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9176 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9177
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 }
9181
9182 /*------------------------------------------------------------------------
9183 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 ------------------------------------------------------------------------*/
9186 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9187 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9189 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9190 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009191
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 }
9196
9197
9198 wpalMutexRelease(&pWDICtx->wptMutex);
9199 /*-----------------------------------------------------------------------
9200 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009203 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009204 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9205 &pSendBuffer, &usDataOffset, &usSendSize))||
9206 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9207 {
9208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9209 "Unable to get send buffer in set bss key req %x %x %x",
9210 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 }
9214
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 wpalMemoryCopy( pSendBuffer+usDataOffset,
9216 &pwdiDelTSParams->wdiDelTSInfo,
9217 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009218
9219 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009221
9222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009223 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9226 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009227}/*WDI_ProcessDelTSpecReq*/
9228
9229/**
9230 @brief Process Update EDCA Params Request function (called when
9231 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009232
9233 @param pWDICtx: pointer to the WLAN DAL context
9234 pEventData: pointer to the event information structure
9235
Jeff Johnson295189b2012-06-20 16:38:30 -07009236 @see
9237 @return Result of the function call
9238*/
9239WDI_Status
9240WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009241(
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 WDI_ControlBlockType* pWDICtx,
9243 WDI_EventInfoType* pEventData
9244)
9245{
9246 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9247 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 wpt_uint16 usDataOffset = 0;
9252 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009253 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9255
9256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009258 -------------------------------------------------------------------------*/
9259 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9260 ( NULL == pEventData->pCBfnc ))
9261 {
9262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009263 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 }
9267
9268 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9269 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9270 /*-------------------------------------------------------------------------
9271 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 -------------------------------------------------------------------------*/
9274 wpalMutexAcquire(&pWDICtx->wptMutex);
9275
9276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009277 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009278 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9280 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9281 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009282
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 {
9285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9287 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009288
9289 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 }
9292
9293 /*------------------------------------------------------------------------
9294 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009295 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009296 ------------------------------------------------------------------------*/
9297 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9298 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9300 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9301 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009302
Jeff Johnsone7245742012-09-05 17:12:55 -07009303 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 }
9307
9308
9309 wpalMutexRelease(&pWDICtx->wptMutex);
9310 /*-----------------------------------------------------------------------
9311 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9316 &pSendBuffer, &usDataOffset, &usSendSize))||
9317 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9318 {
9319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9320 "Unable to get send buffer in set bss key req %x %x %x",
9321 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 }
9325
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 wpalMemoryCopy( pSendBuffer+usDataOffset,
9327 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9328 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009329
9330 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009332
9333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9337 wdiUpdateEDCARspCb, pEventData->pUserData,
9338 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009339}/*WDI_ProcessUpdateEDCAParamsReq*/
9340
9341/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009343 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009344
9345 @param pWDICtx: pointer to the WLAN DAL context
9346 pEventData: pointer to the event information structure
9347
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 @see
9349 @return Result of the function call
9350*/
9351WDI_Status
9352WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009353(
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 WDI_ControlBlockType* pWDICtx,
9355 WDI_EventInfoType* pEventData
9356)
9357{
9358 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9359 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009360 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009361 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009362 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009363 wpt_uint16 usDataOffset = 0;
9364 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 wpt_macAddr macBSSID;
9367
9368 tAddBASessionReqMsg halAddBASessionReq;
9369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9370
9371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 -------------------------------------------------------------------------*/
9374 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9375 ( NULL == pEventData->pCBfnc ))
9376 {
9377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009381 }
9382
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009384 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009385 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009386 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9387 /*-------------------------------------------------------------------------
9388 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 -------------------------------------------------------------------------*/
9391 wpalMutexAcquire(&pWDICtx->wptMutex);
9392
9393 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9397 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 &macBSSID))
9399 {
9400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9401 "This station does not exist in the WDI Station Table %d");
9402 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009404 }
9405
9406
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009408
Jeff Johnsone7245742012-09-05 17:12:55 -07009409 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9412 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9413 __func__, MAC_ADDR_ARRAY(macBSSID));
9414
Jeff Johnson295189b2012-06-20 16:38:30 -07009415 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009417 }
9418
9419 /*------------------------------------------------------------------------
9420 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 ------------------------------------------------------------------------*/
9423 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9424 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9426 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9427 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009428
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 }
9433
9434
9435 wpalMutexRelease(&pWDICtx->wptMutex);
9436 /*-----------------------------------------------------------------------
9437 Get message buffer
9438 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9440 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 sizeof(halAddBASessionReq.addBASessionParams),
9442 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009443 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009444 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9445 {
9446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9447 "Unable to get send buffer in Add BA session req %x %x %x",
9448 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 }
9452
9453 halAddBASessionReq.addBASessionParams.staIdx =
9454 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9455 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9456 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9457 WDI_MAC_ADDR_LEN);
9458 halAddBASessionReq.addBASessionParams.baTID =
9459 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9460 halAddBASessionReq.addBASessionParams.baPolicy =
9461 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9462 halAddBASessionReq.addBASessionParams.baBufferSize =
9463 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9464 halAddBASessionReq.addBASessionParams.baTimeout =
9465 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9466 halAddBASessionReq.addBASessionParams.baSSN =
9467 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9468 halAddBASessionReq.addBASessionParams.baDirection =
9469 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9470
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 wpalMemoryCopy( pSendBuffer+usDataOffset,
9472 &halAddBASessionReq.addBASessionParams,
9473 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009474
9475 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009476 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009477
9478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9482 wdiAddBASessionRspCb, pEventData->pUserData,
9483 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009484}/*WDI_ProcessAddBASessionReq*/
9485
9486/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009489
9490 @param pWDICtx: pointer to the WLAN DAL context
9491 pEventData: pointer to the event information structure
9492
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 @see
9494 @return Result of the function call
9495*/
9496WDI_Status
9497WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009498(
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 WDI_ControlBlockType* pWDICtx,
9500 WDI_EventInfoType* pEventData
9501)
9502{
9503 WDI_DelBAReqParamsType* pwdiDelBAParams;
9504 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 wpt_uint16 usDataOffset = 0;
9509 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 wpt_macAddr macBSSID;
9512 tDelBAParams halDelBAparam;
9513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9514
9515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 -------------------------------------------------------------------------*/
9518 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9519 ( NULL == pEventData->pCBfnc ))
9520 {
9521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 }
9526
9527 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9528 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9529 /*-------------------------------------------------------------------------
9530 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 -------------------------------------------------------------------------*/
9533 wpalMutexAcquire(&pWDICtx->wptMutex);
9534
9535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009536 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9539 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009540 &macBSSID))
9541 {
9542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9543 "This station does not exist in the WDI Station Table %d");
9544 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 }
9547
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009549
Jeff Johnsone7245742012-09-05 17:12:55 -07009550 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009551 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9553 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9554 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009555
9556 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 }
9559
9560 /*------------------------------------------------------------------------
9561 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009562 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009563 ------------------------------------------------------------------------*/
9564 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9565 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9567 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9568 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009569
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 }
9574
9575 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 sizeof(halDelBAparam),
9578 &pSendBuffer, &usDataOffset, &usSendSize))||
9579 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9580 {
9581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9582 "Unable to get send buffer for DEL BA req %x %x %x",
9583 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 }
9587
9588 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9589 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9590 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9591
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 wpalMemoryCopy( pSendBuffer+usDataOffset,
9593 &halDelBAparam,
9594 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009595
9596 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009598
9599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009602 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9603 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009604}/*WDI_ProcessDelBAReq*/
9605
9606#ifdef FEATURE_WLAN_CCX
9607
9608WDI_Status
9609WDI_ProcessTSMStatsReq
9610(
9611 WDI_ControlBlockType* pWDICtx,
9612 WDI_EventInfoType* pEventData
9613)
9614{
9615 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9616 WDI_TsmRspCb wdiTSMRspCb;
9617 wpt_uint8 ucCurrentBSSSesIdx = 0;
9618 WDI_BSSSessionType* pBSSSes = NULL;
9619 wpt_uint8* pSendBuffer = NULL;
9620 wpt_uint16 usDataOffset = 0;
9621 wpt_uint16 usSendSize = 0;
9622 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9623 tTsmStatsParams halTsmStatsReqParams = {0};
9624
9625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9626
9627 /*-------------------------------------------------------------------------
9628 Sanity check
9629 -------------------------------------------------------------------------*/
9630 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9631 ( NULL == pEventData->pCBfnc ))
9632 {
9633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 WDI_ASSERT(0);
9636 return WDI_STATUS_E_FAILURE;
9637 }
9638
9639 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9640 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9641 /*-------------------------------------------------------------------------
9642 Check to see if we are in the middle of an association, if so queue, if
9643 not it means it is free to process request
9644 -------------------------------------------------------------------------*/
9645 wpalMutexAcquire(&pWDICtx->wptMutex);
9646
9647 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9648 if ( NULL == pBSSSes )
9649 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9651 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9652 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009653
9654 wpalMutexRelease(&pWDICtx->wptMutex);
9655 return WDI_STATUS_E_NOT_ALLOWED;
9656 }
9657
9658 /*------------------------------------------------------------------------
9659 Check if this BSS is being currently processed or queued,
9660 if queued - queue the new request as well
9661 ------------------------------------------------------------------------*/
9662 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9663 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9665 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9666 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009667
9668 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9669 wpalMutexRelease(&pWDICtx->wptMutex);
9670 return wdiStatus;
9671 }
9672
9673 wpalMutexRelease(&pWDICtx->wptMutex);
9674 /*-----------------------------------------------------------------------
9675 Get message buffer
9676 ! TO DO : proper conversion into the HAL Message Request Format
9677 -----------------------------------------------------------------------*/
9678 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9679 sizeof(halTsmStatsReqParams),
9680 &pSendBuffer, &usDataOffset, &usSendSize))||
9681 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9682 {
9683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9684 "Unable to get send buffer in set bss key req %x %x %x",
9685 pEventData, pwdiTSMParams, wdiTSMRspCb);
9686 WDI_ASSERT(0);
9687 return WDI_STATUS_E_FAILURE;
9688 }
9689
9690 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9691 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9692 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9693 WDI_MAC_ADDR_LEN);
9694 wpalMemoryCopy( pSendBuffer+usDataOffset,
9695 &halTsmStatsReqParams,
9696 sizeof(halTsmStatsReqParams));
9697
9698 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9699 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9700
9701 /*-------------------------------------------------------------------------
9702 Send TSM Stats Request to HAL
9703 -------------------------------------------------------------------------*/
9704 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9705 wdiTSMRspCb, pEventData->pUserData,
9706 WDI_TSM_STATS_RESP);
9707}/*WDI_ProcessTSMStatsReq*/
9708
9709#endif
9710
9711
9712/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009714 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009715
9716 @param pWDICtx: pointer to the WLAN DAL context
9717 pEventData: pointer to the event information structure
9718
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 @see
9720 @return Result of the function call
9721*/
9722WDI_Status
9723WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009724(
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 WDI_ControlBlockType* pWDICtx,
9726 WDI_EventInfoType* pEventData
9727)
9728{
9729 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9730 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 wpt_uint16 usDataOffset = 0;
9733 wpt_uint16 usSendSize = 0;
9734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9735
9736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009737 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 -------------------------------------------------------------------------*/
9739 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9740 ( NULL == pEventData->pCBfnc ))
9741 {
9742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 }
9747
9748 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9749 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9750 /*-----------------------------------------------------------------------
9751 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009753 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9756 &pSendBuffer, &usDataOffset, &usSendSize))||
9757 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9758 {
9759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9760 "Unable to get send buffer in set bss key req %x %x %x",
9761 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 }
9765
Jeff Johnsone7245742012-09-05 17:12:55 -07009766 wpalMemoryCopy( pSendBuffer+usDataOffset,
9767 &pwdiFlushAcParams->wdiFlushAcInfo,
9768 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009769
9770 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009772
9773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009776 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9777 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009778}/*WDI_ProcessFlushAcReq*/
9779
9780/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009783
9784 @param pWDICtx: pointer to the WLAN DAL context
9785 pEventData: pointer to the event information structure
9786
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 @see
9788 @return Result of the function call
9789*/
9790WDI_Status
9791WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009792(
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 WDI_ControlBlockType* pWDICtx,
9794 WDI_EventInfoType* pEventData
9795)
9796{
9797 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9798 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009800 wpt_uint16 usDataOffset = 0;
9801 wpt_uint16 usSendSize = 0;
9802
9803 tBtAmpEventMsg haltBtAmpEventMsg;
9804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9805
9806 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009807 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009808 -------------------------------------------------------------------------*/
9809 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9810 ( NULL == pEventData->pCBfnc ))
9811 {
9812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009813 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009816 }
9817
9818 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9819 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9820 /*-----------------------------------------------------------------------
9821 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009823 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9826 &pSendBuffer, &usDataOffset, &usSendSize))||
9827 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9828 {
9829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9830 "Unable to get send buffer in BT AMP event req %x %x %x",
9831 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 }
9835
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009837 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 wpalMemoryCopy( pSendBuffer+usDataOffset,
9839 &haltBtAmpEventMsg.btAmpEventParams,
9840 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009841
9842 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009843 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009844
9845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009848 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9849 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009850}/*WDI_ProcessBtAmpEventReq*/
9851
9852/**
9853 @brief Process Add STA self Request function (called when Main FSM
9854 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009855
9856 @param pWDICtx: pointer to the WLAN DAL context
9857 pEventData: pointer to the event information structure
9858
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 @see
9860 @return Result of the function call
9861*/
9862WDI_Status
9863WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009864(
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 WDI_ControlBlockType* pWDICtx,
9866 WDI_EventInfoType* pEventData
9867)
9868{
9869 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9870 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009871 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009872 wpt_uint16 usDataOffset = 0;
9873 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9876
9877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 -------------------------------------------------------------------------*/
9880 if (( NULL == pEventData ) ||
9881 ( NULL == pEventData->pEventData) ||
9882 ( NULL == pEventData->pCBfnc))
9883 {
9884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009885 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009888 }
9889
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
9894 /*-----------------------------------------------------------------------
9895 Get message buffer
9896 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9898 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 sizeof(tAddStaSelfParams),
9900 &pSendBuffer, &usDataOffset, &usSendSize))||
9901 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
9902 {
9903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9904 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
9905 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
9906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 }
9909
9910 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
9913
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
9916
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
9918 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009919
9920 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009922
9923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009926 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9927 wdiAddSTASelfReqRspCb, pEventData->pUserData,
9928 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009929}/*WDI_ProcessAddSTASelfReq*/
9930
9931
9932
9933/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009936
9937 @param pWDICtx: pointer to the WLAN DAL context
9938 pEventData: pointer to the event information structure
9939
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 @see
9941 @return Result of the function call
9942*/
9943WDI_Status
9944WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009945(
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 WDI_ControlBlockType* pWDICtx,
9947 WDI_EventInfoType* pEventData
9948)
9949{
9950 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
9951 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009953 wpt_uint16 usDataOffset = 0;
9954 wpt_uint16 usSendSize = 0;
9955 tDelStaSelfParams halSetDelSelfSTAParams;
9956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9957
9958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009959 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 -------------------------------------------------------------------------*/
9961 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9962 ( NULL == pEventData->pCBfnc ))
9963 {
9964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 }
9969
Jeff Johnsone7245742012-09-05 17:12:55 -07009970 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
9972 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
9973
9974 /*-----------------------------------------------------------------------
9975 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009979 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
9980 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
9983 {
9984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9985 "Unable to get send buffer in Del Sta Self req %x %x %x",
9986 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
9987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009989 }
9990
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
9993
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
9995 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009996
9997 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009999
10000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010001 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10004 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010005 WDI_DEL_STA_SELF_RESP);
10006
10007}
10008
Jeff Johnsone7245742012-09-05 17:12:55 -070010009#ifdef FEATURE_OEM_DATA_SUPPORT
10010/**
10011 @brief Process Start Oem Data Request function (called when Main
10012 FSM allows it)
10013
10014 @param pWDICtx: pointer to the WLAN DAL context
10015 pEventData: pointer to the event information structure
10016
10017 @see
10018 @return Result of the function call
10019*/
10020WDI_Status
10021WDI_ProcessStartOemDataReq
10022(
10023 WDI_ControlBlockType* pWDICtx,
10024 WDI_EventInfoType* pEventData
10025)
10026{
10027 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10028 WDI_oemDataRspCb wdiOemDataRspCb;
10029 wpt_uint8* pSendBuffer = NULL;
10030 wpt_uint16 usDataOffset = 0;
10031 wpt_uint16 usSendSize = 0;
10032 wpt_uint16 reqLen;
10033 tStartOemDataReqParams* halStartOemDataReqParams;
10034
10035 /*-------------------------------------------------------------------------
10036 Sanity check
10037 -------------------------------------------------------------------------*/
10038 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10039 ( NULL == pEventData->pCBfnc ))
10040 {
10041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010042 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010043 WDI_ASSERT(0);
10044 return WDI_STATUS_E_FAILURE;
10045 }
10046
10047 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10048 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10049
10050 /*-----------------------------------------------------------------------
10051 Get message buffer
10052 -----------------------------------------------------------------------*/
10053
10054 reqLen = sizeof(tStartOemDataReqParams);
10055
10056 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10057 WDI_START_OEM_DATA_REQ, reqLen,
10058 &pSendBuffer, &usDataOffset, &usSendSize))||
10059 (usSendSize < (usDataOffset + reqLen)))
10060 {
10061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10062 "Unable to get send buffer in Start Oem Data req %x %x %x",
10063 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10064 WDI_ASSERT(0);
10065 return WDI_STATUS_E_FAILURE;
10066 }
10067
10068 //copying WDI OEM DATA REQ PARAMS to shared memory
10069 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10070
10071 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10072 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10073
10074 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10075 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10076
10077 /*-------------------------------------------------------------------------
10078 Send Start Request to HAL
10079 -------------------------------------------------------------------------*/
10080 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10081 wdiOemDataRspCb, pEventData->pUserData,
10082 WDI_START_OEM_DATA_RESP);
10083}/*WDI_ProcessStartOemDataReq*/
10084#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010085
10086/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010087 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010088 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010089
10090 @param pWDICtx: pointer to the WLAN DAL context
10091 pEventData: pointer to the event information structure
10092
Jeff Johnson295189b2012-06-20 16:38:30 -070010093 @see
10094 @return Result of the function call
10095*/
10096WDI_Status
10097WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010098(
Jeff Johnson295189b2012-06-20 16:38:30 -070010099 WDI_ControlBlockType* pWDICtx,
10100 WDI_EventInfoType* pEventData
10101)
10102{
10103 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10104 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 wpt_uint16 usDataOffset = 0;
10107 wpt_uint16 usSendSize = 0;
10108 tHalWlanHostResumeReqParam halResumeReqParams;
10109
10110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10111
10112 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010113 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010114 -------------------------------------------------------------------------*/
10115 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10116 ( NULL == pEventData->pCBfnc ))
10117 {
10118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010119 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010122 }
10123
10124 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10125 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10126
10127 /*-----------------------------------------------------------------------
10128 Get message buffer
10129 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010130 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010131 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10132 &pSendBuffer, &usDataOffset, &usSendSize))||
10133 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10134 {
10135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010137 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 }
10141
Jeff Johnsone7245742012-09-05 17:12:55 -070010142 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010143 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010144
10145 wpalMemoryCopy( pSendBuffer+usDataOffset,
10146 &halResumeReqParams,
10147 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010148
10149 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010151
10152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010153 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10156 wdiHostResumeRspCb, pEventData->pUserData,
10157 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010158}/*WDI_ProcessHostResumeReq*/
10159
10160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010163
10164 @param pWDICtx: pointer to the WLAN DAL context
10165 pEventData: pointer to the event information structure
10166
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 @see
10168 @return Result of the function call
10169*/
10170WDI_Status
10171WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010172(
Jeff Johnson295189b2012-06-20 16:38:30 -070010173 WDI_ControlBlockType* pWDICtx,
10174 WDI_EventInfoType* pEventData
10175)
10176{
10177 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10178 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 wpt_uint16 usDataOffset = 0;
10181 wpt_uint16 usSendSize = 0;
10182 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10184
10185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 -------------------------------------------------------------------------*/
10188 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10189 ( NULL == pEventData->pCBfnc ))
10190 {
10191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010192 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010195 }
10196
10197 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10198 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010199
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 /*-----------------------------------------------------------------------
10201 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 sizeof(halTxPerTrackingReqParam),
10206 &pSendBuffer, &usDataOffset, &usSendSize))||
10207 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10208 {
10209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10210 "Unable to get send buffer in set tx per tracking req %x %x %x",
10211 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010215
Jeff Johnson295189b2012-06-20 16:38:30 -070010216 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10217 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10218 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10219 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010220
10221 wpalMemoryCopy( pSendBuffer+usDataOffset,
10222 &halTxPerTrackingReqParam,
10223 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010224
10225 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010227
10228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010229 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010231 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10232 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010233}/*WDI_ProcessSetTxPerTrackingReq*/
10234
10235/*=========================================================================
10236 Indications
10237=========================================================================*/
10238
10239/**
10240 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010241
10242 @param pWDICtx: pointer to the WLAN DAL context
10243 pEventData: pointer to the event information structure
10244
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 @see
10246 @return Result of the function call
10247*/
10248WDI_Status
10249WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010250(
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 WDI_ControlBlockType* pWDICtx,
10252 WDI_EventInfoType* pEventData
10253)
10254{
10255 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010256 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010257 wpt_uint16 usDataOffset = 0;
10258 wpt_uint16 usSendSize = 0;
10259 WDI_Status wdiStatus;
10260 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10262
10263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010264 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010265 -------------------------------------------------------------------------*/
10266 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10267 {
10268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010269 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010272 }
10273
10274 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10275
10276 /*-----------------------------------------------------------------------
10277 Get message buffer
10278 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10280 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010281 sizeof(halWlanSuspendIndparams),
10282 &pSendBuffer, &usDataOffset, &usSendSize))||
10283 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10284 {
10285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10286 "Unable to get send buffer in Suspend Ind ");
10287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010289 }
10290
10291 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10292 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10293
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 WDI_GetActiveSessionsCount(pWDICtx);
10296
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10298 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010299
10300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010301 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010302 -------------------------------------------------------------------------*/
10303 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010305
Jeff Johnsone7245742012-09-05 17:12:55 -070010306 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010307 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10308}/*WDI_ProcessHostSuspendInd*/
10309
10310/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010312==========================================================================*/
10313/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010316
10317 @param pWDICtx: pointer to the WLAN DAL context
10318 pEventData: pointer to the event information structure
10319
Jeff Johnson295189b2012-06-20 16:38:30 -070010320 @see
10321 @return Result of the function call
10322*/
10323WDI_Status
10324WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010325(
Jeff Johnson295189b2012-06-20 16:38:30 -070010326 WDI_ControlBlockType* pWDICtx,
10327 WDI_EventInfoType* pEventData
10328)
10329{
10330 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10331 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010332 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010333 wpt_uint16 usDataOffset = 0;
10334 wpt_uint16 usSendSize = 0;
10335 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10337
10338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010340 -------------------------------------------------------------------------*/
10341 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10342 ( NULL == pEventData->pCBfnc ))
10343 {
10344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010348 }
10349
10350 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10351 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10352 /*-----------------------------------------------------------------------
10353 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010354 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010355 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010356 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 sizeof(halSwitchChannelReq.switchChannelParams),
10358 &pSendBuffer, &usDataOffset, &usSendSize))||
10359 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10360 {
10361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10362 "Unable to get send buffer in channel switch req %x %x %x",
10363 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010366 }
10367
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010370#ifndef WLAN_FEATURE_VOWIFI
10371 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10373#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010374 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10376
10377#ifdef WLAN_FEATURE_VOWIFI
10378 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10381 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10382 WDI_MAC_ADDR_LEN);
10383 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10384 pwdiSwitchChParams->wdiChInfo.macBSSId,
10385 WDI_MAC_ADDR_LEN);
10386#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 wpalMemoryCopy( pSendBuffer+usDataOffset,
10388 &halSwitchChannelReq.switchChannelParams,
10389 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010390
10391 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010393
10394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10398 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010399}/*WDI_ProcessChannelSwitchReq*/
10400
10401/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010403 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010404
10405 @param pWDICtx: pointer to the WLAN DAL context
10406 pEventData: pointer to the event information structure
10407
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 @see
10409 @return Result of the function call
10410*/
10411WDI_Status
10412WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010413(
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 WDI_ControlBlockType* pWDICtx,
10415 WDI_EventInfoType* pEventData
10416)
10417{
10418 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10419 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010422 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010423 wpt_uint16 usDataOffset = 0;
10424 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010426
Jeff Johnsone7245742012-09-05 17:12:55 -070010427 tConfigStaReqMsg halConfigStaReqMsg;
10428 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10430
10431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 -------------------------------------------------------------------------*/
10434 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10435 ( NULL == pEventData->pCBfnc ))
10436 {
10437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 }
10442
10443 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10444 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10445 /*-------------------------------------------------------------------------
10446 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 -------------------------------------------------------------------------*/
10449 wpalMutexAcquire(&pWDICtx->wptMutex);
10450
10451 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010452 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10455 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10456 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010457
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10461 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10462 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010463
10464 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010465 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010466 }
10467
10468 /*------------------------------------------------------------------------
10469 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 ------------------------------------------------------------------------*/
10472 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10473 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10475 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10476 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010477
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010480 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 }
10482
10483 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010484
10485 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10486#ifdef WLAN_FEATURE_11AC
10487 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010488 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 else
10490#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010491 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010492
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 /*-----------------------------------------------------------------------
10494 Get message buffer
10495 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10497 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 {
10501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10502 "Unable to get send buffer in config sta req %x %x %x",
10503 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010506 }
10507
10508 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010509 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 &pwdiConfigSTAParams->wdiReqInfo);
10511
10512 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10513 {
10514 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010516 WDI_STATableFindStaidByAddr(pWDICtx,
10517 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010518 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010519 {
10520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10521 "This station does not exist in the WDI Station Table %d");
10522 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010523 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 }
10526 }
10527 else
10528 {
10529 /* Need to fill in the STA Index to invalid, since at this point we have not
10530 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010531 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010532 }
10533
10534 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010536
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 wpalMemoryCopy( pSendBuffer+usDataOffset,
10538 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010539 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010540
10541 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010543
Jeff Johnsone7245742012-09-05 17:12:55 -070010544 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10545 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010546 sizeof(pWDICtx->wdiCachedConfigStaReq));
10547
10548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10552 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010553}/*WDI_ProcessConfigStaReq*/
10554
10555
10556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010557 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010558 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010559
10560 @param pWDICtx: pointer to the WLAN DAL context
10561 pEventData: pointer to the event information structure
10562
Jeff Johnson295189b2012-06-20 16:38:30 -070010563 @see
10564 @return Result of the function call
10565*/
10566WDI_Status
10567WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010568(
Jeff Johnson295189b2012-06-20 16:38:30 -070010569 WDI_ControlBlockType* pWDICtx,
10570 WDI_EventInfoType* pEventData
10571)
10572{
10573 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10574 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010577 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010578 wpt_uint16 usDataOffset = 0;
10579 wpt_uint16 usSendSize = 0;
10580 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10583
10584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010586 -------------------------------------------------------------------------*/
10587 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10588 ( NULL == pEventData->pCBfnc ))
10589 {
10590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010594 }
10595
10596 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10597 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10598 /*-------------------------------------------------------------------------
10599 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 -------------------------------------------------------------------------*/
10602 wpalMutexAcquire(&pWDICtx->wptMutex);
10603
10604 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010606 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010607 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10608 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10609 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010610
Jeff Johnsone7245742012-09-05 17:12:55 -070010611 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010612 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010614 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10615 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 }
10617 else
10618 {
10619 /*------------------------------------------------------------------------
10620 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010621 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010622 ------------------------------------------------------------------------*/
10623 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10624 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10626 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10627 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10628
10629 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010630 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010631 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010632 }
10633 }
10634 /* If the link is set to enter IDLE - the Session allocated for this BSS
10635 will be deleted on the Set Link State response coming from HAL
10636 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10639
10640 wpalMutexRelease(&pWDICtx->wptMutex);
10641 /*-----------------------------------------------------------------------
10642 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010645
10646 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 sizeof(halLinkStateReqMsg),
10648 &pSendBuffer, &usDataOffset, &usSendSize))||
10649 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10650 {
10651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10652 "Unable to get send buffer in set bss key req %x %x %x",
10653 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010656 }
10657
10658 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10659 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10660
10661 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10662 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10663
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10666
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 wpalMemoryCopy( pSendBuffer+usDataOffset,
10668 &halLinkStateReqMsg,
10669 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010670
10671 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010672 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010673
10674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010675 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010677 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10678 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010679}/*WDI_ProcessSetLinkStateReq*/
10680
10681
10682/**
10683 @brief Process Get Stats Request function (called when Main FSM
10684 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010685
10686 @param pWDICtx: pointer to the WLAN DAL context
10687 pEventData: pointer to the event information structure
10688
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 @see
10690 @return Result of the function call
10691*/
10692WDI_Status
10693WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010694(
Jeff Johnson295189b2012-06-20 16:38:30 -070010695 WDI_ControlBlockType* pWDICtx,
10696 WDI_EventInfoType* pEventData
10697)
10698{
10699 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10700 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010701 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 wpt_uint16 usDataOffset = 0;
10703 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 WDI_BSSSessionType* pBSSSes = NULL;
10706 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010707 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 tHalStatsReqMsg halStatsReqMsg;
10709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10724 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10725
10726 /*-------------------------------------------------------------------------
10727 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010728 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 -------------------------------------------------------------------------*/
10730 wpalMutexAcquire(&pWDICtx->wptMutex);
10731
10732 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010733 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010734 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010735 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10736 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010737 &macBSSID))
10738 {
10739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10740 "This station does not exist in the WDI Station Table %d");
10741 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010743 }
10744
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10746 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10749 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10750 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010751
10752 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 }
10755
10756 /*------------------------------------------------------------------------
10757 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 ------------------------------------------------------------------------*/
10760 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10761 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10763 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10764 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010765
Jeff Johnsone7245742012-09-05 17:12:55 -070010766 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010768 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 }
10770
10771
10772 wpalMutexRelease(&pWDICtx->wptMutex);
10773
10774 /*-----------------------------------------------------------------------
10775 Get message buffer
10776 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010778 sizeof(halStatsReqMsg.statsReqParams),
10779 &pSendBuffer, &usDataOffset, &usSendSize))||
10780 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10781 {
10782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10783 "Unable to get send buffer in set bss key req %x %x %x",
10784 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 }
10788
Jeff Johnsone7245742012-09-05 17:12:55 -070010789 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010791 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010793 wpalMemoryCopy( pSendBuffer+usDataOffset,
10794 &halStatsReqMsg.statsReqParams,
10795 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010796
10797 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010798 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010799
10800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010801 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010802 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10804 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010805}/*WDI_ProcessGetStatsReq*/
10806
10807/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010808 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010810
10811 @param pWDICtx: pointer to the WLAN DAL context
10812 pEventData: pointer to the event information structure
10813
Jeff Johnson295189b2012-06-20 16:38:30 -070010814 @see
10815 @return Result of the function call
10816*/
10817WDI_Status
10818WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010819(
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 WDI_ControlBlockType* pWDICtx,
10821 WDI_EventInfoType* pEventData
10822)
10823{
10824 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
10825 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
10826
Jeff Johnsone7245742012-09-05 17:12:55 -070010827 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010828 wpt_uint16 usDataOffset = 0;
10829 wpt_uint16 usSendSize = 0;
10830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10831
10832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010834 -------------------------------------------------------------------------*/
10835 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10836 ( NULL == pEventData->pCBfnc))
10837 {
10838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010839 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 }
10843
10844 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
10845 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
10846
10847 /*-----------------------------------------------------------------------
10848 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010849 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 -----------------------------------------------------------------------*/
10851
Jeff Johnsone7245742012-09-05 17:12:55 -070010852 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010853 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
10854 &pSendBuffer, &usDataOffset, &usSendSize))||
10855 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
10856 {
10857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10858 "Unable to get send buffer in set bss key req %x %x %x",
10859 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
10860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010862 }
10863
Jeff Johnsone7245742012-09-05 17:12:55 -070010864 wpalMemoryCopy( pSendBuffer+usDataOffset,
10865 &pwdiUpdateCfgParams->uConfigBufferLen,
10866 sizeof(wpt_uint32));
10867 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
10868 pwdiUpdateCfgParams->pConfigBuffer,
10869 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070010870
10871 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010873
10874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 -------------------------------------------------------------------------*/
10877
Jeff Johnsone7245742012-09-05 17:12:55 -070010878 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10879 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010880
10881}/*WDI_ProcessUpdateCfgReq*/
10882
10883
10884/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010886 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010887
10888 @param pWDICtx: pointer to the WLAN DAL context
10889 pEventData: pointer to the event information structure
10890
Jeff Johnson295189b2012-06-20 16:38:30 -070010891 @see
10892 @return Result of the function call
10893*/
10894WDI_Status
10895WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010896(
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 WDI_ControlBlockType* pWDICtx,
10898 WDI_EventInfoType* pEventData
10899)
10900{
10901 WDI_AddBAReqParamsType* pwdiAddBAParams;
10902 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010903 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010904 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010905 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 wpt_uint16 usDataOffset = 0;
10907 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010908 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010909 wpt_macAddr macBSSID;
10910
10911 tAddBAReqMsg halAddBAReq;
10912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10913
10914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010916 -------------------------------------------------------------------------*/
10917 if (( NULL == pEventData ) ||
10918 ( NULL == pEventData->pEventData) ||
10919 ( NULL == pEventData->pCBfnc ))
10920 {
10921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010925 }
10926
10927 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
10928 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
10929
10930 /*-------------------------------------------------------------------------
10931 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 -------------------------------------------------------------------------*/
10934 wpalMutexAcquire(&pWDICtx->wptMutex);
10935
10936 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10940 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 &macBSSID))
10942 {
10943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10944 "This station does not exist in the WDI Station Table %d");
10945 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 }
10948
Jeff Johnsone7245742012-09-05 17:12:55 -070010949 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10950 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010951 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10953 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10954 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010955
10956 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010958 }
10959
10960 /*------------------------------------------------------------------------
10961 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 ------------------------------------------------------------------------*/
10964 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10965 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10967 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10968 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010969
Jeff Johnsone7245742012-09-05 17:12:55 -070010970 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010971 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010972 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010973 }
10974
10975
10976 wpalMutexRelease(&pWDICtx->wptMutex);
10977 /*-----------------------------------------------------------------------
10978 Get message buffer
10979 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010980 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010981 sizeof(halAddBAReq.addBAParams),
10982 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010983 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010984 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
10985 {
10986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10987 "Unable to get send buffer in Add BA req %x %x %x",
10988 pEventData, pwdiAddBAParams, wdiAddBARspCb);
10989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010991 }
10992
Jeff Johnsone7245742012-09-05 17:12:55 -070010993 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070010994 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
10995 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
10996#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070010998 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
10999#endif
11000
Jeff Johnsone7245742012-09-05 17:12:55 -070011001 wpalMemoryCopy( pSendBuffer+usDataOffset,
11002 &halAddBAReq.addBAParams,
11003 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011004
11005 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011006 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011007
11008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011009 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011010 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011011 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11012 wdiAddBARspCb, pEventData->pUserData,
11013 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011014}/*WDI_ProcessAddBAReq*/
11015
11016
11017
11018/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011019 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011020 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011021
11022 @param pWDICtx: pointer to the WLAN DAL context
11023 pEventData: pointer to the event information structure
11024
Jeff Johnson295189b2012-06-20 16:38:30 -070011025 @see
11026 @return Result of the function call
11027*/
11028WDI_Status
11029WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011030(
Jeff Johnson295189b2012-06-20 16:38:30 -070011031 WDI_ControlBlockType* pWDICtx,
11032 WDI_EventInfoType* pEventData
11033)
11034{
11035 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11036 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011037 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011038 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011040 wpt_uint16 usDataOffset = 0;
11041 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011042 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011043 wpt_uint16 index;
11044 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011045
Jeff Johnson295189b2012-06-20 16:38:30 -070011046 tTriggerBAReqMsg halTriggerBAReq;
11047 tTriggerBaReqCandidate* halTriggerBACandidate;
11048 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11050
11051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011052 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011053 -------------------------------------------------------------------------*/
11054 if (( NULL == pEventData ) ||
11055 ( NULL == pEventData->pEventData ) ||
11056 ( NULL == pEventData->pCBfnc ))
11057 {
11058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011059 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011060 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011062 }
11063
11064 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11065 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11066 /*-------------------------------------------------------------------------
11067 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011068 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011069 -------------------------------------------------------------------------*/
11070 wpalMutexAcquire(&pWDICtx->wptMutex);
11071
11072 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011073 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011075 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11076 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011077 &macBSSID))
11078 {
11079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11080 "This station does not exist in the WDI Station Table %d");
11081 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011083 }
11084
Jeff Johnsone7245742012-09-05 17:12:55 -070011085 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11086 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011087 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11089 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11090 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011091
11092 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011094 }
11095
11096 /*------------------------------------------------------------------------
11097 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011098 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011099 ------------------------------------------------------------------------*/
11100 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11101 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11103 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11104 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011105
Jeff Johnsone7245742012-09-05 17:12:55 -070011106 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011107 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011108 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011109 }
11110
11111
11112 wpalMutexRelease(&pWDICtx->wptMutex);
11113 /*-----------------------------------------------------------------------
11114 Get message buffer
11115 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11117 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011118 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011119 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011120 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11121 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011122 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011123 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011124 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011125 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11126 {
11127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11128 "Unable to get send buffer in Trigger BA req %x %x %x",
11129 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011132 }
11133
Jeff Johnsone7245742012-09-05 17:12:55 -070011134 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011135 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011136 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011137 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11138
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 wpalMemoryCopy( pSendBuffer+usDataOffset,
11140 &halTriggerBAReq.triggerBAParams,
11141 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011142
Jeff Johnsone7245742012-09-05 17:12:55 -070011143 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011144 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11145 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11146 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011147
11148 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011149 index++)
11150 {
11151 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11152 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11153 halTriggerBACandidate++;
11154 wdiTriggerBACandidate++;
11155 }
11156
11157 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011158 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011159
11160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011163 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11164 wdiTriggerBARspCb, pEventData->pUserData,
11165 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011166}/*WDI_ProcessTriggerBAReq*/
11167
11168
11169
11170/**
11171 @brief Process Update Beacon Params Request function (called when Main FSM
11172 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011173
11174 @param pWDICtx: pointer to the WLAN DAL context
11175 pEventData: pointer to the event information structure
11176
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 @see
11178 @return Result of the function call
11179*/
11180WDI_Status
11181WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011182(
Jeff Johnson295189b2012-06-20 16:38:30 -070011183 WDI_ControlBlockType* pWDICtx,
11184 WDI_EventInfoType* pEventData
11185)
11186{
11187 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11188 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011189 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 wpt_uint16 usDataOffset = 0;
11191 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011192 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11194
11195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011197 -------------------------------------------------------------------------*/
11198 if (( NULL == pEventData ) ||
11199 ( NULL == pEventData->pEventData) ||
11200 ( NULL == pEventData->pCBfnc))
11201 {
11202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 }
11207
11208 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11209 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11210 /*-----------------------------------------------------------------------
11211 Get message buffer
11212 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011213 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011214 sizeof(halUpdateBeaconParams),
11215 &pSendBuffer, &usDataOffset, &usSendSize))||
11216 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11217 {
11218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11219 "Unable to get send buffer in set bss key req %x %x %x",
11220 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11221 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 }
11224
11225 /*BSS Index of the BSS*/
11226 halUpdateBeaconParams.bssIdx =
11227 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11228 /*shortPreamble mode. HAL should update all the STA rates when it
11229 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011230 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011231 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11232 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011233 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011234 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11235 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011237 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11238
11239 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011240 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011241 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011242 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011243 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011244 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011245 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011248 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011249 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011250 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011251 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11252 halUpdateBeaconParams.fRIFSMode =
11253 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011254 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011255 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11256
Jeff Johnsone7245742012-09-05 17:12:55 -070011257 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11258 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011259
11260 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011262
11263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011264 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011265 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011266 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11267 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011268}/*WDI_ProcessUpdateBeaconParamsReq*/
11269
11270
11271
11272/**
11273 @brief Process Send Beacon template Request function (called when Main FSM
11274 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011275
11276 @param pWDICtx: pointer to the WLAN DAL context
11277 pEventData: pointer to the event information structure
11278
Jeff Johnson295189b2012-06-20 16:38:30 -070011279 @see
11280 @return Result of the function call
11281*/
11282WDI_Status
11283WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011284(
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 WDI_ControlBlockType* pWDICtx,
11286 WDI_EventInfoType* pEventData
11287)
11288{
11289 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11290 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011291 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 wpt_uint16 usDataOffset = 0;
11293 wpt_uint16 usSendSize = 0;
11294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11295
11296 tSendBeaconReqMsg halSendBeaconReq;
11297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011299 -------------------------------------------------------------------------*/
11300 if (( NULL == pEventData ) ||
11301 ( NULL == pEventData->pEventData ) ||
11302 ( NULL == pEventData->pCBfnc ))
11303 {
11304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011308 }
11309
11310 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11311 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11312 /*-----------------------------------------------------------------------
11313 Get message buffer
11314 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011315 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011316 sizeof(halSendBeaconReq.sendBeaconParam),
11317 &pSendBuffer, &usDataOffset, &usSendSize))||
11318 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11319 {
11320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11321 "Unable to get send buffer in send beacon req %x %x %x",
11322 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 }
11326
11327 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11328 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11329 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011330 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011331 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11332 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11333 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11334 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
11335#ifdef WLAN_SOFTAP_FEATURE
Jeff Johnsone7245742012-09-05 17:12:55 -070011336 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011337 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
11338#endif
11339#ifdef WLAN_FEATURE_P2P
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
11342#endif
11343
Jeff Johnsone7245742012-09-05 17:12:55 -070011344 wpalMemoryCopy( pSendBuffer+usDataOffset,
11345 &halSendBeaconReq.sendBeaconParam,
11346 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011347
11348 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011349 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011350
11351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011352 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011353 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011354 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11355 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011356}/*WDI_ProcessSendBeaconParamsReq*/
11357
11358/**
11359 @brief Process Update Beacon Params Request function (called when Main FSM
11360 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011361
11362 @param pWDICtx: pointer to the WLAN DAL context
11363 pEventData: pointer to the event information structure
11364
Jeff Johnson295189b2012-06-20 16:38:30 -070011365 @see
11366 @return Result of the function call
11367*/
11368WDI_Status
11369WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011370(
Jeff Johnson295189b2012-06-20 16:38:30 -070011371 WDI_ControlBlockType* pWDICtx,
11372 WDI_EventInfoType* pEventData
11373)
11374{
11375 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11376 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 wpt_uint16 usDataOffset = 0;
11379 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011380 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11382
11383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011385 -------------------------------------------------------------------------*/
11386 if (( NULL == pEventData ) ||
11387 ( NULL == pEventData->pEventData) ||
11388 ( NULL == pEventData->pCBfnc))
11389 {
11390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011391 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 }
11395
Jeff Johnsone7245742012-09-05 17:12:55 -070011396 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011397 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011398 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011399 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11400 /*-----------------------------------------------------------------------
11401 Get message buffer
11402 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011403 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011404 sizeof(halUpdateProbeRspTmplParams),
11405 &pSendBuffer, &usDataOffset, &usSendSize))||
11406 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11407 {
11408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11409 "Unable to get send buffer in set bss key req %x %x %x",
11410 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011413 }
11414
11415 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011416 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011417 WDI_MAC_ADDR_LEN);
11418
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11421
11422 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11423 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011425
11426
11427 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11428 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11429 WDI_PROBE_REQ_BITMAP_IE_LEN);
11430
Jeff Johnsone7245742012-09-05 17:12:55 -070011431 wpalMemoryCopy( pSendBuffer+usDataOffset,
11432 &halUpdateProbeRspTmplParams,
11433 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011434
11435 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011436 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011437
11438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011439 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011440 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11442 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11443 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011444}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11445
11446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011447 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011448 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011449
11450 @param pWDICtx: pointer to the WLAN DAL context
11451 pEventData: pointer to the event information structure
11452
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 @see
11454 @return Result of the function call
11455*/
11456WDI_Status
11457WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011458(
Jeff Johnson295189b2012-06-20 16:38:30 -070011459 WDI_ControlBlockType* pWDICtx,
11460 WDI_EventInfoType* pEventData
11461)
11462{
11463
11464 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11465 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11466
11467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 -------------------------------------------------------------------------*/
11470 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011471 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011472 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011473 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011474 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11475 {
11476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011480 }
11481
11482 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011483 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011484 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11485
11486 /*cache the wdi nv request message here if the the first fragment
11487 * To issue the request to HAL for the next fragment */
11488 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11489 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11491 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011492 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11493
11494 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11495 pWDICtx->pRspCBUserData = pEventData->pUserData;
11496 }
11497
11498 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11499}
11500
11501/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011502 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011503 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011504
11505 @param pWDICtx: pointer to the WLAN DAL context
11506 pEventData: pointer to the event information structure
11507
Jeff Johnson295189b2012-06-20 16:38:30 -070011508 @see
11509 @return Result of the function call
11510*/
11511WDI_Status WDI_ProcessSetMaxTxPowerReq
11512(
11513 WDI_ControlBlockType* pWDICtx,
11514 WDI_EventInfoType* pEventData
11515)
11516{
11517 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11518 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011519 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 wpt_uint16 usDataOffset = 0;
11521 wpt_uint16 usSendSize = 0;
11522 tSetMaxTxPwrReq halSetMaxTxPower;
11523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11524
11525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011526 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 -------------------------------------------------------------------------*/
11528 if (( NULL == pEventData ) ||
11529 ( NULL == pEventData->pEventData ) ||
11530 ( NULL == pEventData->pCBfnc ))
11531 {
11532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011536 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011537 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011538 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11541
11542 /*-----------------------------------------------------------------------
11543 Get message buffer
11544 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011545if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011546 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11547 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011549)))
11550 {
11551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11552 "Unable to get Set Max Tx Power req %x %x %x",
11553 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11554 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011556 }
11557
11558 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11559 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11560 WDI_MAC_ADDR_LEN);
11561
11562 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11563 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11564 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011567
11568 wpalMemoryCopy( pSendBuffer+usDataOffset,
11569 &halSetMaxTxPower.setMaxTxPwrParams,
11570 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011571
11572 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011573 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011574
11575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011576 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011577 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011578 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11579 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11580 WDI_SET_MAX_TX_POWER_RESP);
11581
Jeff Johnson295189b2012-06-20 16:38:30 -070011582}
11583
11584#ifdef WLAN_FEATURE_P2P
11585
11586/**
11587 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11588 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011589
11590 @param pWDICtx: pointer to the WLAN DAL context
11591 pEventData: pointer to the event information structure
11592
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 @see
11594 @return Result of the function call
11595*/
11596WDI_Status
11597WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011598(
Jeff Johnson295189b2012-06-20 16:38:30 -070011599 WDI_ControlBlockType* pWDICtx,
11600 WDI_EventInfoType* pEventData
11601)
11602{
11603 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
11604 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 wpt_uint16 usDataOffset = 0;
11607 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11610
11611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011613 -------------------------------------------------------------------------*/
11614 if (( NULL == pEventData ) ||
11615 ( NULL == pEventData->pEventData) ||
11616 ( NULL == pEventData->pCBfnc))
11617 {
11618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 }
11623
Jeff Johnsone7245742012-09-05 17:12:55 -070011624 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011625 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011626 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011627 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
11628 /*-----------------------------------------------------------------------
11629 Get message buffer
11630 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11632 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 sizeof(halSetP2PGONOAParams),
11634 &pSendBuffer, &usDataOffset, &usSendSize))||
11635 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
11636 {
11637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11638 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
11639 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
11640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011642 }
11643
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070011645 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070011647 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
11648 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011653 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011654 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011655 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
11657
Jeff Johnsone7245742012-09-05 17:12:55 -070011658 wpalMemoryCopy( pSendBuffer+usDataOffset,
11659 &halSetP2PGONOAParams,
11660 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011661
11662 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011663 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011664
11665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11669 wdiP2PGONOAReqRspCb, pEventData->pUserData,
11670 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011671}/*WDI_ProcessP2PGONOAReq*/
11672
11673#endif
11674
11675
11676/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011677 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070011678 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070011679 @param None
11680
11681 @see
11682 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070011683*/
11684void
11685WDI_SetPowerStateCb
11686(
11687 wpt_status status,
11688 unsigned int dxePhyAddr,
11689 void *pContext
11690)
11691{
11692 wpt_status wptStatus;
11693 WDI_ControlBlockType *pCB = NULL;
11694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
11695 if(eWLAN_PAL_STATUS_E_FAILURE == status )
11696 {
11697 //it shouldn't happen, put an error msg
11698 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 /*
11700 * Trigger the event to bring the Enter BMPS req function to come
11701 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070011702*/
11703 if( NULL != pContext )
11704 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070011706 }
11707 else
11708 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011709 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070011710 pCB = &gWDICb;
11711 }
11712 pCB->dxePhyAddr = dxePhyAddr;
11713 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
11714 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11715 {
11716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11717 "Failed to set an event");
11718
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 }
11721 return;
11722}
11723
11724
11725/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011726 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011728
11729 @param pWDICtx: pointer to the WLAN DAL context
11730 pEventData: pointer to the event information structure
11731
Jeff Johnson295189b2012-06-20 16:38:30 -070011732 @see
11733 @return Result of the function call
11734*/
11735WDI_Status
11736WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011737(
Jeff Johnson295189b2012-06-20 16:38:30 -070011738 WDI_ControlBlockType* pWDICtx,
11739 WDI_EventInfoType* pEventData
11740)
11741{
Jeff Johnson43971f52012-07-17 12:26:56 -070011742 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011743 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011744 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011745 wpt_uint16 usDataOffset = 0;
11746 wpt_uint16 usSendSize = 0;
11747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11748
11749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011751 -------------------------------------------------------------------------*/
11752 if (( NULL == pEventData ) ||
11753 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
11754 {
11755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011756 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011757 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011759 }
11760
11761 /*-----------------------------------------------------------------------
11762 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011763 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011764 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011765 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011766 0,
11767 &pSendBuffer, &usDataOffset, &usSendSize))||
11768 ( usSendSize < (usDataOffset )))
11769 {
11770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11771 "Unable to get send buffer in Enter IMPS req %x %x",
11772 pEventData, wdiEnterImpsRspCb);
11773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011775 }
11776
11777 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011778 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11779 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011780 {
11781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11782 "WDI Init failed to reset an event");
11783
Jeff Johnsone7245742012-09-05 17:12:55 -070011784 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011785 return VOS_STATUS_E_FAILURE;
11786 }
11787
11788 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011789 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
11790 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
11791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11792 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
11793 WDI_ASSERT(0);
11794 return WDI_STATUS_E_FAILURE;
11795 }
Jeff Johnson295189b2012-06-20 16:38:30 -070011796
11797 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070011798 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011799 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011800 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11801 WDI_SET_POWER_STATE_TIMEOUT);
11802 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 {
11804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11805 "WDI Init failed to wait on an event");
11806
Jeff Johnsone7245742012-09-05 17:12:55 -070011807 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011808 return VOS_STATUS_E_FAILURE;
11809 }
11810
11811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011812 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011813 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011814 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11815 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011816}/*WDI_ProcessEnterImpsReq*/
11817
11818/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011819 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011820 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011821
11822 @param pWDICtx: pointer to the WLAN DAL context
11823 pEventData: pointer to the event information structure
11824
Jeff Johnson295189b2012-06-20 16:38:30 -070011825 @see
11826 @return Result of the function call
11827*/
11828WDI_Status
11829WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011830(
Jeff Johnson295189b2012-06-20 16:38:30 -070011831 WDI_ControlBlockType* pWDICtx,
11832 WDI_EventInfoType* pEventData
11833)
11834{
11835 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011836 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011837 wpt_uint16 usDataOffset = 0;
11838 wpt_uint16 usSendSize = 0;
11839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11840
11841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011842 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 -------------------------------------------------------------------------*/
11844 if (( NULL == pEventData ) ||
11845 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
11846 {
11847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011848 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011851 }
11852
11853 /*-----------------------------------------------------------------------
11854 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011855 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011856 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011857 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011858 0,
11859 &pSendBuffer, &usDataOffset, &usSendSize))||
11860 ( usSendSize < (usDataOffset )))
11861 {
11862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11863 "Unable to get send buffer in Exit IMPS req %x %x",
11864 pEventData, wdiExitImpsRspCb);
11865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011867 }
11868
11869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011870 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011871 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011872 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11873 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011874}/*WDI_ProcessExitImpsReq*/
11875
11876/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011877 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011879
11880 @param pWDICtx: pointer to the WLAN DAL context
11881 pEventData: pointer to the event information structure
11882
Jeff Johnson295189b2012-06-20 16:38:30 -070011883 @see
11884 @return Result of the function call
11885*/
11886WDI_Status
11887WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011888(
Jeff Johnson295189b2012-06-20 16:38:30 -070011889 WDI_ControlBlockType* pWDICtx,
11890 WDI_EventInfoType* pEventData
11891)
11892{
11893 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
11894 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011895 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011896 wpt_uint16 usDataOffset = 0;
11897 wpt_uint16 usSendSize = 0;
11898 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070011899 wpt_status wptStatus;
11900
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11902
11903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011905 -------------------------------------------------------------------------*/
11906 if (( NULL == pEventData ) ||
11907 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
11908 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
11909 {
11910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011914 }
11915
11916 /*-----------------------------------------------------------------------
11917 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011918 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011919 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011920 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 sizeof(enterBmpsReq),
11922 &pSendBuffer, &usDataOffset, &usSendSize))||
11923 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
11924 {
11925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11926 "Unable to get send buffer in Enter BMPS req %x %x %x",
11927 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
11928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 }
11931
11932 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011933 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11934 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 {
11936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11937 "WDI Init failed to reset an event");
11938
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 return VOS_STATUS_E_FAILURE;
11941 }
11942
11943 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011944 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
11945 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11946 {
11947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11948 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
11949 WDI_ASSERT(0);
11950 return WDI_STATUS_E_FAILURE;
11951 }
Jeff Johnson295189b2012-06-20 16:38:30 -070011952
11953/*
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011956 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11957 WDI_SET_POWER_STATE_TIMEOUT);
11958 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011959 {
11960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11961 "WDI Init failed to wait on an event");
11962
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 WDI_ASSERT(0);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011964 return VOS_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011965 }
11966
11967 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
11968
11969 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
11970 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
11971 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
11972 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
11973
11974 // For CCX and 11R Roaming
11975 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
11976 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
11977 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
11978
11979 wpalMemoryCopy( pSendBuffer+usDataOffset,
11980 &enterBmpsReq,
11981 sizeof(enterBmpsReq));
11982
11983 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011984 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011985
11986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011987 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011988 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011989 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11990 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011991}/*WDI_ProcessEnterBmpsReq*/
11992
11993/**
11994 @brief Process Exit BMPS Request function (called when Main FSM
11995 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011996
11997 @param pWDICtx: pointer to the WLAN DAL context
11998 pEventData: pointer to the event information structure
11999
Jeff Johnson295189b2012-06-20 16:38:30 -070012000 @see
12001 @return Result of the function call
12002*/
12003WDI_Status
12004WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012005(
Jeff Johnson295189b2012-06-20 16:38:30 -070012006 WDI_ControlBlockType* pWDICtx,
12007 WDI_EventInfoType* pEventData
12008)
12009{
12010 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12011 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012012 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012013 wpt_uint16 usDataOffset = 0;
12014 wpt_uint16 usSendSize = 0;
12015 tHalExitBmpsReqParams exitBmpsReq;
12016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12017
12018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012020 -------------------------------------------------------------------------*/
12021 if (( NULL == pEventData ) ||
12022 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12023 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12024 {
12025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 }
12030
12031 /*-----------------------------------------------------------------------
12032 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012033 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012034 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012035 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 sizeof(exitBmpsReq),
12037 &pSendBuffer, &usDataOffset, &usSendSize))||
12038 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12039 {
12040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12041 "Unable to get send buffer in Exit BMPS req %x %x %x",
12042 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 }
12046 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12047
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12049
Jeff Johnson295189b2012-06-20 16:38:30 -070012050 wpalMemoryCopy( pSendBuffer+usDataOffset,
12051 &exitBmpsReq,
12052 sizeof(exitBmpsReq));
12053
12054 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012056
12057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012059 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012060 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12061 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012062}/*WDI_ProcessExitBmpsReq*/
12063
12064/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012067
12068 @param pWDICtx: pointer to the WLAN DAL context
12069 pEventData: pointer to the event information structure
12070
Jeff Johnson295189b2012-06-20 16:38:30 -070012071 @see
12072 @return Result of the function call
12073*/
12074WDI_Status
12075WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012076(
Jeff Johnson295189b2012-06-20 16:38:30 -070012077 WDI_ControlBlockType* pWDICtx,
12078 WDI_EventInfoType* pEventData
12079)
12080{
12081 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12082 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012083 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012084 wpt_uint16 usDataOffset = 0;
12085 wpt_uint16 usSendSize = 0;
12086 tUapsdReqParams enterUapsdReq;
12087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12088
12089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012091 -------------------------------------------------------------------------*/
12092 if (( NULL == pEventData ) ||
12093 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12094 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12095 {
12096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012097 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012100 }
12101
12102 /*-----------------------------------------------------------------------
12103 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012104 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012107 sizeof(enterUapsdReq),
12108 &pSendBuffer, &usDataOffset, &usSendSize))||
12109 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12110 {
12111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12112 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12113 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012116 }
12117
12118 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12119 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12120 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12121 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12122 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12123 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12124 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12125 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012126 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012127
Jeff Johnsone7245742012-09-05 17:12:55 -070012128 wpalMemoryCopy( pSendBuffer+usDataOffset,
12129 &enterUapsdReq,
12130 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012131
12132 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012133 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012134
12135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012136 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012138 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12139 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012140}/*WDI_ProcessEnterUapsdReq*/
12141
12142/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012143 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012144 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012145
12146 @param pWDICtx: pointer to the WLAN DAL context
12147 pEventData: pointer to the event information structure
12148
Jeff Johnson295189b2012-06-20 16:38:30 -070012149 @see
12150 @return Result of the function call
12151*/
12152WDI_Status
12153WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012154(
Jeff Johnson295189b2012-06-20 16:38:30 -070012155 WDI_ControlBlockType* pWDICtx,
12156 WDI_EventInfoType* pEventData
12157)
12158{
12159 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 wpt_uint16 usDataOffset = 0;
12162 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012163 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12164 wpt_uint8 bssIdx = 0;
12165
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12167
12168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 -------------------------------------------------------------------------*/
12171 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012172 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012173 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12174 {
12175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 }
12180
12181 /*-----------------------------------------------------------------------
12182 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012184 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012186 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012187 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012188 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012189 {
12190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12191 "Unable to get send buffer in Exit UAPSD req %x %x",
12192 pEventData, wdiExitUapsdRspCb);
12193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012195 }
12196
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012197 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12198
12199 wpalMemoryCopy( pSendBuffer+usDataOffset,
12200 &bssIdx,
12201 sizeof(wpt_uint8));
12202
12203 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12204 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12205
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12210 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012211}/*WDI_ProcessExitUapsdReq*/
12212
12213/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012215 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012216
12217 @param pWDICtx: pointer to the WLAN DAL context
12218 pEventData: pointer to the event information structure
12219
Jeff Johnson295189b2012-06-20 16:38:30 -070012220 @see
12221 @return Result of the function call
12222*/
12223WDI_Status
12224WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012225(
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 WDI_ControlBlockType* pWDICtx,
12227 WDI_EventInfoType* pEventData
12228)
12229{
12230 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12231 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012232 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012233 wpt_uint16 usDataOffset = 0;
12234 wpt_uint16 usSendSize = 0;
12235 tUapsdInfo uapsdAcParamsReq;
12236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12237
12238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 -------------------------------------------------------------------------*/
12241 if (( NULL == pEventData ) ||
12242 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12243 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12244 {
12245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012249 }
12250
12251 /*-----------------------------------------------------------------------
12252 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012254 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012256 sizeof(uapsdAcParamsReq),
12257 &pSendBuffer, &usDataOffset, &usSendSize))||
12258 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12259 {
12260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12261 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12262 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 }
12266
12267 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12268 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12269 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12270 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12271 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12272 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12273
Jeff Johnsone7245742012-09-05 17:12:55 -070012274 wpalMemoryCopy( pSendBuffer+usDataOffset,
12275 &uapsdAcParamsReq,
12276 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012277
12278 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012280
12281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012282 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012284 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12285 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012286}/*WDI_ProcessSetUapsdAcParamsReq*/
12287
12288/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012289 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012291
12292 @param pWDICtx: pointer to the WLAN DAL context
12293 pEventData: pointer to the event information structure
12294
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 @see
12296 @return Result of the function call
12297*/
12298WDI_Status
12299WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012300(
Jeff Johnson295189b2012-06-20 16:38:30 -070012301 WDI_ControlBlockType* pWDICtx,
12302 WDI_EventInfoType* pEventData
12303)
12304{
12305 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12306 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012307 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 wpt_uint16 usDataOffset = 0;
12309 wpt_uint16 usSendSize = 0;
12310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12311
12312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012314 -------------------------------------------------------------------------*/
12315 if (( NULL == pEventData ) ||
12316 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12317 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12318 {
12319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 }
12324
12325 /*-----------------------------------------------------------------------
12326 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012327 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012328 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12331 &pSendBuffer, &usDataOffset, &usSendSize))||
12332 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12333 {
12334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12335 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12336 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12337 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 }
12340
Jeff Johnsone7245742012-09-05 17:12:55 -070012341 wpalMemoryCopy( pSendBuffer+usDataOffset,
12342 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12343 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012344
12345 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012346 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012347
12348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012350 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012351 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12352 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012353}/*WDI_ProcessUpdateUapsdParamsReq*/
12354
12355/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012356 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012357 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012358
12359 @param pWDICtx: pointer to the WLAN DAL context
12360 pEventData: pointer to the event information structure
12361
Jeff Johnson295189b2012-06-20 16:38:30 -070012362 @see
12363 @return Result of the function call
12364*/
12365WDI_Status
12366WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012367(
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 WDI_ControlBlockType* pWDICtx,
12369 WDI_EventInfoType* pEventData
12370)
12371{
12372 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12373 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012374 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 wpt_uint16 usDataOffset = 0;
12376 wpt_uint16 usSendSize = 0;
12377 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12378
12379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12380
12381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 -------------------------------------------------------------------------*/
12384 if (( NULL == pEventData ) ||
12385 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12386 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12387 {
12388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012389 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 }
12393
12394 /*-----------------------------------------------------------------------
12395 Get message buffer
12396 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012397 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012398 sizeof(halRxpFilterParams),
12399 &pSendBuffer, &usDataOffset, &usSendSize))||
12400 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12401 {
12402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12403 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12404 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012407 }
12408
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012412 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12413
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 wpalMemoryCopy( pSendBuffer+usDataOffset,
12415 &halRxpFilterParams,
12416 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012417
12418 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012419 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012420
12421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012424 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12425 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012426}/*WDI_ProcessConfigureRxpFilterReq*/
12427
12428/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012431
12432 @param pWDICtx: pointer to the WLAN DAL context
12433 pEventData: pointer to the event information structure
12434
Jeff Johnson295189b2012-06-20 16:38:30 -070012435 @see
12436 @return Result of the function call
12437*/
12438WDI_Status
12439WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012440(
Jeff Johnson295189b2012-06-20 16:38:30 -070012441 WDI_ControlBlockType* pWDICtx,
12442 WDI_EventInfoType* pEventData
12443)
12444{
12445 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12446 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012447 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 wpt_uint16 usDataOffset = 0;
12449 wpt_uint16 usSendSize = 0;
12450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12451
12452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012454 -------------------------------------------------------------------------*/
12455 if (( NULL == pEventData ) ||
12456 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12457 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12458 {
12459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012463 }
12464
12465 /*-----------------------------------------------------------------------
12466 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012467 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012468 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12471 &pSendBuffer, &usDataOffset, &usSendSize))||
12472 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12473 {
12474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12475 "Unable to get send buffer in Set beacon filter req %x %x %x",
12476 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 }
12480
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 wpalMemoryCopy( pSendBuffer+usDataOffset,
12482 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12483 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12484 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12485 &pwdiBeaconFilterParams->aFilters[0],
12486 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012487
12488 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012489 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012490
12491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012492 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012493 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012494 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12495 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012496}/*WDI_ProcessSetBeaconFilterReq*/
12497
12498/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012499 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012501
12502 @param pWDICtx: pointer to the WLAN DAL context
12503 pEventData: pointer to the event information structure
12504
Jeff Johnson295189b2012-06-20 16:38:30 -070012505 @see
12506 @return Result of the function call
12507*/
12508WDI_Status
12509WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012510(
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 WDI_ControlBlockType* pWDICtx,
12512 WDI_EventInfoType* pEventData
12513)
12514{
12515 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12516 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012517 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 wpt_uint16 usDataOffset = 0;
12519 wpt_uint16 usSendSize = 0;
12520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12521
12522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012524 -------------------------------------------------------------------------*/
12525 if (( NULL == pEventData ) ||
12526 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12527 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12528 {
12529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012533 }
12534
12535 /*-----------------------------------------------------------------------
12536 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012538 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012539 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012540 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12541 &pSendBuffer, &usDataOffset, &usSendSize))||
12542 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12543 {
12544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12545 "Unable to get send buffer in remove beacon filter req %x %x %x",
12546 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 }
12550
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 wpalMemoryCopy( pSendBuffer+usDataOffset,
12552 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12553 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012554
12555 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012557
12558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12562 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012563}
12564
12565/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012568
12569 @param pWDICtx: pointer to the WLAN DAL context
12570 pEventData: pointer to the event information structure
12571
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 @see
12573 @return Result of the function call
12574*/
12575WDI_Status
12576WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012577(
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 WDI_ControlBlockType* pWDICtx,
12579 WDI_EventInfoType* pEventData
12580)
12581{
12582 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12583 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 wpt_uint16 usDataOffset = 0;
12586 wpt_uint16 usSendSize = 0;
12587 tHalRSSIThresholds rssiThresholdsReq;
12588 WDI_Status ret_status = 0;
12589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12590
12591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012593 -------------------------------------------------------------------------*/
12594 if (( NULL == pEventData ) ||
12595 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
12596 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
12597 {
12598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 }
12603
12604 /*-----------------------------------------------------------------------
12605 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012606 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012607 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012609 sizeof(rssiThresholdsReq),
12610 &pSendBuffer, &usDataOffset, &usSendSize))||
12611 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
12612 {
12613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12614 "Unable to get send buffer in remove beacon filter req %x %x %x",
12615 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
12616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 }
12619
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012621 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070012622 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012623 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012624 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012625 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012626 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012627 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012633 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012634 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012635 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070012636 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012637 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
12640
Jeff Johnsone7245742012-09-05 17:12:55 -070012641 wpalMemoryCopy( pSendBuffer+usDataOffset,
12642 &rssiThresholdsReq,
12643 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012644
12645 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012646 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012647
12648 /*-------------------------------------------------------------------------
12649 Send Set threshold req to HAL
12650 -------------------------------------------------------------------------*/
12651 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12652 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
12653 {
12654 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
12655 // req. Then as a result of processing the threshold cross ind, we trigger
12656 // a Set threshold req, then we need to indicate to WDI that it needs to
12657 // go to busy state as a result of the indication as we sent a req in the
12658 // same WDI context.
12659 // Hence expected state transition is to busy.
12660 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
12661 }
12662
12663 return ret_status;
12664}
12665
12666/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012668 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012669
12670 @param pWDICtx: pointer to the WLAN DAL context
12671 pEventData: pointer to the event information structure
12672
Jeff Johnson295189b2012-06-20 16:38:30 -070012673 @see
12674 @return Result of the function call
12675*/
12676WDI_Status
12677WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012678(
Jeff Johnson295189b2012-06-20 16:38:30 -070012679 WDI_ControlBlockType* pWDICtx,
12680 WDI_EventInfoType* pEventData
12681)
12682{
12683 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
12684 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012686 wpt_uint16 usDataOffset = 0;
12687 wpt_uint16 usSendSize = 0;
12688 tHalHostOffloadReq hostOffloadParams;
12689 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012690 wpt_uint8 ucCurrentBSSSesIdx = 0;
12691 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012692
12693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12694
12695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 -------------------------------------------------------------------------*/
12698 if (( NULL == pEventData ) ||
12699 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
12700 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
12701 {
12702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012706 }
12707
12708 /*-----------------------------------------------------------------------
12709 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012710 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012711 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012712 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012713 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
12714 &pSendBuffer, &usDataOffset, &usSendSize))||
12715 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
12716 {
12717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12718 "Unable to get send buffer in host offload req %x %x %x",
12719 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
12720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012722 }
12723
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012724 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12725 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
12726 &pBSSSes);
12727 if ( NULL == pBSSSes )
12728 {
12729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012730 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012731 return WDI_STATUS_E_FAILURE;
12732 }
12733
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
12735 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070012736
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
12738 {
12739 // ARP Offload
12740 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
12741 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
12742 4);
12743 }
12744 else
12745 {
12746 // NS Offload
12747 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
12748 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
12749 16);
12750
12751#ifdef WLAN_NS_OFFLOAD
12752 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
12753 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
12754 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
12755 16);
12756 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
12757 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
12758 16);
12759 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
12760 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
12761 16);
12762 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
12763 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
12764 16);
12765 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
12766 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
12767 6);
12768 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
12769 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
12770 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070012771
Jeff Johnson295189b2012-06-20 16:38:30 -070012772#endif // WLAN_NS_OFFLOAD
12773 }
12774
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012775 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
12776
Jeff Johnson295189b2012-06-20 16:38:30 -070012777 // copy hostOffloadParams into pSendBuffer
12778 wpalMemoryCopy( pSendBuffer+usDataOffset,
12779 &hostOffloadParams,
12780 sizeof(hostOffloadParams));
12781
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012782 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070012783 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012784 // copy nsOffloadParams into pSendBuffer
12785 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070012786 &nsOffloadParams,
12787 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012788 }
12789 else
12790 {
12791#ifdef WLAN_NS_OFFLOAD
12792 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
12793 {
12794 // copy nsOffloadParams into pSendBuffer
12795 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
12796 &nsOffloadParams,
12797 sizeof(nsOffloadParams));
12798 }
12799#endif
12800 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012801
12802 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012804
12805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12809 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012810}/*WDI_ProcessHostOffloadReq*/
12811
12812/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012813 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012814 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012815
12816 @param pWDICtx: pointer to the WLAN DAL context
12817 pEventData: pointer to the event information structure
12818
Jeff Johnson295189b2012-06-20 16:38:30 -070012819 @see
12820 @return Result of the function call
12821*/
12822WDI_Status
12823WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012824(
Jeff Johnson295189b2012-06-20 16:38:30 -070012825 WDI_ControlBlockType* pWDICtx,
12826 WDI_EventInfoType* pEventData
12827)
12828{
12829 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
12830 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 wpt_uint16 usDataOffset = 0;
12833 wpt_uint16 usSendSize = 0;
12834 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012835 wpt_uint8 ucCurrentBSSSesIdx = 0;
12836 WDI_BSSSessionType* pBSSSes = NULL;
12837
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12839
12840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012841 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012842 -------------------------------------------------------------------------*/
12843 if (( NULL == pEventData ) ||
12844 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
12845 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
12846 {
12847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12848 "Invalid parameters in Keep Alive req");
12849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 }
12852
12853 /*-----------------------------------------------------------------------
12854 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012855 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 sizeof(keepAliveReq),
12859 &pSendBuffer, &usDataOffset, &usSendSize))||
12860 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
12861 {
12862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12863 "Unable to get send buffer in keep alive req %x %x %x",
12864 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
12865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 }
12868
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012869 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12870 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
12871 &pBSSSes);
12872 if ( NULL == pBSSSes )
12873 {
12874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012875 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012876 return WDI_STATUS_E_FAILURE;
12877 }
12878
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
12880 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
12881
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012882 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012883
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
12885 {
12886 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
12887 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
12888 HAL_IPV4_ADDR_LEN);
12889 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
12890 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 wpalMemoryCopy(keepAliveReq.destMacAddr,
12893 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
12894 HAL_MAC_ADDR_LEN);
12895 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012896
12897 wpalMemoryCopy( pSendBuffer+usDataOffset,
12898 &keepAliveReq,
12899 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012900
12901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12902 "Process keep alive req %d",sizeof(keepAliveReq));
12903
12904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12905 "Process keep alive req time period %d",keepAliveReq.timePeriod);
12906
12907 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012909
12910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12911 "Sending keep alive req to HAL");
12912
12913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012916 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12917 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012918}/*WDI_ProcessKeepAliveReq*/
12919
12920
12921/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012923 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012924
12925 @param pWDICtx: pointer to the WLAN DAL context
12926 pEventData: pointer to the event information structure
12927
Jeff Johnson295189b2012-06-20 16:38:30 -070012928 @see
12929 @return Result of the function call
12930*/
12931WDI_Status
12932WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012933(
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 WDI_ControlBlockType* pWDICtx,
12935 WDI_EventInfoType* pEventData
12936)
12937{
12938 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
12939 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 wpt_uint16 usDataOffset = 0;
12942 wpt_uint16 usSendSize = 0;
12943 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012944 wpt_uint8 ucCurrentBSSSesIdx = 0;
12945 WDI_BSSSessionType* pBSSSes = NULL;
12946
Jeff Johnson295189b2012-06-20 16:38:30 -070012947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12948
12949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012951 -------------------------------------------------------------------------*/
12952 if (( NULL == pEventData ) ||
12953 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
12954 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
12955 {
12956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012960 }
12961
12962 /*-----------------------------------------------------------------------
12963 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012964 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012966 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012967 sizeof(wowlAddBcPtrnReq),
12968 &pSendBuffer, &usDataOffset, &usSendSize))||
12969 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
12970 {
12971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12972 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
12973 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
12974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012976 }
12977
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012978 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12979 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
12980 &pBSSSes);
12981 if ( NULL == pBSSSes )
12982 {
12983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012984 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012985 return WDI_STATUS_E_FAILURE;
12986 }
12987
Jeff Johnsone7245742012-09-05 17:12:55 -070012988 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012989 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070012990 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012991 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070012992 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070012993 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070012994 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
12996
12997 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
12998 {
12999 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13000 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13001 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13002 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13003 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13004 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13005 }
13006 else
13007 {
13008 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13009 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13010 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13011 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13012 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13013 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13014
13015 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13016 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13017 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13018 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13019 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13020 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13021 }
13022
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013023 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13024
Jeff Johnson295189b2012-06-20 16:38:30 -070013025 wpalMemoryCopy( pSendBuffer+usDataOffset,
13026 &wowlAddBcPtrnReq,
13027 sizeof(wowlAddBcPtrnReq));
13028
13029 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013030 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013031
13032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013033 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013034 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13036 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013037}/*WDI_ProcessWowlAddBcPtrnReq*/
13038
13039/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013040 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013041 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013042
13043 @param pWDICtx: pointer to the WLAN DAL context
13044 pEventData: pointer to the event information structure
13045
Jeff Johnson295189b2012-06-20 16:38:30 -070013046 @see
13047 @return Result of the function call
13048*/
13049WDI_Status
13050WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013051(
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 WDI_ControlBlockType* pWDICtx,
13053 WDI_EventInfoType* pEventData
13054)
13055{
13056 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13057 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013058 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013059 wpt_uint16 usDataOffset = 0;
13060 wpt_uint16 usSendSize = 0;
13061 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013062 wpt_uint8 ucCurrentBSSSesIdx = 0;
13063 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13065
13066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 -------------------------------------------------------------------------*/
13069 if (( NULL == pEventData ) ||
13070 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13071 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13072 {
13073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013074 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013077 }
13078
13079 /*-----------------------------------------------------------------------
13080 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013081 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013083 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 sizeof(wowlDelBcPtrnReq),
13085 &pSendBuffer, &usDataOffset, &usSendSize))||
13086 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13087 {
13088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13089 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13090 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 }
13094
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013095 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13096 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13097 &pBSSSes);
13098 if ( NULL == pBSSSes )
13099 {
13100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013101 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013102 return WDI_STATUS_E_FAILURE;
13103 }
13104
Jeff Johnsone7245742012-09-05 17:12:55 -070013105 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013106 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013107
13108 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13109
Jeff Johnsone7245742012-09-05 17:12:55 -070013110 wpalMemoryCopy( pSendBuffer+usDataOffset,
13111 &wowlDelBcPtrnReq,
13112 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013113
13114 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013115 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013116
13117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013118 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013120 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13121 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013122}/*WDI_ProcessWowlDelBcPtrnReq*/
13123
13124/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013125 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013126 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013127
13128 @param pWDICtx: pointer to the WLAN DAL context
13129 pEventData: pointer to the event information structure
13130
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 @see
13132 @return Result of the function call
13133*/
13134WDI_Status
13135WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013136(
Jeff Johnson295189b2012-06-20 16:38:30 -070013137 WDI_ControlBlockType* pWDICtx,
13138 WDI_EventInfoType* pEventData
13139)
13140{
13141 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13142 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 wpt_uint16 usDataOffset = 0;
13145 wpt_uint16 usSendSize = 0;
13146 tHalWowlEnterParams wowlEnterReq;
13147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13148
13149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013151 -------------------------------------------------------------------------*/
13152 if (( NULL == pEventData ) ||
13153 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13154 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13155 {
13156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 }
13161
13162 /*-----------------------------------------------------------------------
13163 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013164 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013165 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013166 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 sizeof(wowlEnterReq),
13168 &pSendBuffer, &usDataOffset, &usSendSize))||
13169 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13170 {
13171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13172 "Unable to get send buffer in Wowl enter req %x %x %x",
13173 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 }
13177
Jeff Johnsone7245742012-09-05 17:12:55 -070013178 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013182 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013183 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013184 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013185 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013186 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013188 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013189 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013190 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013191 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13194
13195#ifdef WLAN_WAKEUP_EVENTS
13196 wowlEnterReq.ucWoWEAPIDRequestEnable =
13197 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13198
13199 wowlEnterReq.ucWoWEAPOL4WayEnable =
13200 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13201
13202 wowlEnterReq.ucWowNetScanOffloadMatch =
13203 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13204
13205 wowlEnterReq.ucWowGTKRekeyError =
13206 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13207
13208 wowlEnterReq.ucWoWBSSConnLoss =
13209 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13210#endif // WLAN_WAKEUP_EVENTS
13211
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013212 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13213
Jeff Johnson295189b2012-06-20 16:38:30 -070013214 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13215 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13216 sizeof(tSirMacAddr));
13217
Jeff Johnsone7245742012-09-05 17:12:55 -070013218 wpalMemoryCopy( pSendBuffer+usDataOffset,
13219 &wowlEnterReq,
13220 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013221
13222 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013223 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013224
13225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013226 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13229 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013230}/*WDI_ProcessWowlEnterReq*/
13231
13232/**
13233 @brief Process Wowl exit Request function (called when Main FSM
13234 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013235
13236 @param pWDICtx: pointer to the WLAN DAL context
13237 pEventData: pointer to the event information structure
13238
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 @see
13240 @return Result of the function call
13241*/
13242WDI_Status
13243WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013244(
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 WDI_ControlBlockType* pWDICtx,
13246 WDI_EventInfoType* pEventData
13247)
13248{
13249 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013250 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013252 wpt_uint16 usDataOffset = 0;
13253 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013254 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13256
13257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 -------------------------------------------------------------------------*/
13260 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013261 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13263 {
13264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 }
13269
13270 /*-----------------------------------------------------------------------
13271 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013272 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013273 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013275 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013276 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013277 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 {
13279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13280 "Unable to get send buffer in Wowl Exit req %x %x",
13281 pEventData, wdiWowlExitCb);
13282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 }
13285
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013286 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13287
13288 wpalMemoryCopy( pSendBuffer+usDataOffset,
13289 &wowlExitparams,
13290 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013292 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013294 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13295 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013296}/*WDI_ProcessWowlExitReq*/
13297
13298/**
13299 @brief Process Configure Apps Cpu Wakeup State Request function
13300 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013301
13302 @param pWDICtx: pointer to the WLAN DAL context
13303 pEventData: pointer to the event information structure
13304
Jeff Johnson295189b2012-06-20 16:38:30 -070013305 @see
13306 @return Result of the function call
13307*/
13308WDI_Status
13309WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013310(
Jeff Johnson295189b2012-06-20 16:38:30 -070013311 WDI_ControlBlockType* pWDICtx,
13312 WDI_EventInfoType* pEventData
13313)
13314{
13315 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13316 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013317 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013318 wpt_uint16 usDataOffset = 0;
13319 wpt_uint16 usSendSize = 0;
13320 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13322
13323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013325 -------------------------------------------------------------------------*/
13326 if (( NULL == pEventData ) ||
13327 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13328 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13329 {
13330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013334 }
13335
13336 /*-----------------------------------------------------------------------
13337 Get message buffer
13338 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013339 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013340 sizeof(halCfgAppsCpuWakeupStateReqParams),
13341 &pSendBuffer, &usDataOffset, &usSendSize))||
13342 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13343 {
13344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13345 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13346 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 }
13350
Jeff Johnsone7245742012-09-05 17:12:55 -070013351 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013352 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13353
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 wpalMemoryCopy( pSendBuffer+usDataOffset,
13355 &halCfgAppsCpuWakeupStateReqParams,
13356 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013357
13358 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013360
13361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013364 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13365 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13366 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013367}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13368
13369#ifdef WLAN_FEATURE_VOWIFI_11R
13370/**
13371 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13372 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013373
13374 @param pWDICtx: pointer to the WLAN DAL context
13375 pEventData: pointer to the event information structure
13376
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 @see
13378 @return Result of the function call
13379*/
13380WDI_Status
13381WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013382(
Jeff Johnson295189b2012-06-20 16:38:30 -070013383 WDI_ControlBlockType* pWDICtx,
13384 WDI_EventInfoType* pEventData
13385)
13386{
13387 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13388 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013389 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013390 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 wpt_uint16 usDataOffset = 0;
13393 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013394 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013395 wpt_macAddr macBSSID;
13396 tAggrAddTsReq halAggrAddTsReq;
13397 int i;
13398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13399
13400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 -------------------------------------------------------------------------*/
13403 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13404 ( NULL == pEventData->pCBfnc ))
13405 {
13406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013407 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 }
13411 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13412 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13413 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13414 /*-------------------------------------------------------------------------
13415 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 -------------------------------------------------------------------------*/
13418 wpalMutexAcquire(&pWDICtx->wptMutex);
13419
13420 /*------------------------------------------------------------------------
13421 Find the BSS for which the request is made and identify WDI session
13422 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013423 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13424 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013425 &macBSSID))
13426 {
13427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13428 "This station does not exist in the WDI Station Table %d");
13429 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 }
13432
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13434 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13437 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13438 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013439
13440 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013443
Jeff Johnson295189b2012-06-20 16:38:30 -070013444 /*------------------------------------------------------------------------
13445 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013447 ------------------------------------------------------------------------*/
13448 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13449 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13451 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13452 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013453
Jeff Johnsone7245742012-09-05 17:12:55 -070013454 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013456 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013457 }
13458
13459 wpalMutexRelease(&pWDICtx->wptMutex);
13460 /*-----------------------------------------------------------------------
13461 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 sizeof(tAggrAddTsParams),
13466 &pSendBuffer, &usDataOffset, &usSendSize))||
13467 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13468 {
13469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13470 "Unable to get send buffer in set bss key req %x %x %x",
13471 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 }
13475
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13480
13481 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13482 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13489 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13492 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013493 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013494 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13495 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013497 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13498 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13501 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013502 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013503 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13504 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013505 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13507 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013508 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13510 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013511 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013513 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013515
13516
13517 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013519 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013520 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013521 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013523 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013524 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013525 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013526 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013527 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013528 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013531 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013532 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013533 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013537 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013538 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013539 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013540 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013541 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013542 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013543 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013545 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013546 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13547 }
13548
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 wpalMemoryCopy( pSendBuffer+usDataOffset,
13550 &halAggrAddTsReq,
13551 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013552
13553 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013554 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013555
13556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013557 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013559 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013560 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070013561 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013562}/*WDI_ProcessAggrAddTSpecReq*/
13563#endif /* WLAN_FEATURE_VOWIFI_11R */
13564
13565/**
13566 @brief Process Shutdown Request function (called when Main FSM
13567 allows it)
13568
13569 @param pWDICtx: pointer to the WLAN DAL context
13570 pEventData: pointer to the event information structure
13571
13572 @see
13573 @return Result of the function call
13574*/
13575WDI_Status
13576WDI_ProcessShutdownReq
13577(
13578 WDI_ControlBlockType* pWDICtx,
13579 WDI_EventInfoType* pEventData
13580 )
13581{
13582 wpt_status wptStatus;
13583
13584
13585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13586
13587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013588 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013589 -------------------------------------------------------------------------*/
13590 if ( NULL == pEventData )
13591 {
13592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013594 WDI_ASSERT(0);
13595 return WDI_STATUS_E_FAILURE;
13596 }
13597
13598 wpalMutexAcquire(&pWDICtx->wptMutex);
13599
13600
13601 gWDIInitialized = eWLAN_PAL_FALSE;
13602 /*! TO DO: stop the data services */
13603 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13604 {
13605 /*Stop the STA Table !UT- check this logic again
13606 It is safer to do it here than on the response - because a stop is imminent*/
13607 WDI_STATableStop(pWDICtx);
13608
13609 /* Stop Transport Driver, DXE */
13610 WDTS_Stop(pWDICtx);
13611 }
13612
13613 /*Clear all pending request*/
13614 WDI_ClearPendingRequests(pWDICtx);
13615 /* Close Data transport*/
13616 /* FTM mode does not open Data Path */
13617 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13618 {
13619 WDTS_Close(pWDICtx);
13620 }
13621 /*Close the STA Table !UT- check this logic again*/
13622 WDI_STATableClose(pWDICtx);
13623 /*close the PAL */
13624 wptStatus = wpalClose(pWDICtx->pPALContext);
13625 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13626 {
13627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13628 "Failed to wpal Close %d", wptStatus);
13629 WDI_ASSERT(0);
13630 }
13631
13632 /*Transition back to init state*/
13633 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
13634
13635 wpalMutexRelease(&pWDICtx->wptMutex);
13636
13637 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013638 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070013639
13640
Jeff Johnsone7245742012-09-05 17:12:55 -070013641 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013642}/*WDI_ProcessShutdownReq*/
13643
13644/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013645 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070013646========================================================================*/
13647
13648/**
13649 @brief Process Start Response function (called when a response
13650 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013651
13652 @param pWDICtx: pointer to the WLAN DAL context
13653 pEventData: pointer to the event information structure
13654
Jeff Johnson295189b2012-06-20 16:38:30 -070013655 @see
13656 @return Result of the function call
13657*/
13658WDI_Status
13659WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013660(
Jeff Johnson295189b2012-06-20 16:38:30 -070013661 WDI_ControlBlockType* pWDICtx,
13662 WDI_EventInfoType* pEventData
13663)
13664{
13665 WDI_StartRspParamsType wdiRspParams;
13666 WDI_StartRspCb wdiStartRspCb = NULL;
13667
13668 tHalMacStartRspParams* startRspParams;
13669
13670#ifndef HAL_SELF_STA_PER_BSS
13671 WDI_AddStaParams wdiAddSTAParam = {0};
13672#endif
13673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13674
Jeff Johnsone7245742012-09-05 17:12:55 -070013675 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013677 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013678 -------------------------------------------------------------------------*/
13679 if (( NULL == pEventData ) ||
13680 ( NULL == pEventData->pEventData) ||
13681 ( NULL == wdiStartRspCb ))
13682 {
13683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 }
13688
13689 /*-------------------------------------------------------------------------
13690 Extract response and send it to UMAC
13691 -------------------------------------------------------------------------*/
13692 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
13693 {
13694 // not enough data was received
13695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13696 "Invalid response length in Start Resp Expect %x Rcvd %x",
13697 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
13698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013700 }
13701
13702 /*-------------------------------------------------------------------------
13703 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013704 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013705 -------------------------------------------------------------------------*/
13706 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
13707
13708 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
13709 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
13710 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
13711 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
13712 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
13713 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
13714 wdiRspParams.wlanReportedVersion.major =
13715 startRspParams->wcnssWlanVersion.major;
13716 wdiRspParams.wlanReportedVersion.minor =
13717 startRspParams->wcnssWlanVersion.minor;
13718 wdiRspParams.wlanReportedVersion.version =
13719 startRspParams->wcnssWlanVersion.version;
13720 wdiRspParams.wlanReportedVersion.revision =
13721 startRspParams->wcnssWlanVersion.revision;
13722 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
13723 startRspParams->wcnssCrmVersionString,
13724 sizeof(wdiRspParams.wcnssSoftwareVersion));
13725 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
13726 startRspParams->wcnssWlanVersionString,
13727 sizeof(wdiRspParams.wcnssHardwareVersion));
13728 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
13729
Pratik Bhalgatd4404592012-11-22 17:49:14 +053013730 /*Save the HAL Version*/
13731 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
13732
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 wpalMutexAcquire(&pWDICtx->wptMutex);
13734 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
13735 {
13736 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
13737
13738 /*Cache the start response for further use*/
13739 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070013740 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 sizeof(pWDICtx->wdiCachedStartRspParams));
13742
13743 }
13744 else
13745 {
13746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13747 "Failed to start device with status %s(%d)",
13748 WDI_getHALStatusMsgString(startRspParams->status),
13749 startRspParams->status);
13750
13751 /*Set the expected state transition to stopped - because the start has
13752 failed*/
13753 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13754
13755 wpalMutexRelease(&pWDICtx->wptMutex);
13756
13757 /*Notify UMAC*/
13758 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070013759
Jeff Johnson295189b2012-06-20 16:38:30 -070013760 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
13761
13762 /*Although the response is an error - it was processed by our function
13763 so as far as the caller is concerned this is a succesful reponse processing*/
13764 return WDI_STATUS_SUCCESS;
13765 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013766
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 wpalMutexRelease(&pWDICtx->wptMutex);
13768
13769 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
13770 {
13771 /* FTM mode does not need to execute below */
13772 /* Notify UMAC */
13773 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13774 return WDI_STATUS_SUCCESS;
13775 }
13776
13777 /* START the Data transport */
13778 WDTS_startTransport(pWDICtx);
13779
13780 /*Start the STA Table !- check this logic again*/
13781 WDI_STATableStart(pWDICtx);
13782
13783#ifndef HAL_SELF_STA_PER_BSS
13784 /* Store the Self STA Index */
13785 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
13786
13787 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
13788 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
13789 WDI_MAC_ADDR_LEN);
13790
13791 /* At this point add the self-STA */
13792
13793 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
13794 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
13795 /*! TO DO: wdiAddSTAParam.dpuSig */
13796 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
13797 /*! TO DO: wdiAddSTAParam.ucHTCapable */
13798 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
13799
13800 //all DPU indices are the same for self STA
13801 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
13802 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070013803 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
13805 WDI_MAC_ADDR_LEN);
13806 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
13807 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
13808
13809 /* Note: Since we don't get an explicit config STA request for self STA, we
13810 add the self STA upon receiving the Start response message. But the
13811 self STA entry in the table is deleted when WDI gets an explicit delete STA
13812 request */
13813 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
13814#endif
13815
13816 /*Notify UMAC*/
13817 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13818
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013820}/*WDI_ProcessStartRsp*/
13821
13822
13823/**
13824 @brief Process Stop Response function (called when a response
13825 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013826
13827 @param pWDICtx: pointer to the WLAN DAL context
13828 pEventData: pointer to the event information structure
13829
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 @see
13831 @return Result of the function call
13832*/
13833WDI_Status
13834WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013835(
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 WDI_ControlBlockType* pWDICtx,
13837 WDI_EventInfoType* pEventData
13838)
13839{
13840 WDI_Status wdiStatus;
13841 WDI_StopRspCb wdiStopRspCb = NULL;
13842
Jeff Johnsone7245742012-09-05 17:12:55 -070013843 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13845
Jeff Johnsone7245742012-09-05 17:12:55 -070013846 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013849 -------------------------------------------------------------------------*/
13850 if (( NULL == pEventData ) ||
13851 ( NULL == pEventData->pEventData) ||
13852 ( NULL == wdiStopRspCb ))
13853 {
13854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 }
13859
13860 /*-------------------------------------------------------------------------
13861 Extract response and send it to UMAC
13862 -------------------------------------------------------------------------*/
13863 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
13864 {
13865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13866 "Invalid response length in Stop Resp %x %x",
13867 pEventData->uEventDataSize);
13868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013870 }
13871
13872 /*-------------------------------------------------------------------------
13873 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013874 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013876 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
13877 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070013878 sizeof(halMacStopRspMsg.stopRspParams));
13879
Jeff Johnsone7245742012-09-05 17:12:55 -070013880 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070013881
13882 wpalMutexAcquire(&pWDICtx->wptMutex);
13883
13884 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013885 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 --------------------------------------------------------------------------*/
13887 if ( WDI_STATUS_SUCCESS != wdiStatus )
13888 {
13889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13890 "Failed to stop the device with status %s (%d)",
13891 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
13892 halMacStopRspMsg.stopRspParams.status);
13893
Jeff Johnsone7245742012-09-05 17:12:55 -070013894 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
13895
Jeff Johnson295189b2012-06-20 16:38:30 -070013896 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013898 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013899
Jeff Johnson295189b2012-06-20 16:38:30 -070013900 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13901
13902 /*Transition now as WDI may get preempted imediately after it sends
13903 up the Stop Response and it will not get to process the state transition
13904 from Main Rsp function*/
13905 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
13906 wpalMutexRelease(&pWDICtx->wptMutex);
13907
13908 /*! TO DO: - STOP the Data transport */
13909
13910 /*Notify UMAC*/
13911 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
13912
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013914}/*WDI_ProcessStopRsp*/
13915
13916/**
13917 @brief Process Close Rsp function (called when a response
13918 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013919
13920 @param pWDICtx: pointer to the WLAN DAL context
13921 pEventData: pointer to the event information structure
13922
Jeff Johnson295189b2012-06-20 16:38:30 -070013923 @see
13924 @return Result of the function call
13925*/
13926WDI_Status
13927WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013928(
Jeff Johnson295189b2012-06-20 16:38:30 -070013929 WDI_ControlBlockType* pWDICtx,
13930 WDI_EventInfoType* pEventData
13931)
13932{
13933 /*There is no close response comming from HAL - function just kept for
13934 simmetry */
13935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013936 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013937}/*WDI_ProcessCloseRsp*/
13938
13939
13940/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013941 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070013942============================================================================*/
13943
13944/**
13945 @brief Process Init Scan Rsp function (called when a response
13946 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013947
13948 @param pWDICtx: pointer to the WLAN DAL context
13949 pEventData: pointer to the event information structure
13950
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 @see
13952 @return Result of the function call
13953*/
13954WDI_Status
13955WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013956(
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 WDI_ControlBlockType* pWDICtx,
13958 WDI_EventInfoType* pEventData
13959)
13960{
13961 WDI_Status wdiStatus;
13962 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013964 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13966
13967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 -------------------------------------------------------------------------*/
13970 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
13971 ( NULL == pEventData->pEventData))
13972 {
13973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013974 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013977 }
13978
13979 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
13980 if( NULL == wdiInitScanRspCb)
13981 {
13982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013983 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 }
13987
13988 /*-------------------------------------------------------------------------
13989 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
13993 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 sizeof(halInitScanRspMsg.initScanRspParams));
13995
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070013997
13998 if ( pWDICtx->bInBmps )
13999 {
14000 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014001 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14002 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14004 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14005 WDI_ASSERT(0);
14006 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 }
14008
14009 /*Notify UMAC*/
14010 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14011
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014013}/*WDI_ProcessInitScanRsp*/
14014
14015
14016/**
14017 @brief Process Start Scan Rsp function (called when a response
14018 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014019
14020 @param pWDICtx: pointer to the WLAN DAL context
14021 pEventData: pointer to the event information structure
14022
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 @see
14024 @return Result of the function call
14025*/
14026WDI_Status
14027WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014028(
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 WDI_ControlBlockType* pWDICtx,
14030 WDI_EventInfoType* pEventData
14031)
14032{
14033 WDI_StartScanRspParamsType wdiStartScanParams;
14034 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014035
14036 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14038
14039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014040 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014041 -------------------------------------------------------------------------*/
14042 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14043 ( NULL == pEventData->pEventData))
14044 {
14045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014046 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014049 }
14050
14051 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14052 if( NULL == wdiStartScanRspCb)
14053 {
14054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014055 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 }
14059
14060 /*-------------------------------------------------------------------------
14061 Extract response and send it to UMAC
14062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14064 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014065 sizeof(halStartScanRspMsg.startScanRspParams));
14066
14067 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14068 halStartScanRspMsg.startScanRspParams.status);
14069#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014070 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014072 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 halStartScanRspMsg.startScanRspParams.startTSF,
14074 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014075#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014076
14077 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14078 {
14079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14080 "Start scan failed with status %s (%d)",
14081 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14082 halStartScanRspMsg.startScanRspParams.status);
14083 /* send the status to UMAC, don't return from here*/
14084 }
14085
14086 /*Notify UMAC*/
14087 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14088
Jeff Johnsone7245742012-09-05 17:12:55 -070014089 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014090
14091}/*WDI_ProcessStartScanRsp*/
14092
14093
14094/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014095 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014097
14098 @param pWDICtx: pointer to the WLAN DAL context
14099 pEventData: pointer to the event information structure
14100
Jeff Johnson295189b2012-06-20 16:38:30 -070014101 @see
14102 @return Result of the function call
14103*/
14104WDI_Status
14105WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014106(
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 WDI_ControlBlockType* pWDICtx,
14108 WDI_EventInfoType* pEventData
14109)
14110{
14111 WDI_Status wdiStatus;
14112 tHalEndScanRspMsg halEndScanRspMsg;
14113 WDI_EndScanRspCb wdiEndScanRspCb;
14114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14115
14116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 -------------------------------------------------------------------------*/
14119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14120 ( NULL == pEventData->pEventData))
14121 {
14122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 }
14127
14128 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14129
14130 /*-------------------------------------------------------------------------
14131 Extract response and send it to UMAC
14132 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014133 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14134 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014135 sizeof(halEndScanRspMsg.endScanRspParams));
14136
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014138
14139 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14140 {
14141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14142 "End Scan failed with status %s (%d )",
14143 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14144 halEndScanRspMsg.endScanRspParams.status);
14145 /* send the status to UMAC, don't return from here*/
14146 }
14147
14148 /*Notify UMAC*/
14149 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14150
Jeff Johnsone7245742012-09-05 17:12:55 -070014151 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014152}/*WDI_ProcessEndScanRsp*/
14153
14154
14155/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014156 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014157 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014158
14159 @param pWDICtx: pointer to the WLAN DAL context
14160 pEventData: pointer to the event information structure
14161
Jeff Johnson295189b2012-06-20 16:38:30 -070014162 @see
14163 @return Result of the function call
14164*/
14165WDI_Status
14166WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014167(
Jeff Johnson295189b2012-06-20 16:38:30 -070014168 WDI_ControlBlockType* pWDICtx,
14169 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014170)
Jeff Johnson295189b2012-06-20 16:38:30 -070014171{
14172 WDI_Status wdiStatus;
14173 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014174
14175 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14177
14178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014180 -------------------------------------------------------------------------*/
14181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14182 ( NULL == pEventData->pEventData))
14183 {
14184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 }
14189
14190 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14191
14192 /*-------------------------------------------------------------------------
14193 Extract response and send it to UMAC
14194 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014195 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14196 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014197 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14198
Jeff Johnsone7245742012-09-05 17:12:55 -070014199 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014200
14201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014202 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014203 halFinishScanRspMsg.finishScanRspParams.status);
14204
14205 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14206 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14207 {
14208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14209 "Finish Scan failed with status %s (%d)",
14210 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14211 halFinishScanRspMsg.finishScanRspParams.status);
14212 /* send the status to UMAC, don't return from here*/
14213 }
14214
14215 /*Notify UMAC*/
14216 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14217
Jeff Johnsone7245742012-09-05 17:12:55 -070014218 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014219}/*WDI_ProcessFinishScanRsp*/
14220
14221/**
14222 @brief Process Join Response function (called when a response
14223 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_ProcessJoinRsp
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 WDI_JoinRspCb wdiJoinRspCb;
14240 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014241
14242 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14244
14245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014247 -------------------------------------------------------------------------*/
14248 if (( NULL == pWDICtx ) ||
14249 ( NULL == pWDICtx->pfncRspCB ) ||
14250 ( NULL == pEventData ) ||
14251 ( NULL == pEventData->pEventData))
14252 {
14253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014254 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014255 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 }
14258
14259 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14260
14261 /*-------------------------------------------------------------------------
14262 Extract response and send it to UMAC
14263 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014264 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14265 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 sizeof(halJoinRspMsg.joinRspParams));
14267
Jeff Johnsone7245742012-09-05 17:12:55 -070014268 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014269
14270 wpalMutexAcquire(&pWDICtx->wptMutex);
14271
14272 /*-----------------------------------------------------------------------
14273 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014274 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014276 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14278 {
14279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014280 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14281 "association no longer in progress %d - mysterious HAL response",
14282 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014283
Jeff Johnsone7245742012-09-05 17:12:55 -070014284 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014286 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014287 }
14288
14289 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14290
14291 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014292 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014293 -----------------------------------------------------------------------*/
14294 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14295 {
14296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14297 "Join only allowed in Joining state - failure state is %d "
14298 "strange HAL response", pBSSSes->wdiAssocState);
14299
Jeff Johnsone7245742012-09-05 17:12:55 -070014300 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14301
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 }
14305
14306
14307 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014308 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014309 -----------------------------------------------------------------------*/
14310 if ( WDI_STATUS_SUCCESS != wdiStatus )
14311 {
14312 /*Association was failed by HAL - remove session*/
14313 WDI_DeleteSession(pWDICtx, pBSSSes);
14314
14315 /*Association no longer in progress */
14316 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14317
14318 /*Association no longer in progress - prepare pending assoc for processing*/
14319 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014320
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 }
14322 else
14323 {
14324 /*Transition to state Joining - this may be redundant as we are supposed
14325 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014326 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014327 }
14328
14329 wpalMutexRelease(&pWDICtx->wptMutex);
14330
14331 /*Notify UMAC*/
14332 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14333
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014335}/*WDI_ProcessJoinRsp*/
14336
14337
14338/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014341
14342 @param pWDICtx: pointer to the WLAN DAL context
14343 pEventData: pointer to the event information structure
14344
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 @see
14346 @return Result of the function call
14347*/
14348WDI_Status
14349WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014350(
Jeff Johnson295189b2012-06-20 16:38:30 -070014351 WDI_ControlBlockType* pWDICtx,
14352 WDI_EventInfoType* pEventData
14353)
14354{
14355 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14356 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014357 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 WDI_BSSSessionType* pBSSSes = NULL;
14359
Jeff Johnsone7245742012-09-05 17:12:55 -070014360 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14362 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014363
Jeff Johnson295189b2012-06-20 16:38:30 -070014364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14365
14366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014368 -------------------------------------------------------------------------*/
14369 if (( NULL == pEventData ) ||
14370 ( NULL == pEventData->pEventData))
14371 {
14372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014376 }
14377
14378 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14379
14380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14384 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 sizeof(halConfigBssRspMsg.configBssRspParams));
14386
14387 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14388 halConfigBssRspMsg.configBssRspParams.status);
14389 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14390 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014391 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014392 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14393 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014394
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014396
14397 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014399
14400 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014401 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014402
Jeff Johnson295189b2012-06-20 16:38:30 -070014403 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014404
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14408 #endif
14409 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14410 halConfigBssRspMsg.configBssRspParams.staMac,
14411 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014412
Jeff Johnson295189b2012-06-20 16:38:30 -070014413 wpalMutexAcquire(&pWDICtx->wptMutex);
14414 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14418 wdiConfigBSSParams.macBSSID,
14419 &pBSSSes);
14420
Jeff Johnson295189b2012-06-20 16:38:30 -070014421 /*-----------------------------------------------------------------------
14422 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 -----------------------------------------------------------------------*/
14425 if ( NULL == pBSSSes )
14426 {
14427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14428 "Association sequence for this BSS does not yet exist "
14429 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014430
14431 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14432
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014435 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014436
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 /*Save data for this BSS*/
14438 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14439 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014440 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014441 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014442 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014444 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014446 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014447 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14450 pBSSSes->bcastStaIdx =
14451 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014452
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014454
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 /*-------------------------------------------------------------------------
14456 Add Peer STA
14457 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014458 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14460 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014461
Jeff Johnson295189b2012-06-20 16:38:30 -070014462 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 wdiAddSTAParam.ucHTCapable =
14466 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14467 wdiAddSTAParam.ucStaType =
14468 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14469
Jeff Johnson295189b2012-06-20 16:38:30 -070014470 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14472 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014474
14475 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14476 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14477 WDI_MAC_ADDR_LEN);
14478
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014480 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014481 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014482 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014490 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014492
Jeff Johnson295189b2012-06-20 16:38:30 -070014493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14494 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014495
Jeff Johnson295189b2012-06-20 16:38:30 -070014496 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14497 /*-------------------------------------------------------------------------
14498 Add Broadcast STA only in AP mode
14499 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014500 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 WDI_BSS_OPERATIONAL_MODE_AP )
14502 {
14503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14504 "Add BCAST STA to table for index: %d",
14505 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014506
14507 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014508 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014509
Jeff Johnson295189b2012-06-20 16:38:30 -070014510 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14511 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14512 }
14513 wpalMutexRelease(&pWDICtx->wptMutex);
14514 }
14515 else
14516 {
14517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14518 "Config BSS RSP failed with status : %s(%d)",
14519 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014520 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 halConfigBssRspMsg.configBssRspParams.status);
14522
Jeff Johnsone7245742012-09-05 17:12:55 -070014523
Jeff Johnson295189b2012-06-20 16:38:30 -070014524 /*Association was failed by HAL - remove session*/
14525 WDI_DeleteSession(pWDICtx, pBSSSes);
14526
14527 /*Association no longer in progress */
14528 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14529
14530 /*Association no longer in progress - prepare pending assoc for processing*/
14531 WDI_DequeueAssocRequest(pWDICtx);
14532
14533 }
14534
14535 /*Notify UMAC*/
14536 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14537
Jeff Johnsone7245742012-09-05 17:12:55 -070014538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014539}/*WDI_ProcessConfigBSSRsp*/
14540
14541
14542/**
14543 @brief Process Del BSS Response function (called when a response
14544 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014545
14546 @param pWDICtx: pointer to the WLAN DAL context
14547 pEventData: pointer to the event information structure
14548
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 @see
14550 @return Result of the function call
14551*/
14552WDI_Status
14553WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014554(
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 WDI_ControlBlockType* pWDICtx,
14556 WDI_EventInfoType* pEventData
14557)
14558{
14559 WDI_DelBSSRspParamsType wdiDelBSSParams;
14560 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014561 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 WDI_BSSSessionType* pBSSSes = NULL;
14563
Jeff Johnsone7245742012-09-05 17:12:55 -070014564 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14566
14567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014569 -------------------------------------------------------------------------*/
14570 if (( NULL == pEventData ) ||
14571 ( NULL == pEventData->pEventData))
14572 {
14573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 }
14578
14579 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
14580
14581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
14585 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 sizeof(halDelBssRspMsg.deleteBssRspParams));
14587
14588
14589 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014591
14592 wpalMutexAcquire(&pWDICtx->wptMutex);
14593
14594 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014595 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014596 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014597 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
14598 halDelBssRspMsg.deleteBssRspParams.bssIdx,
14599 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014600
14601 /*-----------------------------------------------------------------------
14602 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014603 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 -----------------------------------------------------------------------*/
14605 if ( NULL == pBSSSes )
14606 {
14607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14608 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014609 "association no longer in progress - mysterious HAL response");
14610
14611 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14612
14613 wpalMutexRelease(&pWDICtx->wptMutex);
14614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014616
14617 /*Extract BSSID for the response to UMAC*/
14618 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
14619 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
14620
14621 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
14622
14623 /*-----------------------------------------------------------------------
14624 The current session will be deleted
14625 -----------------------------------------------------------------------*/
14626 WDI_DeleteSession(pWDICtx, pBSSSes);
14627
14628
14629 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
14630 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014632 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014633 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014634
14635 /* Delete the STA's in this BSS */
14636 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
14637
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 wpalMutexRelease(&pWDICtx->wptMutex);
14639
14640 /*Notify UMAC*/
14641 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
14642
Jeff Johnsone7245742012-09-05 17:12:55 -070014643 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014644}/*WDI_ProcessDelBSSRsp*/
14645
14646/**
14647 @brief Process Post Assoc Rsp function (called when a response
14648 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014649
14650 @param pWDICtx: pointer to the WLAN DAL context
14651 pEventData: pointer to the event information structure
14652
Jeff Johnson295189b2012-06-20 16:38:30 -070014653 @see
14654 @return Result of the function call
14655*/
14656WDI_Status
14657WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014658(
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 WDI_ControlBlockType* pWDICtx,
14660 WDI_EventInfoType* pEventData
14661)
14662{
14663 WDI_PostAssocRspParamsType wdiPostAssocParams;
14664 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14669
14670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 -------------------------------------------------------------------------*/
14673 if (( NULL == pEventData ) ||
14674 ( NULL == pEventData->pEventData))
14675 {
14676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 }
14681
14682 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
14683
14684 /*-------------------------------------------------------------------------
14685 Extract response and send it to UMAC
14686 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
14688 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 sizeof(halPostAssocRspMsg.postAssocRspParams));
14690
14691 /*Extract the Post Assoc STA Params */
14692
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14699
Jeff Johnsone7245742012-09-05 17:12:55 -070014700 wdiPostAssocParams.wdiStatus =
14701 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014702
14703 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14704 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014705 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
14706 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 WDI_MAC_ADDR_LEN);
14708
14709 /* Extract Post Assoc BSS Params */
14710
Jeff Johnsone7245742012-09-05 17:12:55 -070014711 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
14712 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
14713 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014714
14715 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14716 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
14719 .macSTA, WDI_MAC_ADDR_LEN);
14720
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014722 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14723
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
14726
14727 wdiPostAssocParams.bssParams.ucBSSIdx =
14728 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14729
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
14732
14733 wpalMutexAcquire(&pWDICtx->wptMutex);
14734
14735 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014738 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070014740 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014741
14742 /*-----------------------------------------------------------------------
14743 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 -----------------------------------------------------------------------*/
14746 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014747 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014748 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14749 {
14750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14751 "Association sequence for this BSS does not yet exist or "
14752 "association no longer in progress - mysterious HAL response");
14753
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14755
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 }
14759
14760 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014761 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070014762 -----------------------------------------------------------------------*/
14763 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14764 {
14765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14766 "Post Assoc not allowed before JOIN - failing request "
14767 "strange HAL response");
14768
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14770
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014773 }
14774
14775 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 -----------------------------------------------------------------------*/
14778 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
14779 {
14780 /*Association was failed by HAL - remove session*/
14781 WDI_DeleteSession(pWDICtx, pBSSSes);
14782 }
14783 else
14784 {
14785 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014786 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014787
14788 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014789 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014791 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014795 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
14797
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14800 }
14801
14802 /*Association no longer in progress */
14803 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14804
14805 /*Association no longer in progress - prepare pending assoc for processing*/
14806 WDI_DequeueAssocRequest(pWDICtx);
14807
14808 wpalMutexRelease(&pWDICtx->wptMutex);
14809
14810 /*Notify UMAC*/
14811 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
14812
Jeff Johnsone7245742012-09-05 17:12:55 -070014813 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014814}/*WDI_ProcessPostAssocRsp*/
14815
14816/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014817 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070014818 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014819
14820 @param pWDICtx: pointer to the WLAN DAL context
14821 pEventData: pointer to the event information structure
14822
Jeff Johnson295189b2012-06-20 16:38:30 -070014823 @see
14824 @return Result of the function call
14825*/
14826WDI_Status
14827WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014828(
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 WDI_ControlBlockType* pWDICtx,
14830 WDI_EventInfoType* pEventData
14831)
14832{
14833 WDI_DelSTARspParamsType wdiDelSTARsp;
14834 WDI_DelSTARspCb wdiDelSTARspCb;
14835 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014836 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14838
14839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014841 -------------------------------------------------------------------------*/
14842 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14843 ( NULL == pEventData->pEventData))
14844 {
14845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 }
14850
14851 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
14852
14853 /*-------------------------------------------------------------------------
14854 Extract response and send it to UMAC
14855 -------------------------------------------------------------------------*/
14856 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 sizeof(halDelStaRspMsg.delStaRspParams));
14859
14860 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014861 wdiDelSTARsp.wdiStatus =
14862 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014863
14864 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
14865
14866 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
14867 if(staType == WDI_STA_ENTRY_SELF)
14868 {
14869 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
14870
14871 /* At this point add the self-STA */
14872
14873 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14874 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14875 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14876
14877#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
14878#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
14879
14880 //all DPU indices are the same for self STA
14881 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14882 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14883 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14884 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
14885 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
14886 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070014887
14888 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 }
14890 else
14891 {
14892 //Delete the station in the table
14893 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
14894 }
14895
14896 /*Notify UMAC*/
14897 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
14898
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014900}/*WDI_ProcessDelSTARsp*/
14901
14902
14903/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070014905==========================================================================*/
14906
14907/**
14908 @brief Process Set BSS Key Rsp function (called when a response
14909 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014910
14911 @param pWDICtx: pointer to the WLAN DAL context
14912 pEventData: pointer to the event information structure
14913
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 @see
14915 @return Result of the function call
14916*/
14917WDI_Status
14918WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014919(
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 WDI_ControlBlockType* pWDICtx,
14921 WDI_EventInfoType* pEventData
14922)
14923{
14924 WDI_Status wdiStatus;
14925 eHalStatus halStatus;
14926 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
14927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14928
14929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 -------------------------------------------------------------------------*/
14932 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14933 ( NULL == pEventData->pEventData))
14934 {
14935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014936 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 }
14940
14941 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
14942
14943 /*-------------------------------------------------------------------------
14944 Extract response and send it to UMAC
14945 -------------------------------------------------------------------------*/
14946 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014947 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070014948
14949 if ( eHAL_STATUS_SUCCESS != halStatus )
14950 {
14951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14952 "Set BSS Key failed with status %s (%d)",
14953 WDI_getHALStatusMsgString(halStatus),
14954 halStatus);
14955 /* send the status to UMAC, don't return from here*/
14956 }
14957
14958 /*Notify UMAC*/
14959 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14960
Jeff Johnsone7245742012-09-05 17:12:55 -070014961 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014962}/*WDI_ProcessSetBssKeyRsp*/
14963
14964/**
14965 @brief Process Remove BSS Key Rsp function (called when a response
14966 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014967
14968 @param pWDICtx: pointer to the WLAN DAL context
14969 pEventData: pointer to the event information structure
14970
Jeff Johnson295189b2012-06-20 16:38:30 -070014971 @see
14972 @return Result of the function call
14973*/
14974WDI_Status
14975WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014976(
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 WDI_ControlBlockType* pWDICtx,
14978 WDI_EventInfoType* pEventData
14979)
14980{
14981 WDI_Status wdiStatus;
14982 eHalStatus halStatus;
14983 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
14984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14985
14986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014988 -------------------------------------------------------------------------*/
14989 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14990 ( NULL == pEventData->pEventData))
14991 {
14992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014993 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014996 }
14997
14998 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
14999
15000 /*-------------------------------------------------------------------------
15001 Extract response and send it to UMAC
15002 -------------------------------------------------------------------------*/
15003 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015004 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015005
15006 if ( eHAL_STATUS_SUCCESS != halStatus )
15007 {
15008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15009 "Remove BSS Key failed with status %s (%d )",
15010 WDI_getHALStatusMsgString(halStatus),
15011 halStatus);
15012 /* send the status to UMAC, don't return from here*/
15013 }
15014
15015 /*Notify UMAC*/
15016 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15017
Jeff Johnsone7245742012-09-05 17:12:55 -070015018 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015019}/*WDI_ProcessSetBssKeyRsp*/
15020
15021
15022/**
15023 @brief Process Set STA Key Rsp function (called when a response
15024 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015025
15026 @param pWDICtx: pointer to the WLAN DAL context
15027 pEventData: pointer to the event information structure
15028
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 @see
15030 @return Result of the function call
15031*/
15032WDI_Status
15033WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015034(
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 WDI_ControlBlockType* pWDICtx,
15036 WDI_EventInfoType* pEventData
15037)
15038{
15039 WDI_Status wdiStatus;
15040 eHalStatus halStatus;
15041 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15043
15044 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015046 -------------------------------------------------------------------------*/
15047 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15048 ( NULL == pEventData->pEventData))
15049 {
15050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 }
15055
15056 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15057
15058 /*-------------------------------------------------------------------------
15059 Extract response and send it to UMAC
15060 -------------------------------------------------------------------------*/
15061 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015063
15064 if ( eHAL_STATUS_SUCCESS != halStatus )
15065 {
15066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15067 "Set STA Key failed with status %s (%d)",
15068 WDI_getHALStatusMsgString(halStatus),
15069 halStatus);
15070 /* send the status to UMAC, don't return from here*/
15071 }
15072
15073 /*Notify UMAC*/
15074 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15075
Jeff Johnsone7245742012-09-05 17:12:55 -070015076 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015077}/*WDI_ProcessSetSTAKeyRsp*/
15078
15079/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015082
15083 @param pWDICtx: pointer to the WLAN DAL context
15084 pEventData: pointer to the event information structure
15085
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 @see
15087 @return Result of the function call
15088*/
15089WDI_Status
15090WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015091(
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 WDI_ControlBlockType* pWDICtx,
15093 WDI_EventInfoType* pEventData
15094)
15095{
15096 WDI_Status wdiStatus;
15097 eHalStatus halStatus;
15098 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15100
15101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 -------------------------------------------------------------------------*/
15104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15105 ( NULL == pEventData->pEventData))
15106 {
15107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015111 }
15112
15113 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15114
15115 /*-------------------------------------------------------------------------
15116 Extract response and send it to UMAC
15117 -------------------------------------------------------------------------*/
15118 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015119 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015120
15121 if ( eHAL_STATUS_SUCCESS != halStatus )
15122 {
15123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15124 "Remove STA Key failed with status %s (%d)",
15125 WDI_getHALStatusMsgString(halStatus),
15126 halStatus);
15127 /* send the status to UMAC, don't return from here*/
15128 }
15129
15130 /*Notify UMAC*/
15131 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15132
Jeff Johnsone7245742012-09-05 17:12:55 -070015133 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015134}/*WDI_ProcessRemoveStaKeyRsp*/
15135
15136/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015139
15140 @param pWDICtx: pointer to the WLAN DAL context
15141 pEventData: pointer to the event information structure
15142
Jeff Johnson295189b2012-06-20 16:38:30 -070015143 @see
15144 @return Result of the function call
15145*/
15146WDI_Status
15147WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015148(
Jeff Johnson295189b2012-06-20 16:38:30 -070015149 WDI_ControlBlockType* pWDICtx,
15150 WDI_EventInfoType* pEventData
15151)
15152{
15153 WDI_Status wdiStatus;
15154 eHalStatus halStatus;
15155 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15157
15158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 -------------------------------------------------------------------------*/
15161 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15162 ( NULL == pEventData->pEventData))
15163 {
15164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015165 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 }
15169
15170 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15171
15172 /*-------------------------------------------------------------------------
15173 Extract response and send it to UMAC
15174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 wpalMemoryCopy( &halStatus,
15176 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015177 sizeof(halStatus));
15178
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015180
15181 if ( eHAL_STATUS_SUCCESS != halStatus )
15182 {
15183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15184 "Set STA Key failed with status %s (%d)",
15185 WDI_getHALStatusMsgString(halStatus),
15186 halStatus);
15187 /* send the status to UMAC, don't return from here*/
15188 }
15189
15190 /*Notify UMAC*/
15191 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15192
Jeff Johnsone7245742012-09-05 17:12:55 -070015193 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015194}/*WDI_ProcessSetSTABcastKeyRsp*/
15195
15196/**
15197 @brief Process Remove STA Bcast Key Rsp function (called when a
15198 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015199
15200 @param pWDICtx: pointer to the WLAN DAL context
15201 pEventData: pointer to the event information structure
15202
Jeff Johnson295189b2012-06-20 16:38:30 -070015203 @see
15204 @return Result of the function call
15205*/
15206WDI_Status
15207WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015208(
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 WDI_ControlBlockType* pWDICtx,
15210 WDI_EventInfoType* pEventData
15211)
15212{
15213 WDI_Status wdiStatus;
15214 eHalStatus halStatus;
15215 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15217
15218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015220 -------------------------------------------------------------------------*/
15221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15222 ( NULL == pEventData->pEventData))
15223 {
15224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015228 }
15229
15230 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15231
15232 /*-------------------------------------------------------------------------
15233 Extract response and send it to UMAC
15234 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015235 wpalMemoryCopy( &halStatus,
15236 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 sizeof(halStatus));
15238
Jeff Johnsone7245742012-09-05 17:12:55 -070015239 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015240
15241 if ( eHAL_STATUS_SUCCESS != halStatus )
15242 {
15243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15244 "Remove STA Key failed with status %s (%d)",
15245 WDI_getHALStatusMsgString(halStatus),
15246 halStatus);
15247 /* send the status to UMAC, don't return from here*/
15248 }
15249
15250 /*Notify UMAC*/
15251 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15252
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015254}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15255
15256
15257/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015259==========================================================================*/
15260
15261/**
15262 @brief Process Add TSpec Rsp function (called when a response
15263 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015264
15265 @param pWDICtx: pointer to the WLAN DAL context
15266 pEventData: pointer to the event information structure
15267
Jeff Johnson295189b2012-06-20 16:38:30 -070015268 @see
15269 @return Result of the function call
15270*/
15271WDI_Status
15272WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015273(
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 WDI_ControlBlockType* pWDICtx,
15275 WDI_EventInfoType* pEventData
15276)
15277{
15278 WDI_Status wdiStatus;
15279 eHalStatus halStatus;
15280 WDI_AddTsRspCb wdiAddTsRspCb;
15281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15282
15283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015285 -------------------------------------------------------------------------*/
15286 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15287 ( NULL == pEventData->pEventData))
15288 {
15289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015290 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015293 }
15294
15295 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15296
15297 /*-------------------------------------------------------------------------
15298 Extract response and send it to UMAC
15299 -------------------------------------------------------------------------*/
15300 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015301 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015302
15303 /*Notify UMAC*/
15304 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15305
Jeff Johnsone7245742012-09-05 17:12:55 -070015306 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015307}/*WDI_ProcessAddTSpecRsp*/
15308
15309
15310/**
15311 @brief Process Del TSpec Rsp function (called when a response
15312 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015313
15314 @param pWDICtx: pointer to the WLAN DAL context
15315 pEventData: pointer to the event information structure
15316
Jeff Johnson295189b2012-06-20 16:38:30 -070015317 @see
15318 @return Result of the function call
15319*/
15320WDI_Status
15321WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015322(
Jeff Johnson295189b2012-06-20 16:38:30 -070015323 WDI_ControlBlockType* pWDICtx,
15324 WDI_EventInfoType* pEventData
15325)
15326{
15327 WDI_Status wdiStatus;
15328 eHalStatus halStatus;
15329 WDI_DelTsRspCb wdiDelTsRspCb;
15330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15331
15332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015333 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 -------------------------------------------------------------------------*/
15335 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15336 ( NULL == pEventData->pEventData))
15337 {
15338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015339 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015342 }
15343
15344 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15345
15346 /*-------------------------------------------------------------------------
15347 Extract response and send it to UMAC
15348 -------------------------------------------------------------------------*/
15349 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015350 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015351
15352 /*Notify UMAC*/
15353 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15354
Jeff Johnsone7245742012-09-05 17:12:55 -070015355 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015356}/*WDI_ProcessDelTSpecRsp*/
15357
15358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015359 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015361
15362 @param pWDICtx: pointer to the WLAN DAL context
15363 pEventData: pointer to the event information structure
15364
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 @see
15366 @return Result of the function call
15367*/
15368WDI_Status
15369WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015370(
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 WDI_ControlBlockType* pWDICtx,
15372 WDI_EventInfoType* pEventData
15373)
15374{
15375 WDI_Status wdiStatus;
15376 eHalStatus halStatus;
15377 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15379
15380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015382 -------------------------------------------------------------------------*/
15383 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15384 ( NULL == pEventData->pEventData))
15385 {
15386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015390 }
15391
15392 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15393
15394 /*-------------------------------------------------------------------------
15395 Extract response and send it to UMAC
15396 -------------------------------------------------------------------------*/
15397 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015398 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015399
15400 /*Notify UMAC*/
15401 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15402
Jeff Johnsone7245742012-09-05 17:12:55 -070015403 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015404}/*WDI_ProcessUpdateEDCAParamsRsp*/
15405
15406
15407/**
15408 @brief Process Add BA Rsp function (called when a response
15409 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015410
15411 @param pWDICtx: pointer to the WLAN DAL context
15412 pEventData: pointer to the event information structure
15413
Jeff Johnson295189b2012-06-20 16:38:30 -070015414 @see
15415 @return Result of the function call
15416*/
15417WDI_Status
15418WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015419(
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 WDI_ControlBlockType* pWDICtx,
15421 WDI_EventInfoType* pEventData
15422)
15423{
15424 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15425
15426 tAddBASessionRspParams halBASessionRsp;
15427 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15428
Jeff Johnsone7245742012-09-05 17:12:55 -070015429
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15431
15432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015433 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015434 -------------------------------------------------------------------------*/
15435 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15436 ( NULL == pEventData->pEventData))
15437 {
15438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015442 }
15443
15444 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15445
15446 /*-------------------------------------------------------------------------
15447 Extract response and send it to UMAC
15448 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015449 wpalMemoryCopy( &halBASessionRsp,
15450 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 sizeof(halBASessionRsp));
15452
15453 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15454
Jeff Johnson43971f52012-07-17 12:26:56 -070015455 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 {
15457 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15458 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15459 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15460 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15461 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15462 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15463 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15464 }
15465
15466 /*Notify UMAC*/
15467 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15468
Jeff Johnsone7245742012-09-05 17:12:55 -070015469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015470}/*WDI_ProcessAddSessionBARsp*/
15471
15472
15473/**
15474 @brief Process Del BA Rsp function (called when a response
15475 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015476
15477 @param pWDICtx: pointer to the WLAN DAL context
15478 pEventData: pointer to the event information structure
15479
Jeff Johnson295189b2012-06-20 16:38:30 -070015480 @see
15481 @return Result of the function call
15482*/
15483WDI_Status
15484WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015485(
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 WDI_ControlBlockType* pWDICtx,
15487 WDI_EventInfoType* pEventData
15488)
15489{
15490 WDI_Status wdiStatus;
15491 eHalStatus halStatus;
15492 WDI_DelBARspCb wdiDelBARspCb;
15493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15494
15495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015497 -------------------------------------------------------------------------*/
15498 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15499 ( NULL == pEventData->pEventData))
15500 {
15501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 }
15506
15507 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15508
15509 /*-------------------------------------------------------------------------
15510 Extract response and send it to UMAC
15511 -------------------------------------------------------------------------*/
15512 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015513 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015514
15515 if ( eHAL_STATUS_SUCCESS == halStatus )
15516 {
15517 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15518 }
15519
15520 /*Notify UMAC*/
15521 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15522
Jeff Johnsone7245742012-09-05 17:12:55 -070015523 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015524}/*WDI_ProcessDelBARsp*/
15525
15526#ifdef FEATURE_WLAN_CCX
15527/**
15528 @brief Process TSM Stats Rsp function (called when a response
15529 is being received over the bus from HAL)
15530
15531 @param pWDICtx: pointer to the WLAN DAL context
15532 pEventData: pointer to the event information structure
15533
15534 @see
15535 @return Result of the function call
15536*/
15537WDI_Status
15538WDI_ProcessTsmStatsRsp
15539(
15540 WDI_ControlBlockType* pWDICtx,
15541 WDI_EventInfoType* pEventData
15542)
15543{
15544 WDI_TsmRspCb wdiTsmStatsRspCb;
15545 tTsmStatsRspMsg halTsmStatsRspMsg;
15546 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15548
15549 /*-------------------------------------------------------------------------
15550 Sanity check
15551 -------------------------------------------------------------------------*/
15552 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15553 ( NULL == pEventData->pEventData))
15554 {
15555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 WDI_ASSERT(0);
15558 return WDI_STATUS_E_FAILURE;
15559 }
15560
15561 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
15562
15563 /*-------------------------------------------------------------------------
15564 Unpack HAL Response Message - the header was already extracted by the
15565 main Response Handling procedure
15566 -------------------------------------------------------------------------*/
15567 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
15568 pEventData->pEventData,
15569 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
15570
15571 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
15572 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
15573 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
15574 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
15575 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
15576 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
15577 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
15578 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
15579 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
15580 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
15581 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15582 halTsmStatsRspMsg.tsmStatsRspParams.status);
15583
15584 /*Notify UMAC*/
15585 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
15586
15587 return WDI_STATUS_SUCCESS;
15588}/*WDI_ProcessTsmStatsRsp*/
15589
15590#endif
15591
15592
15593
15594/**
15595 @brief Process Flush AC Rsp function (called when a response
15596 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015597
15598 @param pWDICtx: pointer to the WLAN DAL context
15599 pEventData: pointer to the event information structure
15600
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 @see
15602 @return Result of the function call
15603*/
15604WDI_Status
15605WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015606(
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 WDI_ControlBlockType* pWDICtx,
15608 WDI_EventInfoType* pEventData
15609)
15610{
15611 WDI_Status wdiStatus;
15612 eHalStatus halStatus;
15613 WDI_FlushAcRspCb wdiFlushAcRspCb;
15614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15615
15616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015618 -------------------------------------------------------------------------*/
15619 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15620 ( NULL == pEventData->pEventData))
15621 {
15622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015623 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015626 }
15627
15628 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
15629
15630 /*-------------------------------------------------------------------------
15631 Extract response and send it to UMAC
15632 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015633 wpalMemoryCopy( &halStatus,
15634 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 sizeof(halStatus));
15636
Jeff Johnsone7245742012-09-05 17:12:55 -070015637 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015638
15639 /*Notify UMAC*/
15640 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15641
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015643}/*WDI_ProcessFlushAcRsp*/
15644
15645/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015646 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015648
15649 @param pWDICtx: pointer to the WLAN DAL context
15650 pEventData: pointer to the event information structure
15651
Jeff Johnson295189b2012-06-20 16:38:30 -070015652 @see
15653 @return Result of the function call
15654*/
15655WDI_Status
15656WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015657(
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 WDI_ControlBlockType* pWDICtx,
15659 WDI_EventInfoType* pEventData
15660)
15661{
15662 WDI_Status wdiStatus;
15663 eHalStatus halStatus;
15664 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
15665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15666
15667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 -------------------------------------------------------------------------*/
15670 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15671 ( NULL == pEventData->pEventData))
15672 {
15673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015677 }
15678
15679 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
15680
15681 /*-------------------------------------------------------------------------
15682 Extract response and send it to UMAC
15683 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 wpalMemoryCopy( &halStatus,
15685 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 sizeof(halStatus));
15687
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015689
15690 /*Notify UMAC*/
15691 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15692
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015694}/*WDI_ProcessBtAmpEventRsp*/
15695
15696
15697/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015698 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015699 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015700
15701 @param pWDICtx: pointer to the WLAN DAL context
15702 pEventData: pointer to the event information structure
15703
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 @see
15705 @return Result of the function call
15706*/
15707WDI_Status
15708WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015709(
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 WDI_ControlBlockType* pWDICtx,
15711 WDI_EventInfoType* pEventData
15712)
15713{
15714 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
15715 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
15716 tAddStaSelfRspMsg halAddStaSelfRsp;
15717 WDI_AddStaParams wdiAddSTAParam = {0};
15718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15719
15720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015722 -------------------------------------------------------------------------*/
15723 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15724 ( NULL == pEventData->pEventData))
15725 {
15726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 }
15731
Jeff Johnsone7245742012-09-05 17:12:55 -070015732 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015733 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
15734
15735 /*-------------------------------------------------------------------------
15736 Extract response and send it to UMAC
15737 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
15739 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
15741
15742
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 wdiAddSTASelfParams.wdiStatus =
15744 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015745
Jeff Johnsone7245742012-09-05 17:12:55 -070015746 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015749 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015750 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015751 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
15752
15753 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
15754 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
15755 WDI_MAC_ADDR_LEN);
15756
15757
15758#ifdef HAL_SELF_STA_PER_BSS
15759
15760 /* At this point add the self-STA */
15761
15762 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15763 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15764 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15765
15766 //all DPU indices are the same for self STA
15767
15768 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
15771 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
15772 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
15773 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
15774 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
15775
15776 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
15777 WDI_MAC_ADDR_LEN);
15778
15779 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15780 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
15781
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
15784 {
15785 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15786 }
15787#endif
15788
15789 /*Notify UMAC*/
15790 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
15791
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015793}/*WDI_ProcessAddSTASelfRsp*/
15794
15795
15796
15797/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015798 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015800
15801 @param pWDICtx: pointer to the WLAN DAL context
15802 pEventData: pointer to the event information structure
15803
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 @see
15805 @return Result of the function call
15806*/
15807WDI_Status
15808WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015809(
Jeff Johnson295189b2012-06-20 16:38:30 -070015810 WDI_ControlBlockType* pWDICtx,
15811 WDI_EventInfoType* pEventData
15812)
15813{
15814 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
15815 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
15816 tDelStaSelfRspParams delStaSelfRspParams;
15817 wpt_uint8 ucStaIdx;
15818
15819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15820
15821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 -------------------------------------------------------------------------*/
15824 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15825 ( NULL == pEventData->pEventData))
15826 {
15827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015828 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 }
15832
15833 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
15834
15835 /*-------------------------------------------------------------------------
15836 Extract response and send it to UMAC
15837 -------------------------------------------------------------------------*/
15838
Jeff Johnsone7245742012-09-05 17:12:55 -070015839 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015840 (wpt_uint8*)pEventData->pEventData,
15841 sizeof(tDelStaSelfRspParams));
15842
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 wdiDelStaSelfRspParams.wdiStatus =
15844 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015845
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
15848 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
15849 {
15850 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070015851 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015852 delStaSelfRspParams.selfMacAddr,
15853 &ucStaIdx);
15854 if(WDI_STATUS_E_FAILURE == wdiStatus)
15855 {
15856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015857 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015858 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015859 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 }
15861 WDI_STATableDelSta(pWDICtx, ucStaIdx);
15862 }
15863
15864 /*Notify UMAC*/
15865 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
15866
15867 return WDI_STATUS_SUCCESS;
15868}
15869
Jeff Johnsone7245742012-09-05 17:12:55 -070015870#ifdef FEATURE_OEM_DATA_SUPPORT
15871/**
15872 @brief Start Oem Data Rsp function (called when a
15873 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070015874
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 @param pWDICtx: pointer to the WLAN DAL context
15876 pEventData: pointer to the event information structure
15877
15878 @see
15879 @return Result of the function call
15880*/
15881#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
15882
15883WDI_Status
15884WDI_ProcessStartOemDataRsp
15885(
15886 WDI_ControlBlockType* pWDICtx,
15887 WDI_EventInfoType* pEventData
15888)
15889{
15890 WDI_oemDataRspCb wdiOemDataRspCb;
15891 WDI_oemDataRspParamsType* wdiOemDataRspParams;
15892 tStartOemDataRspParams* halStartOemDataRspParams;
15893
15894 /*-------------------------------------------------------------------------
15895 Sanity check
15896 -------------------------------------------------------------------------*/
15897 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15898 ( NULL == pEventData->pEventData))
15899 {
15900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015901 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070015902 WDI_ASSERT(0);
15903 return WDI_STATUS_E_FAILURE;
15904 }
15905
15906 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
15907
15908 /*-------------------------------------------------------------------------
15909 Extract response and send it to UMAC
15910 -------------------------------------------------------------------------*/
15911 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
15912
15913
15914 //It is the responsibility of the application code to check for failure
15915 //conditions!
15916
15917 //Allocate memory for WDI OEM DATA RSP structure
15918 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
15919
15920 if(NULL == wdiOemDataRspParams)
15921 {
15922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15923 "Failed to allocate memory in OEM DATA Response %x %x %x ",
15924 pWDICtx, pEventData, pEventData->pEventData);
15925 WDI_ASSERT(0);
15926 return WDI_STATUS_E_FAILURE;
15927 }
15928
15929 /* Populate WDI structure members */
15930 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
15931
15932 /*Notify UMAC*/
15933 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
15934
15935 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
15936 wpalMemoryFree(wdiOemDataRspParams);
15937
15938 return WDI_STATUS_SUCCESS;
15939}/*WDI_PrcoessStartOemDataRsp*/
15940#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015941
15942/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015943 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015944===========================================================================*/
15945
15946/**
15947 @brief Process Channel Switch Rsp function (called when a response
15948 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015949
15950 @param pWDICtx: pointer to the WLAN DAL context
15951 pEventData: pointer to the event information structure
15952
Jeff Johnson295189b2012-06-20 16:38:30 -070015953 @see
15954 @return Result of the function call
15955*/
15956WDI_Status
15957WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015958(
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 WDI_ControlBlockType* pWDICtx,
15960 WDI_EventInfoType* pEventData
15961)
15962{
15963 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
15964 WDI_SwitchChRspCb wdiChSwitchRspCb;
15965 tSwitchChannelRspParams halSwitchChannelRsp;
15966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15967
15968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015970 -------------------------------------------------------------------------*/
15971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15972 ( NULL == pEventData->pEventData))
15973 {
15974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 }
15979
15980 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
15981
15982 /*-------------------------------------------------------------------------
15983 Extract response and send it to UMAC
15984 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015985 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 (wpt_uint8*)pEventData->pEventData,
15987 sizeof(halSwitchChannelRsp));
15988
Jeff Johnsone7245742012-09-05 17:12:55 -070015989 wdiSwitchChRsp.wdiStatus =
15990 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015991 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
15992
15993#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070015995#endif
15996
15997 /*Notify UMAC*/
15998 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
15999
Jeff Johnsone7245742012-09-05 17:12:55 -070016000 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016001}/*WDI_ProcessChannelSwitchRsp*/
16002
16003
16004/**
16005 @brief Process Config STA Rsp function (called when a response
16006 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016007
16008 @param pWDICtx: pointer to the WLAN DAL context
16009 pEventData: pointer to the event information structure
16010
Jeff Johnson295189b2012-06-20 16:38:30 -070016011 @see
16012 @return Result of the function call
16013*/
16014WDI_Status
16015WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016016(
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 WDI_ControlBlockType* pWDICtx,
16018 WDI_EventInfoType* pEventData
16019)
16020{
16021 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16022 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16023 WDI_AddStaParams wdiAddSTAParam;
16024
16025 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016026 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016027
Jeff Johnsone7245742012-09-05 17:12:55 -070016028 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16030
16031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 -------------------------------------------------------------------------*/
16034 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16035 ( NULL == pEventData->pEventData))
16036 {
16037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016041 }
16042
16043 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16044
16045 /*-------------------------------------------------------------------------
16046 Extract response and send it to UMAC
16047 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016048 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16049 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016050 sizeof(halConfigStaRsp.configStaRspParams));
16051
16052
16053 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16054 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16055 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16056 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16057 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16058
16059 /* MAC Address of STA - take from cache as it does not come back in the
16060 response*/
16061 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016062 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016063 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016064
16065 wdiCfgSTAParams.wdiStatus =
16066 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016067
16068 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16069 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16070 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16071
16072 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16073 {
16074 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16075 {
16076 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016077 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16079 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016080
Jeff Johnson295189b2012-06-20 16:38:30 -070016081 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016082 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016084 wdiAddSTAParam.ucHTCapable =
16085 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16086 wdiAddSTAParam.ucStaType =
16087 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16088
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016090 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16091 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016092 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016093
16094 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16095 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16096 WDI_MAC_ADDR_LEN);
16097
16098 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16099 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16100 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016101
16102 if ( NULL == pBSSSes )
16103 {
16104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16105 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016106
Jeff Johnson295189b2012-06-20 16:38:30 -070016107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016108 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 }
16110
16111 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016112 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016113 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016114 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016117 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016118 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016119 halConfigStaRsp.configStaRspParams.ucBcastSig;
16120 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16121 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016122
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16124 }
16125 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16126 {
16127 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16128
Jeff Johnsone7245742012-09-05 17:12:55 -070016129 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016131 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016132 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016133 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016136 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016137 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016138 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016139 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016141 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 halConfigStaRsp.configStaRspParams.ucUcastSig;
16143 }
16144 }
16145
16146 /*Notify UMAC*/
16147 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16148
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016150}/*WDI_ProcessConfigStaRsp*/
16151
16152
16153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016154 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016155 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016156
16157 @param pWDICtx: pointer to the WLAN DAL context
16158 pEventData: pointer to the event information structure
16159
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 @see
16161 @return Result of the function call
16162*/
16163WDI_Status
16164WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016165(
Jeff Johnson295189b2012-06-20 16:38:30 -070016166 WDI_ControlBlockType* pWDICtx,
16167 WDI_EventInfoType* pEventData
16168)
16169{
16170 WDI_Status wdiStatus;
16171 eHalStatus halStatus;
16172 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16173
16174 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16177
16178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 -------------------------------------------------------------------------*/
16181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16182 ( NULL == pEventData->pEventData))
16183 {
16184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 }
16189
16190 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16191
16192 wpalMutexAcquire(&pWDICtx->wptMutex);
16193
16194 /*If the link is being transitioned to idle - the BSS is to be deleted
16195 - this type of ending a session is possible when UMAC has failed an
16196 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16199 {
16200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016201 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16204 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16205 &pBSSSes);
16206
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 /*-----------------------------------------------------------------------
16208 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 -----------------------------------------------------------------------*/
16211 if ( NULL == pBSSSes )
16212 {
16213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16214 "Set link response received outside association session");
16215 }
16216 else
16217 {
16218 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16219 will be del BSS coming after this to stop the beaconing & cleaning up the
16220 sessions*/
16221 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16222 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16223 {
16224 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016225 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 -----------------------------------------------------------------------*/
16227 WDI_DeleteSession(pWDICtx, pBSSSes);
16228
16229 /*-----------------------------------------------------------------------
16230 Check to see if this association is in progress - if so disable the
16231 flag as this has ended
16232 -----------------------------------------------------------------------*/
16233 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016234 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 /*Association no longer in progress */
16236 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16237 /*Association no longer in progress - prepare pending assoc for processing*/
16238 WDI_DequeueAssocRequest(pWDICtx);
16239 }
16240 }
16241 }
16242 }
16243 /* If the link state has been set to POST ASSOC, reset the "association in
16244 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16247 {
16248 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16249 WDI_DequeueAssocRequest(pWDICtx);
16250 }
16251
16252 wpalMutexRelease(&pWDICtx->wptMutex);
16253
16254 /*-------------------------------------------------------------------------
16255 Extract response and send it to UMAC
16256 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016257 wpalMemoryCopy( &halStatus,
16258 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016259 sizeof(halStatus));
16260
Jeff Johnsone7245742012-09-05 17:12:55 -070016261 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016262
16263 /*Notify UMAC*/
16264 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16265
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016267}/*WDI_ProcessSetLinkStateRsp*/
16268
16269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016270 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016272
16273 @param pWDICtx: pointer to the WLAN DAL context
16274 pEventData: pointer to the event information structure
16275
Jeff Johnson295189b2012-06-20 16:38:30 -070016276 @see
16277 @return Result of the function call
16278*/
16279WDI_Status
16280WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016281(
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 WDI_ControlBlockType* pWDICtx,
16283 WDI_EventInfoType* pEventData
16284)
16285{
16286 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16287 WDI_GetStatsRspCb wdiGetStatsRspCb;
16288 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016289
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16291
16292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 -------------------------------------------------------------------------*/
16295 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16296 ( NULL == pEventData->pEventData))
16297 {
16298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 }
16303
16304 /*-------------------------------------------------------------------------
16305 Extract response and send it to UMAC
16306 -------------------------------------------------------------------------*/
16307 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16308
16309 /*allocate the stats response buffer */
16310 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16311 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16312 + sizeof(WDI_GetStatsRspParamsType));
16313
16314 if(NULL == wdiGetStatsRsp)
16315 {
16316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16317 "Failed to allocate memory in Get Stats Response %x %x %x ",
16318 pWDICtx, pEventData, pEventData->pEventData);
16319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 }
16322
16323 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16324
16325 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16326 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16327 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16328 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16329 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16330 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16331
16332 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16333 wpalMemoryCopy(wdiGetStatsRsp + 1,
16334 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16335 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16336
16337 /*Notify UMAC*/
16338 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16339
16340 wpalMemoryFree(wdiGetStatsRsp);
16341
Jeff Johnsone7245742012-09-05 17:12:55 -070016342 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016343}/*WDI_ProcessGetStatsRsp*/
16344
16345
16346/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016347 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016349
16350 @param pWDICtx: pointer to the WLAN DAL context
16351 pEventData: pointer to the event information structure
16352
Jeff Johnson295189b2012-06-20 16:38:30 -070016353 @see
16354 @return Result of the function call
16355*/
16356WDI_Status
16357WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016358(
Jeff Johnson295189b2012-06-20 16:38:30 -070016359 WDI_ControlBlockType* pWDICtx,
16360 WDI_EventInfoType* pEventData
16361)
16362{
16363 WDI_Status wdiStatus;
16364 eHalStatus halStatus;
16365 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16367
16368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016370 -------------------------------------------------------------------------*/
16371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16372 ( NULL == pEventData->pEventData))
16373 {
16374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016378 }
16379
16380 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16381
16382 /*-------------------------------------------------------------------------
16383 Extract response and send it to UMAC
16384 -------------------------------------------------------------------------*/
16385 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016386 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016387
16388 /*Notify UMAC*/
16389 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16390
Jeff Johnsone7245742012-09-05 17:12:55 -070016391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016392}/*WDI_ProcessUpdateCfgRsp*/
16393
16394
16395
16396/**
16397 @brief Process Add BA Rsp function (called when a response
16398 is 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_ProcessAddBARsp
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_AddBARspCb wdiAddBARspCb;
16414
16415 tAddBARspParams halAddBARsp;
16416 WDI_AddBARspinfoType wdiAddBARsp;
16417
16418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16419
16420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016422 -------------------------------------------------------------------------*/
16423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16424 ( NULL == pEventData->pEventData))
16425 {
16426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 }
16431
16432 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16433
16434 /*-------------------------------------------------------------------------
16435 Extract response and send it to UMAC
16436 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016437 wpalMemoryCopy( &halAddBARsp,
16438 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016439 sizeof(halAddBARsp));
16440
16441 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16442
Jeff Johnson43971f52012-07-17 12:26:56 -070016443 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016444 {
16445 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16446 }
16447
16448 /*Notify UMAC*/
16449 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16450
Jeff Johnsone7245742012-09-05 17:12:55 -070016451 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016452}/*WDI_ProcessAddSessionBARsp*/
16453
16454/**
16455 @brief Process Add BA Rsp function (called when a response
16456 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016457
16458 @param pWDICtx: pointer to the WLAN DAL context
16459 pEventData: pointer to the event information structure
16460
Jeff Johnson295189b2012-06-20 16:38:30 -070016461 @see
16462 @return Result of the function call
16463*/
16464WDI_Status
16465WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016466(
Jeff Johnson295189b2012-06-20 16:38:30 -070016467 WDI_ControlBlockType* pWDICtx,
16468 WDI_EventInfoType* pEventData
16469)
16470{
16471 WDI_TriggerBARspCb wdiTriggerBARspCb;
16472
16473 tTriggerBARspParams* halTriggerBARsp;
16474 tTriggerBaRspCandidate* halBaCandidate;
16475 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16476 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16477 wpt_uint16 index;
16478 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016479
Jeff Johnson295189b2012-06-20 16:38:30 -070016480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16481
16482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 -------------------------------------------------------------------------*/
16485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16486 ( NULL == pEventData->pEventData))
16487 {
16488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 }
16493
16494 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16495
16496 /*-------------------------------------------------------------------------
16497 Extract response and send it to UMAC
16498 -------------------------------------------------------------------------*/
16499 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
16500
Jeff Johnsone7245742012-09-05 17:12:55 -070016501 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
16502 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070016503 sizeof(WDI_TriggerBARspCandidateType));
16504 if(NULL == wdiTriggerBARsp)
16505 {
16506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16507 "Failed to allocate memory in Trigger BA Response %x %x %x ",
16508 pWDICtx, pEventData, pEventData->pEventData);
16509 wpalMemoryFree(halTriggerBARsp);
16510 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016512 }
16513
16514 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
16515
16516 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
16517 {
16518 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070016519 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
16521
16522 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
16523 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
16524
16525 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
16526 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016527 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
16529 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
16530 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016531 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016532 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016533 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 halBaCandidate->baInfo[TidIndex].startingSeqNum;
16535 }
16536 wdiTriggerBARspCandidate++;
16537 halBaCandidate++;
16538 }
16539 }
16540
16541 /*Notify UMAC*/
16542 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
16543
16544 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016546}/*WDI_ProcessAddSessionBARsp*/
16547
16548/**
16549 @brief Process Update Beacon Params Rsp function (called when a response
16550 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016551
16552 @param pWDICtx: pointer to the WLAN DAL context
16553 pEventData: pointer to the event information structure
16554
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 @see
16556 @return Result of the function call
16557*/
16558WDI_Status
16559WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016560(
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 WDI_ControlBlockType* pWDICtx,
16562 WDI_EventInfoType* pEventData
16563)
16564{
16565 WDI_Status wdiStatus;
16566 eHalStatus halStatus;
16567 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
16568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16569
16570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 -------------------------------------------------------------------------*/
16573 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16574 ( NULL == pEventData->pEventData))
16575 {
16576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 }
16581
16582 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
16583
16584 /*-------------------------------------------------------------------------
16585 Extract response and send it to UMAC
16586 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016587 wpalMemoryCopy( &halStatus,
16588 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 sizeof(halStatus));
16590
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016592
16593 /*Notify UMAC*/
16594 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16595
Jeff Johnsone7245742012-09-05 17:12:55 -070016596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016597}/*WDI_ProcessUpdateBeaconParamsRsp*/
16598
16599/**
16600 @brief Process Send Beacon template Rsp function (called when a response
16601 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016602
16603 @param pWDICtx: pointer to the WLAN DAL context
16604 pEventData: pointer to the event information structure
16605
Jeff Johnson295189b2012-06-20 16:38:30 -070016606 @see
16607 @return Result of the function call
16608*/
16609WDI_Status
16610WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016611(
Jeff Johnson295189b2012-06-20 16:38:30 -070016612 WDI_ControlBlockType* pWDICtx,
16613 WDI_EventInfoType* pEventData
16614)
16615{
16616 WDI_Status wdiStatus;
16617 eHalStatus halStatus;
16618 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
16619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16620
16621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016623 -------------------------------------------------------------------------*/
16624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16625 ( NULL == pEventData->pEventData))
16626 {
16627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 }
16632
16633 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
16634
16635 /*-------------------------------------------------------------------------
16636 Extract response and send it to UMAC
16637 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016638 wpalMemoryCopy( &halStatus,
16639 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 sizeof(halStatus));
16641
Jeff Johnsone7245742012-09-05 17:12:55 -070016642 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016643
16644 /*Notify UMAC*/
16645 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16646
Jeff Johnsone7245742012-09-05 17:12:55 -070016647 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016648}/*WDI_ProcessSendBeaconParamsRsp*/
16649
Jeff Johnsone7245742012-09-05 17:12:55 -070016650
Jeff Johnson295189b2012-06-20 16:38:30 -070016651/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016652 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016653 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016654
16655 @param pWDICtx: pointer to the WLAN DAL context
16656 pEventData: pointer to the event information structure
16657
Jeff Johnson295189b2012-06-20 16:38:30 -070016658 @see
16659 @return Result of the function call
16660*/
16661WDI_Status
16662WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016663(
Jeff Johnson295189b2012-06-20 16:38:30 -070016664 WDI_ControlBlockType* pWDICtx,
16665 WDI_EventInfoType* pEventData
16666)
16667{
16668 WDI_Status wdiStatus;
16669 eHalStatus halStatus;
16670 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
16671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16672
16673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016674 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016675 -------------------------------------------------------------------------*/
16676 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16677 ( NULL == pEventData->pEventData))
16678 {
16679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016680 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 }
16684
16685 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
16686
16687 /*-------------------------------------------------------------------------
16688 Extract response and send it to UMAC
16689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016690 wpalMemoryCopy( &halStatus,
16691 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016692 sizeof(halStatus));
16693
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016695
16696 /*Notify UMAC*/
16697 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16698
Jeff Johnsone7245742012-09-05 17:12:55 -070016699 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016700}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
16701
16702 /**
16703 @brief Process Set Max Tx Power Rsp function (called when a response
16704 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016705
16706 @param pWDICtx: pointer to the WLAN DAL context
16707 pEventData: pointer to the event information structure
16708
Jeff Johnson295189b2012-06-20 16:38:30 -070016709 @see
16710 @return Result of the function call
16711*/
16712WDI_Status
16713WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016714(
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 WDI_ControlBlockType* pWDICtx,
16716 WDI_EventInfoType* pEventData
16717)
16718{
16719 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070016720
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070016722
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
16724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16725
16726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016728 -------------------------------------------------------------------------*/
16729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16730 ( NULL == pEventData->pEventData))
16731 {
16732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 }
16737
16738 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
16739
16740 /*-------------------------------------------------------------------------
16741 Extract response and send it to UMAC
16742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016743 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
16744 pEventData->pEventData,
16745 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016746
16747 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
16748 {
16749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16750 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070016751 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016753 }
16754
Jeff Johnsone7245742012-09-05 17:12:55 -070016755 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070016756 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070016758
16759 /*Notify UMAC*/
16760 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
16761
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016763}
16764
16765#ifdef WLAN_FEATURE_P2P
16766/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016767 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016769
16770 @param pWDICtx: pointer to the WLAN DAL context
16771 pEventData: pointer to the event information structure
16772
Jeff Johnson295189b2012-06-20 16:38:30 -070016773 @see
16774 @return Result of the function call
16775*/
16776WDI_Status
16777WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016778(
Jeff Johnson295189b2012-06-20 16:38:30 -070016779 WDI_ControlBlockType* pWDICtx,
16780 WDI_EventInfoType* pEventData
16781)
16782{
16783 WDI_Status wdiStatus;
16784 eHalStatus halStatus;
16785 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
16786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16787
16788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016790 -------------------------------------------------------------------------*/
16791 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16792 ( NULL == pEventData->pEventData))
16793 {
16794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016798 }
16799
16800 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
16801
16802 /*-------------------------------------------------------------------------
16803 Extract response and send it to UMAC
16804 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 wpalMemoryCopy( &halStatus,
16806 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016807 sizeof(halStatus));
16808
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016810
16811 /*Notify UMAC*/
16812 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16813
Jeff Johnsone7245742012-09-05 17:12:55 -070016814 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016815}/*WDI_ProcessP2PGONOARsp*/
16816#endif
16817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016818 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016820
16821 @param pWDICtx: pointer to the WLAN DAL context
16822 pEventData: pointer to the event information structure
16823
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 @see
16825 @return Result of the function call
16826*/
16827WDI_Status
16828WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016829(
Jeff Johnson295189b2012-06-20 16:38:30 -070016830 WDI_ControlBlockType* pWDICtx,
16831 WDI_EventInfoType* pEventData
16832)
16833{
16834 WDI_Status wdiStatus;
16835 eHalStatus halStatus;
16836 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016837 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16839
16840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016841 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 -------------------------------------------------------------------------*/
16843 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16844 ( NULL == pEventData->pEventData))
16845 {
16846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016847 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 }
16851
16852 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
16853
16854 /*-------------------------------------------------------------------------
16855 Extract response and send it to UMAC
16856 -------------------------------------------------------------------------*/
16857 halStatus = *((eHalStatus*)pEventData->pEventData);
16858
Jeff Johnsone7245742012-09-05 17:12:55 -070016859 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016860
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016861 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
16862 * Other module states are taken care by PMC.
16863 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
16864 */
16865 if (wdiStatus != WDI_STATUS_SUCCESS) {
16866
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070016867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16868 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
16869 halStatus);
16870 /* Call Back is not required as we are putting the DXE in FULL
16871 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016872 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16873
16874 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16876 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
16877 WDI_ASSERT(0);
16878 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016879 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 /*Notify UMAC*/
16881 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16882
Jeff Johnsone7245742012-09-05 17:12:55 -070016883 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016884}/*WDI_ProcessEnterImpsRsp*/
16885
16886/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016887 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016889
16890 @param pWDICtx: pointer to the WLAN DAL context
16891 pEventData: pointer to the event information structure
16892
Jeff Johnson295189b2012-06-20 16:38:30 -070016893 @see
16894 @return Result of the function call
16895*/
16896WDI_Status
16897WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016898(
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 WDI_ControlBlockType* pWDICtx,
16900 WDI_EventInfoType* pEventData
16901)
16902{
16903 WDI_Status wdiStatus;
16904 eHalStatus halStatus;
16905 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016906 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16908
16909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 -------------------------------------------------------------------------*/
16912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16913 ( NULL == pEventData->pEventData))
16914 {
16915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016919 }
16920
16921 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
16922
16923 /*-------------------------------------------------------------------------
16924 Extract response and send it to UMAC
16925 -------------------------------------------------------------------------*/
16926 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016927 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016928
16929 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016930 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16931 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16932 {
16933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16934 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
16935 WDI_ASSERT(0);
16936 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016937 /*Notify UMAC*/
16938 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16939
Jeff Johnsone7245742012-09-05 17:12:55 -070016940 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016941}/*WDI_ProcessExitImpsRsp*/
16942
16943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016944 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016945 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016946
16947 @param pWDICtx: pointer to the WLAN DAL context
16948 pEventData: pointer to the event information structure
16949
Jeff Johnson295189b2012-06-20 16:38:30 -070016950 @see
16951 @return Result of the function call
16952*/
16953WDI_Status
16954WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016955(
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 WDI_ControlBlockType* pWDICtx,
16957 WDI_EventInfoType* pEventData
16958)
16959{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016960 eHalStatus halStatus = eHAL_STATUS_FAILURE;
16961 tHalEnterBmpsRspParams halEnterBmpsRsp;
16962 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
16963 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
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
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016980 Extract response and send it to UMAC
16981 -------------------------------------------------------------------------*/
16982 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
16983 {
16984 wpalMemoryCopy( &halEnterBmpsRsp,
16985 pEventData->pEventData,
16986 sizeof(halEnterBmpsRsp));
16987
16988 //Used to print debug message
16989 halStatus = halEnterBmpsRsp.status;
16990 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
16991 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
16992 }
16993 else
16994 {
16995 halStatus = *((eHalStatus*)pEventData->pEventData);
16996 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
16997 }
16998
16999 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017000
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017001 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17002 * Other module states are taken care by PMC.
17003 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17004 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017005 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17006 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017007
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017009 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17010 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017011 /* Call Back is not required as we are putting the DXE in FULL
17012 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017013 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17014 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17015 {
17016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17017 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17018 WDI_ASSERT(0);
17019 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017020 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017021 }
17022
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017024 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017025
Jeff Johnsone7245742012-09-05 17:12:55 -070017026 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017027}/*WDI_ProcessEnterBmpsRsp*/
17028
17029/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017030 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017032
17033 @param pWDICtx: pointer to the WLAN DAL context
17034 pEventData: pointer to the event information structure
17035
Jeff Johnson295189b2012-06-20 16:38:30 -070017036 @see
17037 @return Result of the function call
17038*/
17039WDI_Status
17040WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017041(
Jeff Johnson295189b2012-06-20 16:38:30 -070017042 WDI_ControlBlockType* pWDICtx,
17043 WDI_EventInfoType* pEventData
17044)
17045{
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 eHalStatus halStatus;
17047 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017048 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017049 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17050 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17052
17053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017055 -------------------------------------------------------------------------*/
17056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17057 ( NULL == pEventData->pEventData))
17058 {
17059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 }
17064
17065 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17066
17067 /*-------------------------------------------------------------------------
17068 Extract response and send it to UMAC
17069 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017070
17071 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17072 {
17073 wpalMemoryCopy( &halExitBmpsRsp,
17074 pEventData->pEventData,
17075 sizeof(halExitBmpsRsp));
17076
17077 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17078 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17079 }
17080 else
17081 {
17082 halStatus = *((eHalStatus*)pEventData->pEventData);
17083 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17084 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017085
17086 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017087 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17088 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17089 {
17090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17091 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17092 WDI_ASSERT(0);
17093 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017094 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17095
17096 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017097 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017098
Jeff Johnsone7245742012-09-05 17:12:55 -070017099 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017100}/*WDI_ProcessExitBmpsRsp*/
17101
17102/**
17103 @brief Process Enter UAPSD Rsp function (called when a response
17104 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017105
17106 @param pWDICtx: pointer to the WLAN DAL context
17107 pEventData: pointer to the event information structure
17108
Jeff Johnson295189b2012-06-20 16:38:30 -070017109 @see
17110 @return Result of the function call
17111*/
17112WDI_Status
17113WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017114(
Jeff Johnson295189b2012-06-20 16:38:30 -070017115 WDI_ControlBlockType* pWDICtx,
17116 WDI_EventInfoType* pEventData
17117)
17118{
Jeff Johnson295189b2012-06-20 16:38:30 -070017119 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017120 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017121 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017122 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17123
Jeff Johnson295189b2012-06-20 16:38:30 -070017124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17125
17126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017127 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017128 -------------------------------------------------------------------------*/
17129 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17130 ( NULL == pEventData->pEventData))
17131 {
17132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017133 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017136 }
17137
17138 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17139
17140 /*-------------------------------------------------------------------------
17141 Extract response and send it to UMAC
17142 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017143 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17144 {
17145 wpalMemoryCopy( &halEnterUapsdRsp,
17146 pEventData->pEventData,
17147 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017148
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017149 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17150 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17151 }
17152 else
17153 {
17154 halStatus = *((eHalStatus*)pEventData->pEventData);
17155 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17156 }
17157
17158 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017159 {
17160 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17161 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17162 // the traffic to decide when to suspend the trigger frames when there is no traffic
17163 // activity on the trigger enabled ACs
17164 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17165
17166#ifdef WLAN_PERF
17167 // Increment the BD signature to refresh the fast path BD utilization
17168 pWDICtx->uBdSigSerialNum++;
17169#endif
17170 }
17171
17172 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017173 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017174
Jeff Johnsone7245742012-09-05 17:12:55 -070017175 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017176}/*WDI_ProcessEnterUapsdRsp*/
17177
17178/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017179 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017181
17182 @param pWDICtx: pointer to the WLAN DAL context
17183 pEventData: pointer to the event information structure
17184
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 @see
17186 @return Result of the function call
17187*/
17188WDI_Status
17189WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017190(
Jeff Johnson295189b2012-06-20 16:38:30 -070017191 WDI_ControlBlockType* pWDICtx,
17192 WDI_EventInfoType* pEventData
17193)
17194{
Jeff Johnson295189b2012-06-20 16:38:30 -070017195 eHalStatus halStatus;
17196 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017197 tHalExitUapsdRspParams halExitUapsdRsp;
17198 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17200
17201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017202 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017203 -------------------------------------------------------------------------*/
17204 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17205 ( NULL == pEventData->pEventData))
17206 {
17207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017208 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017211 }
17212
17213 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17214
17215 /*-------------------------------------------------------------------------
17216 Extract response and send it to UMAC
17217 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017218 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17219 {
17220 wpalMemoryCopy( &halExitUapsdRsp,
17221 pEventData->pEventData,
17222 sizeof(halExitUapsdRsp));
17223
17224 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17225 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17226 }
17227 else
17228 {
17229 halStatus = *((eHalStatus*)pEventData->pEventData);
17230 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17231 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17233 // directly instead of the FW WQ.
17234 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17235
17236#ifdef WLAN_PERF
17237 // Increment the BD signature to refresh the fast path BD utilization
17238 pWDICtx->uBdSigSerialNum++;
17239#endif
17240
17241 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017242 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017243
Jeff Johnsone7245742012-09-05 17:12:55 -070017244 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017245}/*WDI_ProcessExitUapsdRsp*/
17246
17247/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017248 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017249 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017250
17251 @param pWDICtx: pointer to the WLAN DAL context
17252 pEventData: pointer to the event information structure
17253
Jeff Johnson295189b2012-06-20 16:38:30 -070017254 @see
17255 @return Result of the function call
17256*/
17257WDI_Status
17258WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017259(
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 WDI_ControlBlockType* pWDICtx,
17261 WDI_EventInfoType* pEventData
17262)
17263{
17264 WDI_Status wdiStatus;
17265 eHalStatus halStatus;
17266 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17268
17269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017271 -------------------------------------------------------------------------*/
17272 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17273 ( NULL == pEventData->pEventData))
17274 {
17275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017279 }
17280
17281 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17282
17283 /*-------------------------------------------------------------------------
17284 Extract response and send it to UMAC
17285 -------------------------------------------------------------------------*/
17286 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017287 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017288
17289 /*Notify UMAC*/
17290 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17291
Jeff Johnsone7245742012-09-05 17:12:55 -070017292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017293}/*WDI_ProcessSetUapsdAcParamsRsp*/
17294
17295/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017296 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017297 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017298
17299 @param pWDICtx: pointer to the WLAN DAL context
17300 pEventData: pointer to the event information structure
17301
Jeff Johnson295189b2012-06-20 16:38:30 -070017302 @see
17303 @return Result of the function call
17304*/
17305WDI_Status
17306WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017307(
Jeff Johnson295189b2012-06-20 16:38:30 -070017308 WDI_ControlBlockType* pWDICtx,
17309 WDI_EventInfoType* pEventData
17310)
17311{
17312 WDI_Status wdiStatus;
17313 eHalStatus halStatus;
17314 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17316
17317 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017318 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017319 -------------------------------------------------------------------------*/
17320 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17321 ( NULL == pEventData->pEventData))
17322 {
17323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017324 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017325 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017327 }
17328
17329 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17330
17331 /*-------------------------------------------------------------------------
17332 Extract response and send it to UMAC
17333 -------------------------------------------------------------------------*/
17334 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017335 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017336
17337 /*Notify UMAC*/
17338 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17339
Jeff Johnsone7245742012-09-05 17:12:55 -070017340 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017341}/*WDI_ProcessUpdateUapsdParamsRsp*/
17342
17343/**
17344 @brief Process Configure RXP filter Rsp function (called when a
17345 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017346
17347 @param pWDICtx: pointer to the WLAN DAL context
17348 pEventData: pointer to the event information structure
17349
Jeff Johnson295189b2012-06-20 16:38:30 -070017350 @see
17351 @return Result of the function call
17352*/
17353WDI_Status
17354WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017355(
Jeff Johnson295189b2012-06-20 16:38:30 -070017356 WDI_ControlBlockType* pWDICtx,
17357 WDI_EventInfoType* pEventData
17358)
17359{
17360 WDI_Status wdiStatus;
17361 eHalStatus halStatus;
17362 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17364
17365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017367 -------------------------------------------------------------------------*/
17368 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17369 ( NULL == pEventData->pEventData))
17370 {
17371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017375 }
17376
17377 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17378
17379 /*-------------------------------------------------------------------------
17380 Extract response and send it to UMAC
17381 -------------------------------------------------------------------------*/
17382 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017383 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017384
17385 /*Notify UMAC*/
17386 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17387
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017389}/*WDI_ProcessConfigureRxpFilterRsp*/
17390
17391/**
17392 @brief Process Set beacon filter Rsp function (called when a
17393 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017394
17395 @param pWDICtx: pointer to the WLAN DAL context
17396 pEventData: pointer to the event information structure
17397
Jeff Johnson295189b2012-06-20 16:38:30 -070017398 @see
17399 @return Result of the function call
17400*/
17401WDI_Status
17402WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017403(
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 WDI_ControlBlockType* pWDICtx,
17405 WDI_EventInfoType* pEventData
17406)
17407{
17408 WDI_Status wdiStatus;
17409 eHalStatus halStatus;
17410 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17412
17413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017415 -------------------------------------------------------------------------*/
17416 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17417 ( NULL == pEventData->pEventData))
17418 {
17419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017423 }
17424
17425 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17426
17427 /*-------------------------------------------------------------------------
17428 Extract response and send it to UMAC
17429 -------------------------------------------------------------------------*/
17430 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017431 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017432
17433 /*Notify UMAC*/
17434 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17435
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017437}/*WDI_ProcessSetBeaconFilterRsp*/
17438
17439/**
17440 @brief Process remove beacon filter Rsp function (called when a
17441 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017442
17443 @param pWDICtx: pointer to the WLAN DAL context
17444 pEventData: pointer to the event information structure
17445
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 @see
17447 @return Result of the function call
17448*/
17449WDI_Status
17450WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017451(
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 WDI_ControlBlockType* pWDICtx,
17453 WDI_EventInfoType* pEventData
17454)
17455{
17456 WDI_Status wdiStatus;
17457 eHalStatus halStatus;
17458 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
17459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17460
17461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017463 -------------------------------------------------------------------------*/
17464 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17465 ( NULL == pEventData->pEventData))
17466 {
17467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017471 }
17472
17473 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
17474
17475 /*-------------------------------------------------------------------------
17476 Extract response and send it to UMAC
17477 -------------------------------------------------------------------------*/
17478 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017479 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017480
17481 /*Notify UMAC*/
17482 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17483
Jeff Johnsone7245742012-09-05 17:12:55 -070017484 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017485}/*WDI_ProcessRemBeaconFilterRsp*/
17486
17487/**
17488 @brief Process set RSSI thresholds Rsp function (called when a
17489 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017490
17491 @param pWDICtx: pointer to the WLAN DAL context
17492 pEventData: pointer to the event information structure
17493
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 @see
17495 @return Result of the function call
17496*/
17497WDI_Status
17498WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017499(
Jeff Johnson295189b2012-06-20 16:38:30 -070017500 WDI_ControlBlockType* pWDICtx,
17501 WDI_EventInfoType* pEventData
17502)
17503{
17504 WDI_Status wdiStatus;
17505 eHalStatus halStatus;
17506 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
17507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17508
17509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017511 -------------------------------------------------------------------------*/
17512 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17513 ( NULL == pEventData->pEventData))
17514 {
17515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017519 }
17520
17521 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
17522
17523 /*-------------------------------------------------------------------------
17524 Extract response and send it to UMAC
17525 -------------------------------------------------------------------------*/
17526 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017527 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017528
17529 /*Notify UMAC*/
17530 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
17531
Jeff Johnsone7245742012-09-05 17:12:55 -070017532 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017533}/*WDI_ProcessSetRSSIThresoldsRsp*/
17534
17535/**
17536 @brief Process host offload Rsp function (called when a
17537 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017538
17539 @param pWDICtx: pointer to the WLAN DAL context
17540 pEventData: pointer to the event information structure
17541
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 @see
17543 @return Result of the function call
17544*/
17545WDI_Status
17546WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017547(
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 WDI_ControlBlockType* pWDICtx,
17549 WDI_EventInfoType* pEventData
17550)
17551{
17552 WDI_Status wdiStatus;
17553 eHalStatus halStatus;
17554 WDI_HostOffloadCb wdiHostOffloadCb;
17555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17556
17557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017558 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017559 -------------------------------------------------------------------------*/
17560 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17561 ( NULL == pEventData->pEventData))
17562 {
17563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017564 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 }
17568
17569 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
17570
17571 /*-------------------------------------------------------------------------
17572 Extract response and send it to UMAC
17573 -------------------------------------------------------------------------*/
17574 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017575 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017576
17577 /*Notify UMAC*/
17578 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
17579
Jeff Johnsone7245742012-09-05 17:12:55 -070017580 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017581}/*WDI_ProcessHostOffloadRsp*/
17582
17583/**
17584 @brief Process keep alive Rsp function (called when a
17585 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017586
17587 @param pWDICtx: pointer to the WLAN DAL context
17588 pEventData: pointer to the event information structure
17589
Jeff Johnson295189b2012-06-20 16:38:30 -070017590 @see
17591 @return Result of the function call
17592*/
17593WDI_Status
17594WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017595(
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 WDI_ControlBlockType* pWDICtx,
17597 WDI_EventInfoType* pEventData
17598)
17599{
17600 WDI_Status wdiStatus;
17601 eHalStatus halStatus;
17602 WDI_KeepAliveCb wdiKeepAliveCb;
17603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17605 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
17606
17607
17608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 -------------------------------------------------------------------------*/
17611 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17612 ( NULL == pEventData->pEventData))
17613 {
17614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017618 }
17619
Jeff Johnsone7245742012-09-05 17:12:55 -070017620 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
17621
Jeff Johnson295189b2012-06-20 16:38:30 -070017622 /*-------------------------------------------------------------------------
17623 Extract response and send it to UMAC
17624 -------------------------------------------------------------------------*/
17625 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017626 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017627
17628 /*Notify UMAC*/
17629 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
17630
Jeff Johnsone7245742012-09-05 17:12:55 -070017631 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017632}/*WDI_ProcessKeepAliveRsp*/
17633
17634/**
17635 @brief Process wowl add ptrn Rsp function (called when a
17636 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017637
17638 @param pWDICtx: pointer to the WLAN DAL context
17639 pEventData: pointer to the event information structure
17640
Jeff Johnson295189b2012-06-20 16:38:30 -070017641 @see
17642 @return Result of the function call
17643*/
17644WDI_Status
17645WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017646(
Jeff Johnson295189b2012-06-20 16:38:30 -070017647 WDI_ControlBlockType* pWDICtx,
17648 WDI_EventInfoType* pEventData
17649)
17650{
Jeff Johnson295189b2012-06-20 16:38:30 -070017651 eHalStatus halStatus;
17652 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017653 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
17654 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
17655
Jeff Johnson295189b2012-06-20 16:38:30 -070017656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17657
17658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017659 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017660 -------------------------------------------------------------------------*/
17661 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17662 ( NULL == pEventData->pEventData))
17663 {
17664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017668 }
17669
17670 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
17671
17672 /*-------------------------------------------------------------------------
17673 Extract response and send it to UMAC
17674 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017675 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17676 {
17677 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
17678 pEventData->pEventData,
17679 sizeof(halAddWowlBcastPtrRsp));
17680
17681 wdiWowlAddBcPtrRsp.wdiStatus =
17682 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
17683 }
17684 else
17685 {
17686 halStatus = *((eHalStatus*)pEventData->pEventData);
17687 wdiWowlAddBcPtrRsp.wdiStatus =
17688 WDI_HAL_2_WDI_STATUS(halStatus);
17689 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017690
17691 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017692 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017693
Jeff Johnsone7245742012-09-05 17:12:55 -070017694 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017695}/*WDI_ProcessWowlAddBcPtrnRsp*/
17696
17697/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017698 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017699 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017700
17701 @param pWDICtx: pointer to the WLAN DAL context
17702 pEventData: pointer to the event information structure
17703
Jeff Johnson295189b2012-06-20 16:38:30 -070017704 @see
17705 @return Result of the function call
17706*/
17707WDI_Status
17708WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017709(
Jeff Johnson295189b2012-06-20 16:38:30 -070017710 WDI_ControlBlockType* pWDICtx,
17711 WDI_EventInfoType* pEventData
17712)
17713{
Jeff Johnson295189b2012-06-20 16:38:30 -070017714 eHalStatus halStatus;
17715 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017716 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
17717 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17719
17720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017722 -------------------------------------------------------------------------*/
17723 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17724 ( NULL == pEventData->pEventData))
17725 {
17726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017730 }
17731
17732 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
17733
17734 /*-------------------------------------------------------------------------
17735 Extract response and send it to UMAC
17736 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017737 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17738 {
17739 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
17740 pEventData->pEventData,
17741 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017742
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017743 wdiWowlDelBcstPtrRsp.wdiStatus =
17744 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
17745 }
17746 else
17747 {
17748 halStatus = *((eHalStatus*)pEventData->pEventData);
17749 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17750 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017751 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017752 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017753
Jeff Johnsone7245742012-09-05 17:12:55 -070017754 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017755}/*WDI_ProcessWowlDelBcPtrnRsp*/
17756
17757/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017758 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017759 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017760
17761 @param pWDICtx: pointer to the WLAN DAL context
17762 pEventData: pointer to the event information structure
17763
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 @see
17765 @return Result of the function call
17766*/
17767WDI_Status
17768WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017769(
Jeff Johnson295189b2012-06-20 16:38:30 -070017770 WDI_ControlBlockType* pWDICtx,
17771 WDI_EventInfoType* pEventData
17772)
17773{
Jeff Johnson295189b2012-06-20 16:38:30 -070017774 eHalStatus halStatus;
17775 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017776 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
17777 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17779
17780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017781 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017782 -------------------------------------------------------------------------*/
17783 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17784 ( NULL == pEventData->pEventData))
17785 {
17786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017787 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017788 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017789 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017790 }
17791
17792 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
17793
17794 /*-------------------------------------------------------------------------
17795 Extract response and send it to UMAC
17796 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017797 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17798 {
17799 wpalMemoryCopy( &halEnterWowlRspParams,
17800 (wpt_uint8*)pEventData->pEventData,
17801 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017802
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017803 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
17804 wdiwowlEnterRsp.status =
17805 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
17806 }
17807 else
17808 {
17809 halStatus = *((eHalStatus*)pEventData->pEventData);
17810 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17811 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017812 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017813 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017814
Jeff Johnsone7245742012-09-05 17:12:55 -070017815 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017816}/*WDI_ProcessWowlEnterRsp*/
17817
17818/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017819 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017820 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017821
17822 @param pWDICtx: pointer to the WLAN DAL context
17823 pEventData: pointer to the event information structure
17824
Jeff Johnson295189b2012-06-20 16:38:30 -070017825 @see
17826 @return Result of the function call
17827*/
17828WDI_Status
17829WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017830(
Jeff Johnson295189b2012-06-20 16:38:30 -070017831 WDI_ControlBlockType* pWDICtx,
17832 WDI_EventInfoType* pEventData
17833)
17834{
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 eHalStatus halStatus;
17836 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017837 tHalExitWowlRspParams halExitWowlRspParams;
17838 WDI_WowlExitRspParamsType wdiWowlExitRsp;
17839
Jeff Johnson295189b2012-06-20 16:38:30 -070017840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17841
17842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017844 -------------------------------------------------------------------------*/
17845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17846 ( NULL == pEventData->pEventData))
17847 {
17848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017852 }
17853
17854 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
17855
17856 /*-------------------------------------------------------------------------
17857 Extract response and send it to UMAC
17858 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017859 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17860 {
17861 wpalMemoryCopy( &halExitWowlRspParams,
17862 pEventData->pEventData,
17863 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017864
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017865 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
17866 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
17867
17868 }
17869 else
17870 {
17871 halStatus = *((eHalStatus*)pEventData->pEventData);
17872 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17873 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017874 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017875 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017876
Jeff Johnsone7245742012-09-05 17:12:55 -070017877 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017878}/*WDI_ProcessWowlExitRsp*/
17879
17880/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017881 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070017882 (called when a response is being received over the bus
17883 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017884
17885 @param pWDICtx: pointer to the WLAN DAL context
17886 pEventData: pointer to the event information structure
17887
Jeff Johnson295189b2012-06-20 16:38:30 -070017888 @see
17889 @return Result of the function call
17890*/
17891WDI_Status
17892WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017893(
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 WDI_ControlBlockType* pWDICtx,
17895 WDI_EventInfoType* pEventData
17896)
17897{
17898 WDI_Status wdiStatus;
17899 eHalStatus halStatus;
17900 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
17901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17902
17903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 -------------------------------------------------------------------------*/
17906 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17907 ( NULL == pEventData->pEventData))
17908 {
17909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017913 }
17914
17915 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
17916
17917 /*-------------------------------------------------------------------------
17918 Extract response and send it to UMAC
17919 -------------------------------------------------------------------------*/
17920 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017921 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017922
17923 /*Notify UMAC*/
17924 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
17925
Jeff Johnsone7245742012-09-05 17:12:55 -070017926 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017927}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
17928
17929
17930/**
17931 @brief Process Nv download(called when a response
17932 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070017933
17934 @param pWDICtx: pointer to the WLAN DAL context
17935 pEventData: pointer to the event information structure
17936
Jeff Johnson295189b2012-06-20 16:38:30 -070017937 @see
17938 @return Result of the function call
17939*/
17940WDI_Status
17941WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017942(
Jeff Johnson295189b2012-06-20 16:38:30 -070017943 WDI_ControlBlockType* pWDICtx,
17944 WDI_EventInfoType* pEventData
17945)
17946{
17947
17948 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
17949 tHalNvImgDownloadRspParams halNvDownloadRsp;
17950 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
17951
17952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017954 -------------------------------------------------------------------------*/
17955 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17956 ( NULL == pEventData->pEventData))
17957 {
17958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 }
17963
17964 /*-------------------------------------------------------------------------
17965 Extract response and send it to UMAC
17966 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017967 wpalMemoryCopy( &halNvDownloadRsp,
17968 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017969 sizeof(halNvDownloadRsp));
17970
17971 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
17972
17973 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070017974 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
17975 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070017976 {
17977 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070017978 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017979 }
17980 else
17981 {
17982 /*Reset the Nv related global information in WDI context information */
17983 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
17984 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
17985 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
17986 /*call WDA callback function for last fragment */
17987 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
17988 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
17989 }
17990
Jeff Johnsone7245742012-09-05 17:12:55 -070017991 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017992}
17993#ifdef WLAN_FEATURE_VOWIFI_11R
17994/**
17995 @brief Process Add TSpec Rsp function (called when a response
17996 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017997
17998 @param pWDICtx: pointer to the WLAN DAL context
17999 pEventData: pointer to the event information structure
18000
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 @see
18002 @return Result of the function call
18003*/
18004WDI_Status
18005WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018006(
Jeff Johnson295189b2012-06-20 16:38:30 -070018007 WDI_ControlBlockType* pWDICtx,
18008 WDI_EventInfoType* pEventData
18009)
18010{
18011 WDI_Status wdiStatus;
18012 tAggrAddTsRspParams aggrAddTsRsp;
18013 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18015
18016 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018017 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018018 -------------------------------------------------------------------------*/
18019 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18020 ( NULL == pEventData->pEventData))
18021 {
18022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018023 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018026 }
18027
18028 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18029
18030 /*-------------------------------------------------------------------------
18031 Extract response and send it to UMAC
18032 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018033 wpalMemoryCopy( &aggrAddTsRsp,
18034 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018035 sizeof(aggrAddTsRsp));
18036
18037 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018038 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018039
18040 /*Notify UMAC*/
18041 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18042
Jeff Johnsone7245742012-09-05 17:12:55 -070018043 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018044}/*WDI_ProcessAddTSpecRsp*/
18045#endif /* WLAN_FEATURE_VOWIFI_11R */
18046
18047/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018048 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018049 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018050
18051 @param pWDICtx: pointer to the WLAN DAL context
18052 pEventData: pointer to the event information structure
18053
Jeff Johnson295189b2012-06-20 16:38:30 -070018054 @see
18055 @return Result of the function call
18056*/
18057WDI_Status
18058WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018059(
Jeff Johnson295189b2012-06-20 16:38:30 -070018060 WDI_ControlBlockType* pWDICtx,
18061 WDI_EventInfoType* pEventData
18062)
18063{
18064 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18065 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18066 tHalHostResumeRspParams hostResumeRspMsg;
18067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18068
18069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018071 -------------------------------------------------------------------------*/
18072 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18073 ( NULL == pEventData->pEventData))
18074 {
18075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018079 }
18080
18081 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18082
18083 /*-------------------------------------------------------------------------
18084 Extract response and send it to UMAC
18085 -------------------------------------------------------------------------*/
18086
Jeff Johnsone7245742012-09-05 17:12:55 -070018087 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018088 (wpt_uint8*)pEventData->pEventData,
18089 sizeof(hostResumeRspMsg));
18090
Jeff Johnsone7245742012-09-05 17:12:55 -070018091 wdiResumeRspParams.wdiStatus =
18092 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018093
18094 /*Notify UMAC*/
18095 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18096
18097 return WDI_STATUS_SUCCESS;
18098}
18099
18100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018101 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018102 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018103
18104 @param pWDICtx: pointer to the WLAN DAL context
18105 pEventData: pointer to the event information structure
18106
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 @see
18108 @return Result of the function call
18109*/
18110WDI_Status
18111WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018112(
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 WDI_ControlBlockType* pWDICtx,
18114 WDI_EventInfoType* pEventData
18115)
18116{
18117 WDI_Status wdiStatus;
18118 eHalStatus halStatus;
18119 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18121
18122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018123 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018124 -------------------------------------------------------------------------*/
18125 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18126 ( NULL == pEventData->pEventData))
18127 {
18128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018129 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018132 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018133
18134 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018135
18136 /*-------------------------------------------------------------------------
18137 Extract response and send it to UMAC
18138 -------------------------------------------------------------------------*/
18139 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018140 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018141
18142 /*Notify UMAC*/
18143 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18144
Jeff Johnsone7245742012-09-05 17:12:55 -070018145 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018146}/*WDI_ProcessSetTxPerTrackingRsp*/
18147
18148/*==========================================================================
18149 Indications from HAL
18150 ==========================================================================*/
18151/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018152 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018153 indication of this kind is being received over the bus
18154 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018155
18156 @param pWDICtx: pointer to the WLAN DAL context
18157 pEventData: pointer to the event information structure
18158
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 @see
18160 @return Result of the function call
18161*/
18162WDI_Status
18163WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018164(
Jeff Johnson295189b2012-06-20 16:38:30 -070018165 WDI_ControlBlockType* pWDICtx,
18166 WDI_EventInfoType* pEventData
18167)
18168{
18169 WDI_LowLevelIndType wdiInd;
18170 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18172
18173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 -------------------------------------------------------------------------*/
18176 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18177 ( NULL == pEventData->pEventData))
18178 {
18179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018183 }
18184
18185 /*-------------------------------------------------------------------------
18186 Extract indication and send it to UMAC
18187 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018188 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18189 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018190 sizeof(tHalRSSINotification));
18191
18192 /*Fill in the indication parameters*/
18193 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18194 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18195 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18196 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18197 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18198 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18199 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18200 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18201 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18202 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18203 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18204 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18205 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018206 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18207 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018208
18209 /*Notify UMAC*/
18210 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018211
18212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018213}/*WDI_ProcessLowRSSIInd*/
18214
18215
18216/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018217 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018218 an indication of this kind is being received over the
18219 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018220
18221 @param pWDICtx: pointer to the WLAN DAL context
18222 pEventData: pointer to the event information structure
18223
Jeff Johnson295189b2012-06-20 16:38:30 -070018224 @see
18225 @return Result of the function call
18226*/
18227WDI_Status
18228WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018229(
Jeff Johnson295189b2012-06-20 16:38:30 -070018230 WDI_ControlBlockType* pWDICtx,
18231 WDI_EventInfoType* pEventData
18232)
18233{
18234 WDI_Status wdiStatus;
18235 eHalStatus halStatus;
18236 WDI_LowLevelIndType wdiInd;
18237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18238
18239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018241 -------------------------------------------------------------------------*/
18242 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18243 ( NULL == pEventData->pEventData))
18244 {
18245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018249 }
18250
18251 /*-------------------------------------------------------------------------
18252 Extract indication and send it to UMAC
18253 -------------------------------------------------------------------------*/
18254 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18255 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018256 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018257
18258 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018259 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
18260
Jeff Johnson295189b2012-06-20 16:38:30 -070018261 /*Notify UMAC*/
18262 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018263
18264 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018265}/*WDI_ProcessMissedBeaconInd*/
18266
18267
18268/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018269 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018270 an indication of this kind is being received over the
18271 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018272
18273 @param pWDICtx: pointer to the WLAN DAL context
18274 pEventData: pointer to the event information structure
18275
Jeff Johnson295189b2012-06-20 16:38:30 -070018276 @see
18277 @return Result of the function call
18278*/
18279WDI_Status
18280WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018281(
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 WDI_ControlBlockType* pWDICtx,
18283 WDI_EventInfoType* pEventData
18284)
18285{
18286 WDI_Status wdiStatus;
18287 eHalStatus halStatus;
18288 WDI_LowLevelIndType wdiInd;
18289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18290
18291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018292 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018293 -------------------------------------------------------------------------*/
18294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18295 ( NULL == pEventData->pEventData))
18296 {
18297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018301 }
18302
18303 /*-------------------------------------------------------------------------
18304 Extract indication and send it to UMAC
18305 -------------------------------------------------------------------------*/
18306 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18307 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018308 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018309
18310 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018311 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 /* ! TO DO - fill in from HAL struct:
18313 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18314
18315 /*Notify UMAC*/
18316 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018317
18318 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018319}/*WDI_ProcessUnkAddrFrameInd*/
18320
18321
18322/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018323 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018324 indication of this kind is being received over the bus
18325 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018326
18327 @param pWDICtx: pointer to the WLAN DAL context
18328 pEventData: pointer to the event information structure
18329
Jeff Johnson295189b2012-06-20 16:38:30 -070018330 @see
18331 @return Result of the function call
18332*/
18333WDI_Status
18334WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018335(
Jeff Johnson295189b2012-06-20 16:38:30 -070018336 WDI_ControlBlockType* pWDICtx,
18337 WDI_EventInfoType* pEventData
18338)
18339{
18340 WDI_LowLevelIndType wdiInd;
18341 tpSirMicFailureInd pHalMicFailureInd;
18342
18343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18344
18345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018347 -------------------------------------------------------------------------*/
18348 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18349 ( NULL == pEventData->pEventData))
18350 {
18351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018355 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018356
Jeff Johnson295189b2012-06-20 16:38:30 -070018357 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18358 /*-------------------------------------------------------------------------
18359 Extract indication and send it to UMAC
18360 -------------------------------------------------------------------------*/
18361
18362 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018363 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018364 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18365 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18366 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18367 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18368 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18369 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18370 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18371 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018372 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018373 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018374 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018375 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018376 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018377 pHalMicFailureInd->info.keyId;
18378 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18379 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18380 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18381 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
18382 /*Notify UMAC*/
18383 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018384
18385 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018386}/*WDI_ProcessMicFailureInd*/
18387
18388
18389/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018390 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018391 an indication of this kind is being received over the
18392 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018393
18394 @param pWDICtx: pointer to the WLAN DAL context
18395 pEventData: pointer to the event information structure
18396
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 @see
18398 @return Result of the function call
18399*/
18400WDI_Status
18401WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018402(
Jeff Johnson295189b2012-06-20 16:38:30 -070018403 WDI_ControlBlockType* pWDICtx,
18404 WDI_EventInfoType* pEventData
18405)
18406{
18407 WDI_Status wdiStatus;
18408 eHalStatus halStatus;
18409 WDI_LowLevelIndType wdiInd;
18410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18411
18412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018413 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018414 -------------------------------------------------------------------------*/
18415 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18416 ( NULL == pEventData->pEventData))
18417 {
18418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018419 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018421 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018422 }
18423
18424 /*-------------------------------------------------------------------------
18425 Extract indication and send it to UMAC
18426 -------------------------------------------------------------------------*/
18427
18428 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18429 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018430 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018431
18432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18433 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070018434
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018436 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
18437 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018438
18439 /*Notify UMAC*/
18440 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018441
18442 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018443}/*WDI_ProcessFatalErrorInd*/
18444
18445/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018446 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018447 an indication of this kind is being received over the
18448 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018449
18450 @param pWDICtx: pointer to the WLAN DAL context
18451 pEventData: pointer to the event information structure
18452
Jeff Johnson295189b2012-06-20 16:38:30 -070018453 @see
18454 @return Result of the function call
18455*/
18456WDI_Status
18457WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018458(
Jeff Johnson295189b2012-06-20 16:38:30 -070018459 WDI_ControlBlockType* pWDICtx,
18460 WDI_EventInfoType* pEventData
18461)
18462{
18463 tDeleteStaContextParams halDelSTACtx;
18464 WDI_LowLevelIndType wdiInd;
18465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18466
18467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 -------------------------------------------------------------------------*/
18470 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18471 ( NULL == pEventData->pEventData))
18472 {
18473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018477 }
18478
18479 /*-------------------------------------------------------------------------
18480 Extract indication and send it to UMAC
18481 -------------------------------------------------------------------------*/
18482
18483 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018484 wpalMemoryCopy( &halDelSTACtx,
18485 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018486 sizeof(halDelSTACtx));
18487
18488 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018489 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018490
18491 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
18492 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
18493 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
18494 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
18495
Jeff Johnsone7245742012-09-05 17:12:55 -070018496 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070018497 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018498 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018499 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018500 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
18501 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070018502
18503 /*Notify UMAC*/
18504 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018505
18506 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018507}/*WDI_ProcessDelSTAInd*/
18508
18509/**
18510*@brief Process Coex Indication function (called when
18511 an indication of this kind is being received over the
18512 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018513
18514 @param pWDICtx: pointer to the WLAN DAL context
18515 pEventData: pointer to the event information structure
18516
Jeff Johnson295189b2012-06-20 16:38:30 -070018517 @see
18518 @return Result of the function call
18519*/
18520WDI_Status
18521WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018522(
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 WDI_ControlBlockType* pWDICtx,
18524 WDI_EventInfoType* pEventData
18525)
18526{
18527 WDI_LowLevelIndType wdiInd;
18528 tCoexIndMsg halCoexIndMsg;
18529 wpt_uint32 index;
18530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18531
18532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018534 -------------------------------------------------------------------------*/
18535 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18536 ( NULL == pEventData->pEventData ))
18537 {
18538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018540 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070018541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018542 }
18543
18544 /*-------------------------------------------------------------------------
18545 Extract indication and send it to UMAC
18546 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018547 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
18548 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 sizeof(halCoexIndMsg.coexIndParams) );
18550
18551 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018552 wdiInd.wdiIndicationType = WDI_COEX_IND;
18553 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070018554 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
18555 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018556 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070018557 }
18558
18559 // DEBUG
18560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18561 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070018562 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
18563 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
18564 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
18565 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
18566 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070018567
18568 /*Notify UMAC*/
18569 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018570
18571 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018572}/*WDI_ProcessCoexInd*/
18573
18574/**
18575*@brief Process Tx Complete Indication function (called when
18576 an indication of this kind is being received over the
18577 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018578
18579 @param pWDICtx: pointer to the WLAN DAL context
18580 pEventData: pointer to the event information structure
18581
Jeff Johnson295189b2012-06-20 16:38:30 -070018582 @see
18583 @return Result of the function call
18584*/
18585WDI_Status
18586WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018587(
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 WDI_ControlBlockType* pWDICtx,
18589 WDI_EventInfoType* pEventData
18590)
18591{
18592 WDI_LowLevelIndType wdiInd;
18593 tTxComplIndMsg halTxComplIndMsg;
18594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18595
18596 /*-------------------------------------------------------------------------
18597 Sanity check
18598 -------------------------------------------------------------------------*/
18599 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18600 ( NULL == pEventData->pEventData ))
18601 {
18602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 WDI_ASSERT( 0 );
18605 return WDI_STATUS_E_FAILURE;
18606 }
18607
18608 /*-------------------------------------------------------------------------
18609 Extract indication and send it to UMAC
18610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
18612 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018613 sizeof(halTxComplIndMsg.txComplParams) );
18614
18615 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
18617 wdiInd.wdiIndicationData.tx_complete_status
18618 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070018619
18620 /*Notify UMAC*/
18621 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018622
18623 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018624}/*WDI_ProcessTxCompleteInd*/
18625
18626#ifdef WLAN_FEATURE_P2P
18627/**
Viral Modi9dc288a2012-12-10 13:09:21 -080018628*@brief Process Noa Start Indication function (called when
18629 an indication of this kind is being received over the
18630 bus from HAL)
18631
18632 @param pWDICtx: pointer to the WLAN DAL context
18633 pEventData: pointer to the event information structure
18634
18635 @see
18636 @return Result of the function call
18637*/
18638WDI_Status
18639WDI_ProcessP2pNoaStartInd
18640(
18641 WDI_ControlBlockType* pWDICtx,
18642 WDI_EventInfoType* pEventData
18643)
18644{
18645 WDI_LowLevelIndType wdiInd;
18646 tNoaStartIndMsg halNoaStartIndMsg;
18647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18648
18649 /*-------------------------------------------------------------------------
18650 Sanity check
18651 -------------------------------------------------------------------------*/
18652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18653 ( NULL == pEventData->pEventData ))
18654 {
18655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18656 "%s: Invalid parameters", __func__);
18657 WDI_ASSERT( 0 );
18658 return WDI_STATUS_E_FAILURE;
18659 }
18660
18661 /*-------------------------------------------------------------------------
18662 Extract indication and send it to UMAC
18663 -------------------------------------------------------------------------*/
18664 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
18665 pEventData->pEventData,
18666 sizeof(halNoaStartIndMsg.noaStartIndParams) );
18667
18668 /*Fill in the indication parameters*/
18669 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
18670
18671 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
18672 = halNoaStartIndMsg.noaStartIndParams.status;
18673
18674 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
18675 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
18676
18677 /*Notify UMAC*/
18678 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18679
18680 return WDI_STATUS_SUCCESS;
18681}/*WDI_ProcessNoaAttrInd*/
18682
18683/**
Jeff Johnson295189b2012-06-20 16:38:30 -070018684*@brief Process Noa Attr Indication function (called when
18685 an indication of this kind is being received over the
18686 bus from HAL)
18687
18688 @param pWDICtx: pointer to the WLAN DAL context
18689 pEventData: pointer to the event information structure
18690
18691 @see
18692 @return Result of the function call
18693*/
18694WDI_Status
18695WDI_ProcessP2pNoaAttrInd
18696(
18697 WDI_ControlBlockType* pWDICtx,
18698 WDI_EventInfoType* pEventData
18699)
18700{
18701 WDI_LowLevelIndType wdiInd;
18702 tNoaAttrIndMsg halNoaAttrIndMsg;
18703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18704
18705 /*-------------------------------------------------------------------------
18706 Sanity check
18707 -------------------------------------------------------------------------*/
18708 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18709 ( NULL == pEventData->pEventData ))
18710 {
18711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018712 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018713 WDI_ASSERT( 0 );
18714 return WDI_STATUS_E_FAILURE;
18715 }
18716
18717 /*-------------------------------------------------------------------------
18718 Extract indication and send it to UMAC
18719 -------------------------------------------------------------------------*/
18720 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
18721 pEventData->pEventData,
18722 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
18723
18724 /*Fill in the indication parameters*/
18725 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070018726
Jeff Johnson295189b2012-06-20 16:38:30 -070018727 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
18728 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070018729
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
18731 = halNoaAttrIndMsg.noaAttrIndParams.index;
18732 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
18733 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
18734 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
18735 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070018736
Jeff Johnson295189b2012-06-20 16:38:30 -070018737 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
18738 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
18739 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
18740 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
18741 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
18742 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
18743 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
18744 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070018745
Jeff Johnson295189b2012-06-20 16:38:30 -070018746 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
18747 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
18748 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
18749 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
18750 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
18751 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
18752 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
18753 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
18754
18755 /*Notify UMAC*/
18756 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18757
18758 return WDI_STATUS_SUCCESS;
18759}/*WDI_ProcessNoaAttrInd*/
18760#endif
18761
18762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018763 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018764 an indication of this kind is being received over the
18765 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018766
18767 @param pWDICtx: pointer to the WLAN DAL context
18768 pEventData: pointer to the event information structure
18769
Jeff Johnson295189b2012-06-20 16:38:30 -070018770 @see
18771 @return Result of the function call
18772*/
18773WDI_Status
18774WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018775(
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 WDI_ControlBlockType* pWDICtx,
18777 WDI_EventInfoType* pEventData
18778)
18779{
18780 WDI_LowLevelIndType wdiInd;
18781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070018782
Jeff Johnson295189b2012-06-20 16:38:30 -070018783 /*-------------------------------------------------------------------------
18784 Extract indication and send it to UMAC
18785 -------------------------------------------------------------------------*/
18786 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018787 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
18788
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 /*Notify UMAC*/
18790 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18791
Jeff Johnsone7245742012-09-05 17:12:55 -070018792 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018793}/*WDI_ProcessTxPerHitInd*/
18794
18795#ifdef ANI_MANF_DIAG
18796/**
18797 @brief WDI_ProcessFTMCommandReq
18798 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018799
18800 @param pWDICtx: pointer to the WLAN DAL context
18801 pEventData: pointer to the event information structure
18802
Jeff Johnson295189b2012-06-20 16:38:30 -070018803 @see
18804 @return Result of the function call
18805*/
18806WDI_Status
18807WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018808(
Jeff Johnson295189b2012-06-20 16:38:30 -070018809 WDI_ControlBlockType* pWDICtx,
18810 WDI_EventInfoType* pEventData
18811)
18812{
18813 WDI_FTMCommandReqType *ftmCommandReq = NULL;
18814 wpt_uint8 *ftmCommandBuffer = NULL;
18815 wpt_uint16 dataOffset;
18816 wpt_uint16 bufferSize;
18817 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018818 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018819 -------------------------------------------------------------------------*/
18820 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18821 ( NULL == pEventData->pEventData))
18822
18823 {
18824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018825 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018828 }
18829
18830 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
18831
18832 /* Get MSG Buffer */
18833 WDI_GetMessageBuffer(pWDICtx,
18834 WDI_FTM_CMD_REQ,
18835 ftmCommandReq->bodyLength,
18836 &ftmCommandBuffer,
18837 &dataOffset,
18838 &bufferSize);
18839
18840 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
18841 ftmCommandReq->FTMCommandBody,
18842 ftmCommandReq->bodyLength);
18843
18844 /* Send MSG */
18845 return WDI_SendMsg(pWDICtx,
18846 ftmCommandBuffer,
18847 bufferSize,
18848 pEventData->pCBfnc,
18849 pEventData->pUserData,
18850 WDI_FTM_CMD_RESP);
18851}
18852
18853/**
18854 @brief WDI_ProcessFTMCommandRsp
18855 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070018856
18857 @param pWDICtx: pointer to the WLAN DAL context
18858 pEventData: pointer to the event information structure
18859
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 @see
18861 @return Result of the function call
18862*/
18863WDI_Status
18864WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018865(
Jeff Johnson295189b2012-06-20 16:38:30 -070018866 WDI_ControlBlockType* pWDICtx,
18867 WDI_EventInfoType* pEventData
18868)
18869{
18870 WDI_FTMCommandRspCb ftmCMDRspCb;
18871 tProcessPttRspParams *ftmCMDRspData = NULL;
18872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18873
18874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018876 -------------------------------------------------------------------------*/
18877 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18878 ( NULL == pEventData->pEventData))
18879 {
18880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018884 }
18885
18886 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
18887
18888 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
18889
Jeff Johnsone7245742012-09-05 17:12:55 -070018890 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
18891 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070018892 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
18893
18894 /*Notify UMAC*/
18895 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
18896
Jeff Johnsone7245742012-09-05 17:12:55 -070018897 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018898}
18899#endif /* ANI_MANF_DIAG */
18900/**
18901 @brief WDI_ProcessHalDumpCmdReq
18902 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018903
18904 @param pWDICtx: pointer to the WLAN DAL context
18905 pEventData: pointer to the event information structure
18906
Jeff Johnson295189b2012-06-20 16:38:30 -070018907 @see
18908 @return Result of the function call
18909*/
18910WDI_Status
18911WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018912(
Jeff Johnson295189b2012-06-20 16:38:30 -070018913 WDI_ControlBlockType* pWDICtx,
18914 WDI_EventInfoType* pEventData
18915)
18916{
18917 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
18918 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
18919 wpt_uint16 usDataOffset = 0;
18920 wpt_uint16 usSendSize = 0;
18921 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018922 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070018923
18924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018925 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018926 -------------------------------------------------------------------------*/
18927 if (( NULL == pEventData ) ||
18928 ( NULL == pEventData->pEventData) ||
18929 ( NULL == pEventData->pCBfnc ))
18930 {
18931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018932 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018935 }
18936
18937 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
18938 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
18939
18940 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018941 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018942 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070018943 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018944 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018945 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070018947 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070018949 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018950 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070018951
Jeff Johnson295189b2012-06-20 16:38:30 -070018952 /*-----------------------------------------------------------------------
18953 Get message buffer
18954 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018955 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070018956 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
18957 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070018958 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070018959 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
18960 {
18961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18962 "Unable to get send buffer in HAL Dump Command req %x %x %x",
18963 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
18964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 }
18967
Jeff Johnsone7245742012-09-05 17:12:55 -070018968 wpalMemoryCopy( pSendBuffer+usDataOffset,
18969 &halDumpCmdReqMsg.dumpCmdReqParams,
18970 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018971
18972 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070018973 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018974
18975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018976 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070018977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018978 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
18979 wdiHALDumpCmdRspCb, pEventData->pUserData,
18980 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070018981}
18982
18983/**
18984 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018985 Process hal Dump Command Response from HAL, simply route to HDD
18986
18987 @param pWDICtx: pointer to the WLAN DAL context
18988 pEventData: pointer to the event information structure
18989
Jeff Johnson295189b2012-06-20 16:38:30 -070018990 @see
18991 @return Result of the function call
18992*/
18993WDI_Status
18994WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018995(
Jeff Johnson295189b2012-06-20 16:38:30 -070018996 WDI_ControlBlockType* pWDICtx,
18997 WDI_EventInfoType* pEventData
18998)
18999{
19000 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
19001 tpHalDumpCmdRspParams halDumpCmdRspParams;
19002 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19003
19004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019006 -------------------------------------------------------------------------*/
19007 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19008 ( NULL == pEventData->pEventData))
19009 {
19010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019014 }
19015
Jeff Johnsone7245742012-09-05 17:12:55 -070019016 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019017
19018 /*Initialize the WDI Response structure */
19019 wdiHALDumpCmdRsp.usBufferLen = 0;
19020 wdiHALDumpCmdRsp.pBuffer = NULL;
19021
19022 halDumpCmdRspParams = (tHalDumpCmdRspParams *)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019023
19024 wdiHALDumpCmdRsp.wdiStatus =
19025 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams->status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019026
19027 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
19028 (halDumpCmdRspParams->rspLength != 0))
19029 {
19030 /* Copy the response data */
19031 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams->rspLength;
19032 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams->rspLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070019033 wpalMemoryCopy( &halDumpCmdRspParams->rspBuffer,
19034 wdiHALDumpCmdRsp.pBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019035 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19036 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019037
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 /*Notify UMAC*/
19039 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19040
19041 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19042 {
19043 /* Free the allocated buffer */
19044 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19045 }
19046 return WDI_STATUS_SUCCESS;
19047}
19048
19049/*==========================================================================
19050 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019051
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019053 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019054==========================================================================*/
19055/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019056 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 when it wishes to send up a notification like the ones
19058 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019059
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019061
19062 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019063 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019064 wctsNotifyCBData: the callback data of the user
19065
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019067
19068 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019069*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019070void
Jeff Johnson295189b2012-06-20 16:38:30 -070019071WDI_NotifyMsgCTSCB
19072(
Jeff Johnsone7245742012-09-05 17:12:55 -070019073 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 WCTS_NotifyEventType wctsEvent,
19075 void* wctsNotifyCBData
19076)
19077{
Jeff Johnsone7245742012-09-05 17:12:55 -070019078 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19080
19081 if (NULL == pWDICtx )
19082 {
19083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019086 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019087 }
19088
19089 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19090 {
19091 /* callback presumably occurred after close */
19092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019093 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019094 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 }
19096
19097 if ( WCTS_EVENT_OPEN == wctsEvent )
19098 {
19099 /*Flag must be set atomically as it is checked from incoming request
19100 functions*/
19101 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019102 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019103
19104 /*Nothing to do - so try to dequeue any pending request that may have
19105 occurred while we were trying to establish this*/
19106 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019107 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019108 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019109 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019110 {
19111 /*Flag must be set atomically as it is checked from incoming request
19112 functions*/
19113 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019114 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019115
19116 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019117 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019118 wpalMutexRelease(&pWDICtx->wptMutex);
19119
19120 /*Notify that the Control Channel is closed */
19121 wpalEventSet(&pWDICtx->wctsActionEvent);
19122 }
19123
19124}/*WDI_NotifyMsgCTSCB*/
19125
19126
19127/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019128 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019129 when it wishes to send up a packet received over the
19130 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019131
Jeff Johnson295189b2012-06-20 16:38:30 -070019132 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019133
19134 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019135 pMsg: the packet
19136 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019137 wctsRxMsgCBData: the callback data of the user
19138
Jeff Johnson295189b2012-06-20 16:38:30 -070019139 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019140
19141 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019142*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019143void
19144WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019145(
Jeff Johnsone7245742012-09-05 17:12:55 -070019146 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019147 void* pMsg,
19148 wpt_uint32 uLen,
19149 void* wctsRxMsgCBData
19150)
19151{
Jeff Johnsone7245742012-09-05 17:12:55 -070019152 tHalMsgHeader *pHalMsgHeader;
19153 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019154 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19156
19157 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019159 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019160 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019161 ( uLen < sizeof(tHalMsgHeader)))
19162 {
19163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019166 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019167 }
19168
19169 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19170 {
19171 /* callback presumably occurred after close */
19172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019173 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019174 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019175 }
19176
Jeff Johnsone7245742012-09-05 17:12:55 -070019177 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019178 context - so no serialization is necessary here
19179 ! - revisit this assumption */
19180
19181 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19182
19183 if ( uLen != pHalMsgHeader->msgLen )
19184 {
19185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19186 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019187 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19188 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 }
19190
19191 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19192
19193 /*The message itself starts after the header*/
19194 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19195 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19196 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19197 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19198
19199
19200 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19201 {
19202 /*Stop the timer as the response was received */
19203 /*!UT - check for potential race conditions between stop and response */
19204 wpalTimerStop(&pWDICtx->wptResponseTimer);
19205 }
19206 /* Check if we receive a response message which is not expected */
19207 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19208 {
19209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19210 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19211 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019212 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19214 pWDICtx->wdiExpectedResponse);
19215 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19216 return;
19217 }
19218
19219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19220 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19221
19222 /*Post response event to the state machine*/
19223 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19224
19225}/*WDI_RXMsgCTSCB*/
19226
19227
19228/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019229 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019230========================================================================*/
19231
19232/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019233 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019234 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019235
Jeff Johnson295189b2012-06-20 16:38:30 -070019236 @param pWDICtx - pointer to the control block
19237
19238 @return Result of the function call
19239*/
19240WPT_INLINE WDI_Status
19241WDI_CleanCB
19242(
19243 WDI_ControlBlockType* pWDICtx
19244)
19245{
19246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19247
19248 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019249 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019250
Jeff Johnsone7245742012-09-05 17:12:55 -070019251 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019252 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19253 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19254
19255 WDI_ResetAssocSessions( pWDICtx );
19256
19257 return WDI_STATUS_SUCCESS;
19258}/*WDI_CleanCB*/
19259
19260
19261/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019262 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019263
Jeff Johnsone7245742012-09-05 17:12:55 -070019264
19265 @param pWDICtx: pointer to the WLAN DAL context
19266 pEventData: pointer to the event information structure
19267
Jeff Johnson295189b2012-06-20 16:38:30 -070019268 @see
19269 @return Result of the function call
19270*/
19271WPT_INLINE WDI_Status
19272WDI_ProcessRequest
19273(
19274 WDI_ControlBlockType* pWDICtx,
19275 WDI_EventInfoType* pEventData
19276)
19277{
19278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19279
Jeff Johnsone7245742012-09-05 17:12:55 -070019280 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019281 already checked these pointers*/
19282
19283 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19284 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019285 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19287 "Calling request processing function for req %s (%d) %x",
19288 WDI_getReqMsgString(pEventData->wdiRequest),
19289 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19290 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19291 }
19292 else
19293 {
19294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019295 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 pEventData->wdiRequest);
19297 return WDI_STATUS_E_NOT_IMPLEMENT;
19298 }
19299}/*WDI_ProcessRequest*/
19300
19301
19302/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019303 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019304 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019305 prefixes it with a send message header
19306
19307 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019308 wdiReqType: type of the request being sent
19309 uBufferLen: message buffer len
19310 pMsgBuffer: resulting allocated buffer
19311 pusDataOffset: offset in the buffer where the caller
19312 can start copying its message data
19313 puBufferSize: the resulting buffer size (offset+buff
19314 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019315
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 @see
19317 @return Result of the function call
19318*/
19319WDI_Status
19320WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019321(
19322 WDI_ControlBlockType* pWDICtx,
19323 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019324 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019325 wpt_uint8** pMsgBuffer,
19326 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019327 wpt_uint16* pusBufferSize
19328)
19329{
19330 tHalMsgHeader halMsgHeader;
19331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19332
Jeff Johnsone7245742012-09-05 17:12:55 -070019333 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019334 again*/
19335
19336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019337 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019339 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019340 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19341 if ( NULL == *pMsgBuffer )
19342 {
19343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19344 "Unable to allocate message buffer for req %s (%d)",
19345 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019346 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019348 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019349 }
19350
19351 /*-------------------------------------------------------------------------
19352 Fill in the message header
19353 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019354 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19355 /* Fill msgVersion */
19356#ifdef WLAN_FEATURE_11AC
19357 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019358 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019359 else
19360#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019361 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019362
Jeff Johnsone7245742012-09-05 17:12:55 -070019363 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19364 *pusDataOffset = sizeof(halMsgHeader);
19365 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19366
19367 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019368}/*WDI_GetMessageBuffer*/
19369
19370
19371/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019372 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019373 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019374 the CB
19375
19376 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019377 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019378
Jeff Johnson295189b2012-06-20 16:38:30 -070019379 usSendSize size of the buffer to be sent
19380 pRspCb: response callback - save in the WDI
19381 CB
19382 pUserData: user data associated with the
19383 callback
19384 wdiExpectedResponse: the code of the response that is
19385 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019386
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 @see
19388 @return Result of the function call
19389*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019390WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019391WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019392(
19393 WDI_ControlBlockType* pWDICtx,
19394 wpt_uint8* pSendBuffer,
19395 wpt_uint32 usSendSize,
19396 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019397 void* pUserData,
19398 WDI_ResponseEnumType wdiExpectedResponse
19399)
19400{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019401 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19403
19404 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019405 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019406 ------------------------------------------------------------------------*/
19407 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019408 pWDICtx->pfncRspCB = pRspCb;
19409 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019410
19411 /*-----------------------------------------------------------------------
19412 Call the CTS to send this message over - free message afterwards
19413 - notify transport failure
19414 Note: CTS is reponsible for freeing the message buffer.
19415 -----------------------------------------------------------------------*/
19416 if ( 0 != WCTS_SendMessage( pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize ))
19417 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019419 "Failed to send message over the bus - catastrophic failure");
19420
Jeff Johnsond13512a2012-07-17 11:42:19 -070019421 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019422 }
19423
Jeff Johnsond13512a2012-07-17 11:42:19 -070019424 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019425 if ( NULL != pWDICtx->wdiReqStatusCB )
19426 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019427 /*Inform originator whether request went through or not*/
19428 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
19429 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019430 pWDICtx->wdiReqStatusCB = NULL;
19431 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070019432 callback(wdiStatus, callbackContext);
19433
19434 /*For WDI requests which have registered a request callback,
19435 inform the WDA caller of the same via setting the return value
19436 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
19437 end up repeating the functonality in the req callback for the
19438 WDI_STATUS_E_FAILURE case*/
19439 if (wdiStatus == WDI_STATUS_E_FAILURE)
19440 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 }
19442
Jeff Johnsond13512a2012-07-17 11:42:19 -070019443 if ( wdiStatus == WDI_STATUS_SUCCESS )
19444 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019445 /*Start timer for the expected response */
19446 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Jeff Johnsond13512a2012-07-17 11:42:19 -070019447 }
19448 else
19449 {
Jeff Johnson1920a722012-12-10 14:28:09 -080019450 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070019451 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19452 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019453
Jeff Johnsond13512a2012-07-17 11:42:19 -070019454 return wdiStatus;
19455
Jeff Johnson295189b2012-06-20 16:38:30 -070019456}/*WDI_SendMsg*/
19457
19458
19459
19460/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019461 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019462 the bus using the control transport and saves some info
19463 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070019464
19465 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019466 pSendBuffer: buffer to be sent
19467 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019468
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 @see
19470 @return Result of the function call
19471*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019472WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019473WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070019474(
19475 WDI_ControlBlockType* pWDICtx,
19476 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019477 wpt_uint32 usSendSize
19478)
19479{
19480 wpt_uint32 uStatus ;
19481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19482
19483 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019484 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019485 Note: CTS is reponsible for freeing the message buffer.
19486 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019487 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 (void*)pSendBuffer, usSendSize );
19489
19490 /*Inform Upper MAC about the outcome of the request*/
19491 if ( NULL != pWDICtx->wdiReqStatusCB )
19492 {
19493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19494 "Send indication status : %d", uStatus);
19495
19496 pWDICtx->wdiReqStatusCB( (uStatus != 0 ) ? WDI_STATUS_E_FAILURE:
Jeff Johnsone7245742012-09-05 17:12:55 -070019497 WDI_STATUS_SUCCESS,
19498 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 }
19500
19501 /*If sending of the message failed - it is considered catastrophic and
19502 indicates an error with the device*/
19503 if ( 0 != uStatus)
19504 {
19505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070019506 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070019507
19508 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19509 return WDI_STATUS_E_FAILURE;
19510 }
19511
Jeff Johnsone7245742012-09-05 17:12:55 -070019512 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019513}/*WDI_SendIndication*/
19514
19515
19516/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019517 @brief WDI_DetectedDeviceError - called internally by DAL when
19518 it has detected a failure in the device
19519
19520 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019521 usErrorCode: error code detected by WDI or received
19522 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019523
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070019525 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019526*/
19527void
19528WDI_DetectedDeviceError
19529(
19530 WDI_ControlBlockType* pWDICtx,
19531 wpt_uint16 usErrorCode
19532)
19533{
19534 WDI_LowLevelIndType wdiInd;
19535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19536
19537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19538 "Device Error detected code: %d - transitioning to stopped state",
19539 usErrorCode);
19540
19541 wpalMutexAcquire(&pWDICtx->wptMutex);
19542
19543 WDI_STATableStop(pWDICtx);
19544
19545 WDI_ResetAssocSessions(pWDICtx);
19546
19547 /*Set the expected state transition to stopped - because the device
19548 experienced a failure*/
19549 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
19550
19551 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019552 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070019553
Jeff Johnsone7245742012-09-05 17:12:55 -070019554 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019555
19556 /*TO DO: - there should be an attempt to reset the device here*/
19557
19558 wpalMutexRelease(&pWDICtx->wptMutex);
19559
19560 /*------------------------------------------------------------------------
19561 Notify UMAC if a handler is registered
19562 ------------------------------------------------------------------------*/
19563 if (pWDICtx->wdiLowLevelIndCB)
19564 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019565 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19566 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019567
19568 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
19569 }
19570}/*WDI_DetectedDeviceError*/
19571
19572/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019573 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 we started on send message has expire - this should
19575 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070019576 reply - trigger catastrophic failure
19577 @param
19578
Jeff Johnson295189b2012-06-20 16:38:30 -070019579 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070019580
19581 @see
19582 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019583*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019584void
Jeff Johnson295189b2012-06-20 16:38:30 -070019585WDI_ResponseTimerCB
19586(
19587 void *pUserData
19588)
19589{
19590 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
19591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19592
19593 if (NULL == pWDICtx )
19594 {
19595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019598 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019599 }
19600
19601 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
19602 {
19603
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053019604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019605 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsone7245742012-09-05 17:12:55 -070019606 " - catastrophic failure",
Jeff Johnson295189b2012-06-20 16:38:30 -070019607 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19608 pWDICtx->wdiExpectedResponse);
19609 /* WDI timeout means Riva is not responding or SMD communication to Riva
19610 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019611 * is to initiate SSR from APPS
19612 * There is also an option to re-enable wifi, which will eventually
19613 * trigger SSR
19614 */
19615#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070019616 wpalWcnssResetIntr();
19617 /* if this timer fires, it means Riva did not receive the FIQ */
19618 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019619#else
19620 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19621 wpalWlanReload();
19622#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 }
19624 else
19625 {
19626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19627 "Timeout occurred but not waiting for any response %d",
19628 pWDICtx->wdiExpectedResponse);
19629 }
19630
19631 return;
19632
19633}/*WDI_ResponseTimerCB*/
19634
19635
19636/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019637 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019638
Jeff Johnsone7245742012-09-05 17:12:55 -070019639
19640 @param pWDICtx: pointer to the WLAN DAL context
19641 pEventData: pointer to the event information structure
19642
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 @see
19644 @return Result of the function call
19645*/
19646WPT_INLINE WDI_Status
19647WDI_ProcessResponse
19648(
19649 WDI_ControlBlockType* pWDICtx,
19650 WDI_EventInfoType* pEventData
19651)
19652{
19653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19654
Jeff Johnsone7245742012-09-05 17:12:55 -070019655 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070019656 already checked these pointers
19657 ! - revisit this assumption */
19658 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
19659 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019660 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070019662 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 WDI_getRespMsgString(pEventData->wdiResponse),
19664 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
19665 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
19666 }
19667 else
19668 {
19669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019670 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019671 pEventData->wdiResponse);
19672 return WDI_STATUS_E_NOT_IMPLEMENT;
19673 }
19674}/*WDI_ProcessResponse*/
19675
19676
19677/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019678 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070019679=========================================================================*/
19680
19681/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019682 @brief Utility function used by the DAL Core to help queue a
19683 request that cannot be processed right away.
19684 @param
19685
Jeff Johnson295189b2012-06-20 16:38:30 -070019686 pWDICtx: - pointer to the WDI control block
19687 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019688 queued
19689
19690 @see
19691 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019692*/
19693WDI_Status
19694WDI_QueuePendingReq
19695(
19696 WDI_ControlBlockType* pWDICtx,
19697 WDI_EventInfoType* pEventData
19698)
19699{
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19704
19705 if ( NULL == pEventDataQueue )
19706 {
19707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019708 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 WDI_ASSERT(0);
19710 return WDI_STATUS_MEM_FAILURE;
19711 }
19712
19713 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19714 pEventDataQueue->pUserData = pEventData->pUserData;
19715 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19716 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019717 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019718
19719 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
19720 {
19721 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019722
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 if ( NULL == pEventInfo )
19724 {
19725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019726 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070019727 WDI_ASSERT(0);
19728 wpalMemoryFree(pEventDataQueue);
19729 return WDI_STATUS_MEM_FAILURE;
19730 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019731
Jeff Johnson295189b2012-06-20 16:38:30 -070019732 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19733
19734 }
19735 pEventDataQueue->pEventData = pEventInfo;
19736
19737 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019738 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019739
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019741
19742 return WDI_STATUS_SUCCESS;
19743}/*WDI_QueuePendingReq*/
19744
19745/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019746 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070019747 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070019748 @param
19749
19750 pMsg - pointer to the message
19751
19752 @see
19753 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019754*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019755void
Jeff Johnson295189b2012-06-20 16:38:30 -070019756WDI_PALCtrlMsgCB
19757(
19758 wpt_msg *pMsg
19759)
19760{
19761 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019762 WDI_ControlBlockType* pWDICtx = NULL;
19763 WDI_Status wdiStatus;
19764 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 void* pUserData;
19766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19767
19768 if (( NULL == pMsg )||
19769 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
19770 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
19771 {
19772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019773 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070019774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019775 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019776 }
19777
19778 /*Transition back to the state that we had before serialization
19779 - serialization transitions us to BUSY to stop any incomming requests
19780 ! TO DO L: possible race condition here if a request comes in between the
19781 state transition and the post function*/
19782
Jeff Johnsone7245742012-09-05 17:12:55 -070019783 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070019784
19785 /*-----------------------------------------------------------------------
19786 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070019787 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070019788 -----------------------------------------------------------------------*/
19789 switch ( pEventData->wdiRequest )
19790 {
19791
Jeff Johnsone7245742012-09-05 17:12:55 -070019792 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070019793 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
19794 break;
19795
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 case WDI_NV_DOWNLOAD_REQ:
19797 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
19798 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
19799 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
19800 {
19801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019802 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019803 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19804 }
19805 else
19806 {
19807 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
19808 }
19809
19810 break;
19811
19812 default:
19813 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19814 break;
19815 }/*switch ( pEventData->wdiRequest )*/
19816
19817 if ( WDI_STATUS_SUCCESS != wdiStatus )
19818 {
19819 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
19820
19821 if ( NULL != pfnReqStatusCB )
19822 {
19823 /*Fail the request*/
19824 pfnReqStatusCB( wdiStatus, pUserData);
19825 }
19826 }
19827
19828 /* Free data - that was allocated when queueing*/
19829 if( pEventData != NULL )
19830 {
19831 if( pEventData->pEventData != NULL )
19832 {
19833 wpalMemoryFree(pEventData->pEventData);
19834 }
19835 wpalMemoryFree(pEventData);
19836 }
19837
19838 if( pMsg != NULL )
19839 {
19840 wpalMemoryFree(pMsg);
19841 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019842
Jeff Johnson295189b2012-06-20 16:38:30 -070019843}/*WDI_PALCtrlMsgCB*/
19844
19845/**
19846 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 and schedule for execution a pending request
19848 @param
19849
Jeff Johnson295189b2012-06-20 16:38:30 -070019850 pWDICtx: - pointer to the WDI control block
19851 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019852 queued
19853
19854 @see
19855 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019856*/
19857WDI_Status
19858WDI_DequeuePendingReq
19859(
19860 WDI_ControlBlockType* pWDICtx
19861)
19862{
Jeff Johnsone7245742012-09-05 17:12:55 -070019863 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019864 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019865 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070019866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19867
Jeff Johnsone7245742012-09-05 17:12:55 -070019868 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019869
19870 if ( NULL == pNode )
19871 {
19872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070019873 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070019874 return WDI_STATUS_SUCCESS;
19875 }
19876
19877 /*The node actually points to the 1st element inside the Event Data struct -
19878 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019879 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019880
19881 /*Serialize processing in the control thread
19882 !TO DO: - check to see if these are all the messages params that need
19883 to be filled in*/
19884 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
19885
19886 if ( NULL == palMsg )
19887 {
19888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019889 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070019890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019891 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019892 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019893 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019894 palMsg->callback = WDI_PALCtrlMsgCB;
19895 palMsg->ptr = pEventData;
19896
19897 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019898 palMsg->val = pWDICtx->uGlobalState;
19899
Jeff Johnson295189b2012-06-20 16:38:30 -070019900 /*Transition back to BUSY as we need to handle a queued request*/
19901 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070019902
Jeff Johnson295189b2012-06-20 16:38:30 -070019903 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
19904
19905 return WDI_STATUS_PENDING;
19906}/*WDI_DequeuePendingReq*/
19907
19908
19909/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019910 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019911 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070019912 away.- The assoc requests will be queued by BSSID
19913 @param
19914
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 pWDICtx: - pointer to the WDI control block
19916 pEventData: pointer to the evnt info that needs to be queued
19917 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070019918
19919 @see
19920 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019921*/
19922WDI_Status
19923WDI_QueueNewAssocRequest
19924(
19925 WDI_ControlBlockType* pWDICtx,
19926 WDI_EventInfoType* pEventData,
19927 wpt_macAddr macBSSID
19928)
19929{
Jeff Johnsone7245742012-09-05 17:12:55 -070019930 wpt_uint8 i;
19931 WDI_BSSSessionType* pSession = NULL;
19932 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019933 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070019934 void* pEventInfo;
19935 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070019937
Jeff Johnsone7245742012-09-05 17:12:55 -070019938
19939 /*------------------------------------------------------------------------
19940 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 ------------------------------------------------------------------------*/
19942 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
19943 {
19944 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
19945 {
19946 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019947 pSession = &pWDICtx->aBSSSessions[i];
19948 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070019949 }
19950 }
19951
19952 if ( i >= WDI_MAX_BSS_SESSIONS )
19953 {
19954 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019956 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019957
Jeff Johnson295189b2012-06-20 16:38:30 -070019958 /*------------------------------------------------------------------------
19959 Fill in the BSSID for this session and set the usage flag
19960 ------------------------------------------------------------------------*/
19961 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019962 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019963
19964 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019965 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019966 ------------------------------------------------------------------------*/
19967 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
19968 if ( NULL == pEventDataQueue )
19969 {
19970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019971 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019972 WDI_ASSERT(0);
19973 return WDI_STATUS_MEM_FAILURE;
19974 }
19975
19976 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
19977 if ( NULL == pSessionIdElement )
19978 {
19979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019980 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 WDI_ASSERT(0);
19982 wpalMemoryFree(pEventDataQueue);
19983 return WDI_STATUS_MEM_FAILURE;
19984 }
19985
19986 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
19987 if ( NULL == pEventInfo )
19988 {
19989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019990 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019991 WDI_ASSERT(0);
19992 wpalMemoryFree(pSessionIdElement);
19993 wpalMemoryFree(pEventDataQueue);
19994 return WDI_STATUS_MEM_FAILURE;
19995 }
19996
19997 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19998 pEventDataQueue->pUserData = pEventData->pUserData;
19999 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20000 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020001 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020002
20003 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20004 pEventDataQueue->pEventData = pEventInfo;
20005
20006 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020007 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020008
20009 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020010 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020011
Jeff Johnsone7245742012-09-05 17:12:55 -070020012 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020013
20014 /*We need to maintain a separate list that keeps track of the order in which
20015 the new assoc requests are being queued such that we can start processing
20016 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020017 pSessionIdElement->ucIndex = i;
20018 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020019
20020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20021 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020022 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020023
20024 /*Return pending as this is what the status of the request is since it has
20025 been queued*/
20026 return WDI_STATUS_PENDING;
20027}/*WDI_QueueNewAssocRequest*/
20028
20029/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020030 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020031 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020032 away.- The assoc requests will be queued by BSSID
20033 @param
20034
Jeff Johnson295189b2012-06-20 16:38:30 -070020035 pWDICtx: - pointer to the WDI control block
20036 pSession: - session in which to queue
20037 pEventData: pointer to the event info that needs to be
20038 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020039
20040 @see
20041 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020042*/
20043WDI_Status
20044WDI_QueueAssocRequest
20045(
20046 WDI_ControlBlockType* pWDICtx,
20047 WDI_BSSSessionType* pSession,
20048 WDI_EventInfoType* pEventData
20049)
20050{
Jeff Johnsone7245742012-09-05 17:12:55 -070020051 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020052 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020055
20056 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020057 Sanity check
20058 ------------------------------------------------------------------------*/
20059 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20060 {
20061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020062 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020063
Jeff Johnsone7245742012-09-05 17:12:55 -070020064 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020065 }
20066
20067 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020068 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020069 ------------------------------------------------------------------------*/
20070 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20071 if ( NULL == pEventDataQueue )
20072 {
20073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020074 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 WDI_ASSERT(0);
20076 return WDI_STATUS_MEM_FAILURE;
20077 }
20078
20079 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20080 if ( NULL == pEventInfo )
20081 {
20082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20083 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020084 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020085 WDI_ASSERT(0);
20086 wpalMemoryFree(pEventDataQueue);
20087 return WDI_STATUS_MEM_FAILURE;
20088 }
20089
20090 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20091 pEventDataQueue->pUserData = pEventData->pUserData;
20092 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20093 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020094 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 pEventDataQueue->pEventData = pEventInfo;
20096
20097 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20098
20099 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020100 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020101
20102 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020103 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020104
Jeff Johnsone7245742012-09-05 17:12:55 -070020105 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020106
20107 /*The result of this operation is pending because the request has been
20108 queued and it will be processed at a later moment in time */
20109 return WDI_STATUS_PENDING;
20110}/*WDI_QueueAssocRequest*/
20111
20112/**
20113 @brief Utility function used by the DAL Core to help dequeue
20114 an association request that was pending
20115 The request will be queued up in front of the main
20116 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020117 @param
20118
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020120
20121
20122 @see
20123 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020124*/
20125WDI_Status
20126WDI_DequeueAssocRequest
20127(
20128 WDI_ControlBlockType* pWDICtx
20129)
20130{
Jeff Johnsone7245742012-09-05 17:12:55 -070020131 wpt_list_node* pNode = NULL;
20132 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 WDI_BSSSessionType* pSession;
20134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020135
20136 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020137 Sanity check
20138 ------------------------------------------------------------------------*/
20139 if ( NULL == pWDICtx )
20140 {
20141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020142 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020143
Jeff Johnsone7245742012-09-05 17:12:55 -070020144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 }
20146
20147 /*------------------------------------------------------------------------
20148 An association has been completed => a new association can occur
20149 Check to see if there are any pending associations ->
20150 If so , transfer all the pending requests into the busy queue for
20151 processing
20152 These requests have arrived prior to the requests in the busy queue
20153 (bc they needed to be processed in order to be placed in this queue)
20154 => they will be placed at the front of the busy queue
20155 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020156 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020157
20158 if ( NULL == pNode )
20159 {
20160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 return WDI_STATUS_SUCCESS;
20163 }
20164
20165 /*The node actually points to the 1st element inside the Session Id struct -
20166 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020167 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020168
20169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20170 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20171
20172 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20173 {
20174 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020175
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020177 the front of the main waiting queue for subsequent execution*/
20178 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020179 while ( NULL != pNode )
20180 {
20181 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20183 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020185 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020186 }
20187 else
20188 {
20189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020190 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 WPAL_ASSERT(0);
20192 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020194 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020195
Jeff Johnson295189b2012-06-20 16:38:30 -070020196 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20197 wpalMemoryFree(pSessionIdElement);
20198 return WDI_STATUS_SUCCESS;
20199}/*WDI_DequeueAssocRequest*/
20200
20201/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020202 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020203 pending requests - all req cb will be called with
20204 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020205 @param
20206
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020208
20209 @see
20210 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020211*/
20212WDI_Status
20213WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020214(
Jeff Johnson295189b2012-06-20 16:38:30 -070020215 WDI_ControlBlockType* pWDICtx
20216)
20217{
Jeff Johnsone7245742012-09-05 17:12:55 -070020218 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020219 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020220 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 void* pUserData;
20222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20223
Jeff Johnsone7245742012-09-05 17:12:55 -070020224 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020225
20226 /*------------------------------------------------------------------------
20227 Go through all the requests and fail them - this will only be called
20228 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020229 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020230 ------------------------------------------------------------------------*/
20231 while( pNode )
20232 {
20233 /*The node actually points to the 1st element inside the Event Data struct -
20234 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020235 pEventDataQueue = (WDI_EventInfoType*)pNode;
20236
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20238 if ( NULL != pfnReqStatusCB )
20239 {
20240 /*Fail the request*/
20241 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20242 }
20243 /* Free data - that was allocated when queueing */
20244 if ( pEventDataQueue->pEventData != NULL )
20245 {
20246 wpalMemoryFree(pEventDataQueue->pEventData);
20247 }
20248 wpalMemoryFree(pEventDataQueue);
20249
20250 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20251 {
20252 break;
20253 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020254 }
20255
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 return WDI_STATUS_SUCCESS;
20257}/*WDI_ClearPendingRequests*/
20258
20259/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020260 @brief Helper routine used to init the BSS Sessions in the WDI control block
20261
20262
20263 @param pWDICtx: pointer to the WLAN DAL context
20264
Jeff Johnson295189b2012-06-20 16:38:30 -070020265 @see
20266*/
20267void
20268WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020269(
Jeff Johnson295189b2012-06-20 16:38:30 -070020270 WDI_ControlBlockType* pWDICtx
20271)
20272{
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20275
20276 /*-------------------------------------------------------------------------
20277 No Sanity check
20278 -------------------------------------------------------------------------*/
20279 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20280 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020281 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020282 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20283 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20284 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20285 }
20286}/*WDI_ResetAssocSessions*/
20287
20288/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020289 @brief Helper routine used to find a session based on the BSSID
20290
20291
20292 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 pSession: pointer to the session (if found)
20295
Jeff Johnson295189b2012-06-20 16:38:30 -070020296 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020297 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020298*/
20299wpt_uint8
20300WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020301(
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 WDI_ControlBlockType* pWDICtx,
20303 wpt_macAddr macBSSID,
20304 WDI_BSSSessionType** ppSession
20305)
20306{
Jeff Johnsone7245742012-09-05 17:12:55 -070020307 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20309
20310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020312 -------------------------------------------------------------------------*/
20313 if ( NULL == ppSession )
20314 {
20315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020316 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020317 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020318 }
20319
Jeff Johnsone7245742012-09-05 17:12:55 -070020320 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020321
Jeff Johnsone7245742012-09-05 17:12:55 -070020322 /*------------------------------------------------------------------------
20323 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020324 ------------------------------------------------------------------------*/
20325 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20326 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020327 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20328 (eWLAN_PAL_TRUE ==
20329 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20330 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020331 {
20332 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020333 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020334 return i;
20335 }
20336 }
20337
Jeff Johnsone7245742012-09-05 17:12:55 -070020338 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020339}/*WDI_FindAssocSession*/
20340
20341/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020342 @brief Helper routine used to find a session based on the BSSID
20343
20344
20345 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020346 ucBSSIdx: BSS Index of the session
20347 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020348
Jeff Johnson295189b2012-06-20 16:38:30 -070020349 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020350 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020351*/
20352wpt_uint8
20353WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020354(
Jeff Johnson295189b2012-06-20 16:38:30 -070020355 WDI_ControlBlockType* pWDICtx,
20356 wpt_uint16 ucBSSIdx,
20357 WDI_BSSSessionType** ppSession
20358)
20359{
Jeff Johnsone7245742012-09-05 17:12:55 -070020360 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20362
20363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020365 -------------------------------------------------------------------------*/
20366 if ( NULL == ppSession )
20367 {
20368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020369 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020370 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020371 }
20372
Jeff Johnsone7245742012-09-05 17:12:55 -070020373 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020374
Jeff Johnsone7245742012-09-05 17:12:55 -070020375 /*------------------------------------------------------------------------
20376 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 ------------------------------------------------------------------------*/
20378 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20379 {
20380 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
20381 {
20382 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020383 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020384 return i;
20385 }
20386 }
20387
Jeff Johnsone7245742012-09-05 17:12:55 -070020388 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020389}/*WDI_FindAssocSessionByBSSIdx*/
20390
20391/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020392 @brief Helper routine used to find a session based on the BSSID
20393
20394
20395 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020396 ucBSSIdx: BSS Index of the session
20397 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020398
Jeff Johnson295189b2012-06-20 16:38:30 -070020399 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020400 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020401*/
20402wpt_uint8
20403WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020404(
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 WDI_ControlBlockType* pWDICtx,
20406 wpt_uint16 usIdx,
20407 WDI_BSSSessionType** ppSession
20408)
20409{
20410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20411
20412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020413 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020414 -------------------------------------------------------------------------*/
20415 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
20416 {
20417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020418 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020419 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020420 }
20421
20422 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020423 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070020424
20425 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020426
Jeff Johnson295189b2012-06-20 16:38:30 -070020427}/*WDI_FindAssocSessionByBSSIdx*/
20428
20429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020430 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020432
20433
20434 @param pWDICtx: pointer to the WLAN DAL context
20435 pSession: pointer to the session (if found)
20436
Jeff Johnson295189b2012-06-20 16:38:30 -070020437 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020438 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020439*/
20440wpt_uint8
20441WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070020442(
Jeff Johnson295189b2012-06-20 16:38:30 -070020443 WDI_ControlBlockType* pWDICtx,
20444 WDI_BSSSessionType** ppSession
20445)
20446{
Jeff Johnsone7245742012-09-05 17:12:55 -070020447 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020450 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020451 -------------------------------------------------------------------------*/
20452 if ( NULL == ppSession )
20453 {
20454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020455 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020456 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020457 }
20458
Jeff Johnsone7245742012-09-05 17:12:55 -070020459 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020460
Jeff Johnsone7245742012-09-05 17:12:55 -070020461 /*------------------------------------------------------------------------
20462 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070020463 ------------------------------------------------------------------------*/
20464 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20465 {
20466 if ( ! pWDICtx->aBSSSessions[i].bInUse )
20467 {
20468 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020469 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020470 return i;
20471 }
20472 }
20473
Jeff Johnsone7245742012-09-05 17:12:55 -070020474 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020475}/*WDI_FindEmptySession*/
20476
20477
20478/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020479 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070020480 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020481
20482
20483 @param pWDICtx: pointer to the WLAN DAL context
20484
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 @see
20486 @return Number of sessions in use
20487*/
20488wpt_uint8
20489WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070020490(
Jeff Johnson295189b2012-06-20 16:38:30 -070020491 WDI_ControlBlockType* pWDICtx
20492)
20493{
Jeff Johnsone7245742012-09-05 17:12:55 -070020494 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020496
20497 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020498 Count all sessions in use
20499 ------------------------------------------------------------------------*/
20500 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20501 {
20502 if ( pWDICtx->aBSSSessions[i].bInUse )
20503 {
20504 ucCount++;
20505 }
20506 }
20507
Jeff Johnsone7245742012-09-05 17:12:55 -070020508 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070020509}/*WDI_GetActiveSessionsCount*/
20510
20511/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020512 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020513 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020514
20515
20516 @param pWDICtx: pointer to the WLAN DAL context
20517 pSession: pointer to the session (if found)
20518
Jeff Johnson295189b2012-06-20 16:38:30 -070020519 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020520 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020521*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020522void
Jeff Johnson295189b2012-06-20 16:38:30 -070020523WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020524(
Jeff Johnson295189b2012-06-20 16:38:30 -070020525 WDI_ControlBlockType* pWDICtx,
20526 WDI_BSSSessionType* ppSession
20527)
20528{
20529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020530 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 -------------------------------------------------------------------------*/
20532 if ( NULL == ppSession )
20533 {
20534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020535 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020536 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 }
20538
Jeff Johnsone7245742012-09-05 17:12:55 -070020539 /*------------------------------------------------------------------------
20540 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 ------------------------------------------------------------------------*/
20542 wpal_list_destroy(&ppSession->wptPendingQueue);
20543 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070020544 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
20545 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
20547 wpal_list_init(&ppSession->wptPendingQueue);
20548
20549}/*WDI_DeleteSession*/
20550
20551/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020552 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070020553 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070020554 @param
20555
Jeff Johnson295189b2012-06-20 16:38:30 -070020556 WDI_AddStaParams: - pointer to the WDI Add STA params
20557 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020558
20559 @see
20560 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070020561*/
20562void
20563WDI_AddBcastSTAtoSTATable
20564(
20565 WDI_ControlBlockType* pWDICtx,
20566 WDI_AddStaParams * staParams,
20567 wpt_uint16 usBcastStaIdx
20568)
20569{
20570 WDI_AddStaParams wdiAddSTAParam = {0};
20571 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
20572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20573
20574 /*---------------------------------------------------------------------
20575 Sanity check
20576 ---------------------------------------------------------------------*/
20577 if ( NULL == staParams )
20578 {
20579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020581
Jeff Johnsone7245742012-09-05 17:12:55 -070020582 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020583 }
20584
20585 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
20586 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
20587 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
20588 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
20589 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
20590 wdiAddSTAParam.dpuSig = staParams->dpuSig;
20591 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
20592 WDI_MAC_ADDR_LEN );
20593 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
20594 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
20595 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
20596 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
20597 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
20598 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
20599 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020600
Jeff Johnson295189b2012-06-20 16:38:30 -070020601 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
20602}
20603
20604/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020605 @brief NV blob will be divided into fragments of size 4kb and
20606 Sent to HAL
20607
20608 @param pWDICtx: pointer to the WLAN DAL context
20609 pEventData: pointer to the event information structure
20610
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 @see
20612 @return Result of the function call
20613 */
20614
20615WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020616(
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 WDI_ControlBlockType* pWDICtx,
20618 WDI_EventInfoType* pEventData
20619)
20620{
20621
20622 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
20623 wpt_uint8* pSendBuffer = NULL;
20624 wpt_uint16 usDataOffset = 0;
20625 wpt_uint16 usSendSize = 0;
20626 wpt_uint16 usCurrentFragmentSize =0;
20627 wpt_uint8* pSrcBuffer = NULL;
20628 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
20629 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20630
20631 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
20632 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
20633 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
20634
Jeff Johnsone7245742012-09-05 17:12:55 -070020635 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070020636 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
20637
20638 /* Update the current Fragment Number */
20639 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
20640
20641 /*Update the HAL REQ structure */
20642 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
20643 halNvImgDownloadParam.nvImageReqParams.fragNumber =
20644 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
20645
20646 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070020647 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 image will be sent to HAL*/
20649
Jeff Johnsone7245742012-09-05 17:12:55 -070020650 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070020651 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070020652 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070020654 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070020655 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
20656 usCurrentFragmentSize = FRAGMENT_SIZE;
20657
20658 /*Update the HAL REQ structure */
20659 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
20660 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
20661
20662 }
20663 else
Jeff Johnsone7245742012-09-05 17:12:55 -070020664 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020665 usCurrentFragmentSize = FRAGMENT_SIZE;
20666
20667 /*Update the HAL REQ structure */
20668 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
20669 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
20670 }
20671
20672 /*-----------------------------------------------------------------------
20673 Get message buffer
20674 -----------------------------------------------------------------------*/
20675 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
20676 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
20677 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020678 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020679 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
20680 {
20681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20682 "Unable to get send buffer in NV Download req %x %x ",
20683 pEventData, pwdiNvDownloadReqParams);
20684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 }
20687
20688 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
20691
20692 /* Appending the NV image fragment */
20693 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
20694 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
20695 usCurrentFragmentSize);
20696
20697 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020699
Jeff Johnsone7245742012-09-05 17:12:55 -070020700 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20701 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020702 WDI_NV_DOWNLOAD_RESP);
20703
20704}
Jeff Johnsone7245742012-09-05 17:12:55 -070020705/*============================================================================
20706 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070020707 ============================================================================*/
20708/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020709 @brief Helper routine used to find a session based on the BSSID
20710 @param pContext: pointer to the WLAN DAL context
20711 @param pDPContext: pointer to the Datapath context
20712
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020714 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070020715*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020716WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020717WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
20718{
20719 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20720
20721 pCB->pDPContext = pDPContext;
20722 return;
20723}
20724
20725/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020726 @brief Helper routine used to find a session based on the BSSID
20727
20728
20729 @param pContext: pointer to the WLAN DAL context
20730
Jeff Johnson295189b2012-06-20 16:38:30 -070020731 @see
20732 @return pointer to Datapath context
20733*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020734WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020735WDI_DS_GetDatapathContext (void *pContext)
20736{
20737 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20738 return pCB->pDPContext;
20739}
20740/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020741 @brief Helper routine used to find a session based on the BSSID
20742
20743
20744 @param pContext: pointer to the WLAN DAL context
20745 @param pDTDriverContext: pointer to the Transport Driver context
20746
Jeff Johnson295189b2012-06-20 16:38:30 -070020747 @see
20748 @return void
20749*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020750WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020751WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
20752{
20753 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20754
20755 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020757}
20758
20759/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020760 @brief Helper routine used to find a session based on the BSSID
20761
20762
20763 @param pWDICtx: pointer to the WLAN DAL context
20764
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020766 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070020767*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020768WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020769WDT_GetTransportDriverContext (void *pContext)
20770{
20771 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020772 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070020773}
20774
Jeff Johnsone7245742012-09-05 17:12:55 -070020775/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 Helper inline converters
20777 ============================================================================*/
20778/*Convert WDI driver type into HAL driver type*/
20779WPT_STATIC WPT_INLINE WDI_Status
20780WDI_HAL_2_WDI_STATUS
20781(
20782 eHalStatus halStatus
20783)
20784{
Jeff Johnsone7245742012-09-05 17:12:55 -070020785 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 the chances of getting inlined*/
20787 switch( halStatus )
20788 {
20789 case eHAL_STATUS_SUCCESS:
20790 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20791 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20792 return WDI_STATUS_SUCCESS;
20793 case eHAL_STATUS_FAILURE:
20794 return WDI_STATUS_E_FAILURE;
20795 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070020796 return WDI_STATUS_MEM_FAILURE;
20797 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070020798 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020799 default:
20800 return WDI_STATUS_DEV_INTERNAL_FAILURE;
20801 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020802
Jeff Johnsone7245742012-09-05 17:12:55 -070020803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020804}/*WDI_HAL_2_WDI_STATUS*/
20805
20806/*Convert WDI request type into HAL request type*/
20807WPT_STATIC WPT_INLINE tHalHostMsgType
20808WDI_2_HAL_REQ_TYPE
20809(
20810 WDI_RequestEnumType wdiReqType
20811)
20812{
Jeff Johnsone7245742012-09-05 17:12:55 -070020813 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 the chances of getting inlined*/
20815 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070020816 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020817 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020818 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020819 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020820 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020822 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020823 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020824 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020825 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020826 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020828 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020829 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020830 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020832 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020836 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020840 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020842 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020846 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020847 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020848 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020849 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 return WLAN_HAL_RMV_STAKEY_REQ;
20852 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020853 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020854 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020855 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020856 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020859 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 case WDI_DEL_BA_REQ:
20861 return WLAN_HAL_DEL_BA_REQ;
20862#ifdef FEATURE_WLAN_CCX
20863 case WDI_TSM_STATS_REQ:
20864 return WLAN_HAL_TSM_STATS_REQ;
20865#endif
20866 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020867 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020868 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020869 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020870 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020871 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020872 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020873 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020874 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020875 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020876 case WDI_ADD_BA_SESSION_REQ:
20877 return WLAN_HAL_ADD_BA_SESSION_REQ;
20878 case WDI_TRIGGER_BA_REQ:
20879 return WLAN_HAL_TRIGGER_BA_REQ;
20880 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020881 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020882 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020883 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
20885 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
20886 case WDI_SET_MAX_TX_POWER_REQ:
20887 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
20888#ifdef WLAN_FEATURE_P2P
20889 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
20890 return WLAN_HAL_SET_P2P_GONOA_REQ;
20891#endif
20892 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020893 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020897 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020898 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020899 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020901 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020902 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020905 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020907 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020908 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020909 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 case WDI_REM_BEACON_FILTER_REQ:
20913 return WLAN_HAL_REM_BCN_FILTER_REQ;
20914 case WDI_SET_RSSI_THRESHOLDS_REQ:
20915 return WLAN_HAL_SET_RSSI_THRESH_REQ;
20916 case WDI_HOST_OFFLOAD_REQ:
20917 return WLAN_HAL_HOST_OFFLOAD_REQ;
20918 case WDI_WOWL_ADD_BC_PTRN_REQ:
20919 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
20920 case WDI_WOWL_DEL_BC_PTRN_REQ:
20921 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
20922 case WDI_WOWL_ENTER_REQ:
20923 return WLAN_HAL_ENTER_WOWL_REQ;
20924 case WDI_WOWL_EXIT_REQ:
20925 return WLAN_HAL_EXIT_WOWL_REQ;
20926 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
20927 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
20928 case WDI_NV_DOWNLOAD_REQ:
20929 return WLAN_HAL_DOWNLOAD_NV_REQ;
20930 case WDI_FLUSH_AC_REQ:
20931 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
20932 case WDI_BTAMP_EVENT_REQ:
20933 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
20934#ifdef WLAN_FEATURE_VOWIFI_11R
20935 case WDI_AGGR_ADD_TS_REQ:
20936 return WLAN_HAL_AGGR_ADD_TS_REQ;
20937#endif /* WLAN_FEATURE_VOWIFI_11R */
20938#ifdef ANI_MANF_DIAG
20939 case WDI_FTM_CMD_REQ:
20940 return WLAN_HAL_PROCESS_PTT_REQ;
20941#endif /* ANI_MANF_DIAG */
20942 case WDI_ADD_STA_SELF_REQ:
20943 return WLAN_HAL_ADD_STA_SELF_REQ;
20944 case WDI_DEL_STA_SELF_REQ:
20945 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070020946#ifdef FEATURE_OEM_DATA_SUPPORT
20947 case WDI_START_OEM_DATA_REQ:
20948 return WLAN_HAL_START_OEM_DATA_REQ;
20949#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070020950 case WDI_HOST_RESUME_REQ:
20951 return WLAN_HAL_HOST_RESUME_REQ;
20952 case WDI_HOST_SUSPEND_IND:
20953 return WLAN_HAL_HOST_SUSPEND_IND;
20954 case WDI_KEEP_ALIVE_REQ:
20955 return WLAN_HAL_KEEP_ALIVE_REQ;
20956
20957#ifdef FEATURE_WLAN_SCAN_PNO
20958 case WDI_SET_PREF_NETWORK_REQ:
20959 return WLAN_HAL_SET_PREF_NETWORK_REQ;
20960 case WDI_SET_RSSI_FILTER_REQ:
20961 return WLAN_HAL_SET_RSSI_FILTER_REQ;
20962 case WDI_UPDATE_SCAN_PARAMS_REQ:
20963 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
20964#endif // FEATURE_WLAN_SCAN_PNO
20965 case WDI_SET_TX_PER_TRACKING_REQ:
20966 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
20967#ifdef WLAN_FEATURE_PACKET_FILTERING
20968 case WDI_8023_MULTICAST_LIST_REQ:
20969 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
20970 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020971 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020972 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
20973 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
20974 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
20975 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
20976#endif // WLAN_FEATURE_PACKET_FILTERING
20977 case WDI_HAL_DUMP_CMD_REQ:
20978 return WLAN_HAL_DUMP_COMMAND_REQ;
20979#ifdef WLAN_FEATURE_GTK_OFFLOAD
20980 case WDI_GTK_OFFLOAD_REQ:
20981 return WLAN_HAL_GTK_OFFLOAD_REQ;
20982 case WDI_GTK_OFFLOAD_GETINFO_REQ:
20983 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
20984#endif /* WLAN_FEATURE_GTK_OFFLOAD */
20985
20986 case WDI_INIT_SCAN_CON_REQ:
20987 return WLAN_HAL_INIT_SCAN_CON_REQ;
20988 case WDI_SET_POWER_PARAMS_REQ:
20989 return WLAN_HAL_SET_POWER_PARAMS_REQ;
20990 case WDI_SET_TM_LEVEL_REQ:
20991 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
20992 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
20993 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070020994#ifdef WLAN_FEATURE_11AC
20995 case WDI_UPDATE_VHT_OP_MODE_REQ:
20996 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
20997#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020998 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021001
Jeff Johnson295189b2012-06-20 16:38:30 -070021002}/*WDI_2_HAL_REQ_TYPE*/
21003
21004/*Convert WDI response type into HAL response type*/
21005WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21006HAL_2_WDI_RSP_TYPE
21007(
21008 tHalHostMsgType halMsg
21009)
21010{
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 the chances of getting inlined*/
21013 switch( halMsg )
21014 {
21015 case WLAN_HAL_START_RSP:
21016 return WDI_START_RESP;
21017 case WLAN_HAL_STOP_RSP:
21018 return WDI_STOP_RESP;
21019 case WLAN_HAL_INIT_SCAN_RSP:
21020 return WDI_INIT_SCAN_RESP;
21021 case WLAN_HAL_START_SCAN_RSP:
21022 return WDI_START_SCAN_RESP;
21023 case WLAN_HAL_END_SCAN_RSP:
21024 return WDI_END_SCAN_RESP;
21025 case WLAN_HAL_FINISH_SCAN_RSP:
21026 return WDI_FINISH_SCAN_RESP;
21027 case WLAN_HAL_CONFIG_STA_RSP:
21028 return WDI_CONFIG_STA_RESP;
21029 case WLAN_HAL_DELETE_STA_RSP:
21030 return WDI_DEL_STA_RESP;
21031 case WLAN_HAL_CONFIG_BSS_RSP:
21032 return WDI_CONFIG_BSS_RESP;
21033 case WLAN_HAL_DELETE_BSS_RSP:
21034 return WDI_DEL_BSS_RESP;
21035 case WLAN_HAL_JOIN_RSP:
21036 return WDI_JOIN_RESP;
21037 case WLAN_HAL_POST_ASSOC_RSP:
21038 return WDI_POST_ASSOC_RESP;
21039 case WLAN_HAL_SET_BSSKEY_RSP:
21040 return WDI_SET_BSS_KEY_RESP;
21041 case WLAN_HAL_SET_STAKEY_RSP:
21042 return WDI_SET_STA_KEY_RESP;
21043 case WLAN_HAL_RMV_BSSKEY_RSP:
21044 return WDI_RMV_BSS_KEY_RESP;
21045 case WLAN_HAL_RMV_STAKEY_RSP:
21046 return WDI_RMV_STA_KEY_RESP;
21047 case WLAN_HAL_SET_BCASTKEY_RSP:
21048 return WDI_SET_STA_BCAST_KEY_RESP;
21049 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21050 // return WDI_RMV_STA_BCAST_KEY_RESP;
21051 case WLAN_HAL_ADD_TS_RSP:
21052 return WDI_ADD_TS_RESP;
21053 case WLAN_HAL_DEL_TS_RSP:
21054 return WDI_DEL_TS_RESP;
21055 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21056 return WDI_UPD_EDCA_PRMS_RESP;
21057 case WLAN_HAL_ADD_BA_RSP:
21058 return WDI_ADD_BA_RESP;
21059 case WLAN_HAL_DEL_BA_RSP:
21060 return WDI_DEL_BA_RESP;
21061#ifdef FEATURE_WLAN_CCX
21062 case WLAN_HAL_TSM_STATS_RSP:
21063 return WDI_TSM_STATS_RESP;
21064#endif
21065 case WLAN_HAL_CH_SWITCH_RSP:
21066 return WDI_CH_SWITCH_RESP;
21067 case WLAN_HAL_SET_LINK_ST_RSP:
21068 return WDI_SET_LINK_ST_RESP;
21069 case WLAN_HAL_GET_STATS_RSP:
21070 return WDI_GET_STATS_RESP;
21071 case WLAN_HAL_UPDATE_CFG_RSP:
21072 return WDI_UPDATE_CFG_RESP;
21073 case WLAN_HAL_ADD_BA_SESSION_RSP:
21074 return WDI_ADD_BA_SESSION_RESP;
21075 case WLAN_HAL_TRIGGER_BA_RSP:
21076 return WDI_TRIGGER_BA_RESP;
21077 case WLAN_HAL_UPDATE_BEACON_RSP:
21078 return WDI_UPD_BCON_PRMS_RESP;
21079 case WLAN_HAL_SEND_BEACON_RSP:
21080 return WDI_SND_BCON_RESP;
21081 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21082 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21083 /*Indications*/
21084 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21085 return WDI_HAL_RSSI_NOTIFICATION_IND;
21086 case WLAN_HAL_MISSED_BEACON_IND:
21087 return WDI_HAL_MISSED_BEACON_IND;
21088 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21089 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21090 case WLAN_HAL_MIC_FAILURE_IND:
21091 return WDI_HAL_MIC_FAILURE_IND;
21092 case WLAN_HAL_FATAL_ERROR_IND:
21093 return WDI_HAL_FATAL_ERROR_IND;
21094 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21095 return WDI_HAL_DEL_STA_IND;
21096 case WLAN_HAL_COEX_IND:
21097 return WDI_HAL_COEX_IND;
21098 case WLAN_HAL_OTA_TX_COMPL_IND:
21099 return WDI_HAL_TX_COMPLETE_IND;
21100#ifdef WLAN_FEATURE_P2P
21101 case WLAN_HAL_P2P_NOA_ATTR_IND:
21102 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021103 case WLAN_HAL_P2P_NOA_START_IND:
21104 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021105#endif
21106 case WLAN_HAL_TX_PER_HIT_IND:
21107 return WDI_HAL_TX_PER_HIT_IND;
21108 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21109 return WDI_SET_MAX_TX_POWER_RESP;
21110#ifdef WLAN_FEATURE_P2P
21111 case WLAN_HAL_SET_P2P_GONOA_RSP:
21112 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
21113#endif
21114 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021116 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021119 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021120 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021121 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021122 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021123 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021127 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021128 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021129 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021130 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021131 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021132 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21133 return WDI_SET_BEACON_FILTER_RESP;
21134 case WLAN_HAL_REM_BCN_FILTER_RSP:
21135 return WDI_REM_BEACON_FILTER_RESP;
21136 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21137 return WDI_SET_RSSI_THRESHOLDS_RESP;
21138 case WLAN_HAL_HOST_OFFLOAD_RSP:
21139 return WDI_HOST_OFFLOAD_RESP;
21140 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21141 return WDI_WOWL_ADD_BC_PTRN_RESP;
21142 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21143 return WDI_WOWL_DEL_BC_PTRN_RESP;
21144 case WLAN_HAL_ENTER_WOWL_RSP:
21145 return WDI_WOWL_ENTER_RESP;
21146 case WLAN_HAL_EXIT_WOWL_RSP:
21147 return WDI_WOWL_EXIT_RESP;
21148 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21149 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21150 case WLAN_HAL_DOWNLOAD_NV_RSP:
21151 return WDI_NV_DOWNLOAD_RESP;
21152 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21153 return WDI_FLUSH_AC_RESP;
21154 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21155 return WDI_BTAMP_EVENT_RESP;
21156#ifdef ANI_MANF_DIAG
21157 case WLAN_HAL_PROCESS_PTT_RSP:
21158 return WDI_FTM_CMD_RESP;
21159#endif /* ANI_MANF_DIAG */
21160 case WLAN_HAL_ADD_STA_SELF_RSP:
21161 return WDI_ADD_STA_SELF_RESP;
21162case WLAN_HAL_DEL_STA_SELF_RSP:
21163 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021164#ifdef FEATURE_OEM_DATA_SUPPORT
21165 case WLAN_HAL_START_OEM_DATA_RSP:
21166 return WDI_START_OEM_DATA_RESP;
21167#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021168 case WLAN_HAL_HOST_RESUME_RSP:
21169 return WDI_HOST_RESUME_RESP;
21170 case WLAN_HAL_KEEP_ALIVE_RSP:
21171 return WDI_KEEP_ALIVE_RESP;
21172#ifdef FEATURE_WLAN_SCAN_PNO
21173 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21174 return WDI_SET_PREF_NETWORK_RESP;
21175 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021176 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021177 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21178 return WDI_UPDATE_SCAN_PARAMS_RESP;
21179 case WLAN_HAL_PREF_NETW_FOUND_IND:
21180 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21181#endif // FEATURE_WLAN_SCAN_PNO
21182 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21183 return WDI_SET_TX_PER_TRACKING_RESP;
21184#ifdef WLAN_FEATURE_PACKET_FILTERING
21185 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21186 return WDI_8023_MULTICAST_LIST_RESP;
21187 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21188 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21189 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21190 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21191 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21192 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21193#endif // WLAN_FEATURE_PACKET_FILTERING
21194
21195 case WLAN_HAL_DUMP_COMMAND_RSP:
21196 return WDI_HAL_DUMP_CMD_RESP;
21197 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21198 return WDI_SET_POWER_PARAMS_RESP;
21199#ifdef WLAN_FEATURE_VOWIFI_11R
21200 case WLAN_HAL_AGGR_ADD_TS_RSP:
21201 return WDI_AGGR_ADD_TS_RESP;
21202#endif
21203
21204#ifdef WLAN_FEATURE_GTK_OFFLOAD
21205 case WLAN_HAL_GTK_OFFLOAD_RSP:
21206 return WDI_GTK_OFFLOAD_RESP;
21207 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21208 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21209#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21210#ifdef WLAN_WAKEUP_EVENTS
21211 case WLAN_HAL_WAKE_REASON_IND:
21212 return WDI_HAL_WAKE_REASON_IND;
21213#endif // WLAN_WAKEUP_EVENTS
21214
21215 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21216 return WDI_SET_TM_LEVEL_RESP;
21217 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21218 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021219#ifdef WLAN_FEATURE_11AC
21220 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21221 return WDI_UPDATE_VHT_OP_MODE_RESP;
21222#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021224 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 }
21226
21227}/*HAL_2_WDI_RSP_TYPE*/
21228
21229
21230/*Convert WDI driver type into HAL driver type*/
21231WPT_STATIC WPT_INLINE tDriverType
21232WDI_2_HAL_DRV_TYPE
21233(
21234 WDI_DriverType wdiDriverType
21235)
21236{
Jeff Johnsone7245742012-09-05 17:12:55 -070021237 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021238 the chances of getting inlined*/
21239 switch( wdiDriverType )
21240 {
21241 case WDI_DRIVER_TYPE_PRODUCTION:
21242 return eDRIVER_TYPE_PRODUCTION;
21243 case WDI_DRIVER_TYPE_MFG:
21244 return eDRIVER_TYPE_MFG;
21245 case WDI_DRIVER_TYPE_DVT:
21246 return eDRIVER_TYPE_DVT;
21247 }
21248
Jeff Johnsone7245742012-09-05 17:12:55 -070021249 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021250}/*WDI_2_HAL_DRV_TYPE*/
21251
21252
21253/*Convert WDI stop reason into HAL stop reason*/
21254WPT_STATIC WPT_INLINE tHalStopType
21255WDI_2_HAL_STOP_REASON
21256(
21257 WDI_StopType wdiDriverType
21258)
21259{
Jeff Johnsone7245742012-09-05 17:12:55 -070021260 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021261 the chances of getting inlined*/
21262 switch( wdiDriverType )
21263 {
21264 case WDI_STOP_TYPE_SYS_RESET:
21265 return HAL_STOP_TYPE_SYS_RESET;
21266 case WDI_DRIVER_TYPE_MFG:
21267 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21268 case WDI_STOP_TYPE_RF_KILL:
21269 return HAL_STOP_TYPE_RF_KILL;
21270 }
21271
Jeff Johnsone7245742012-09-05 17:12:55 -070021272 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021273}/*WDI_2_HAL_STOP_REASON*/
21274
21275
21276/*Convert WDI scan mode type into HAL scan mode type*/
21277WPT_STATIC WPT_INLINE eHalSysMode
21278WDI_2_HAL_SCAN_MODE
21279(
21280 WDI_ScanMode wdiScanMode
21281)
21282{
Jeff Johnsone7245742012-09-05 17:12:55 -070021283 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021284 the chances of getting inlined*/
21285 switch( wdiScanMode )
21286 {
21287 case WDI_SCAN_MODE_NORMAL:
21288 return eHAL_SYS_MODE_NORMAL;
21289 case WDI_SCAN_MODE_LEARN:
21290 return eHAL_SYS_MODE_LEARN;
21291 case WDI_SCAN_MODE_SCAN:
21292 return eHAL_SYS_MODE_SCAN;
21293 case WDI_SCAN_MODE_PROMISC:
21294 return eHAL_SYS_MODE_PROMISC;
21295 case WDI_SCAN_MODE_SUSPEND_LINK:
21296 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021297 case WDI_SCAN_MODE_ROAM_SCAN:
21298 return eHAL_SYS_MODE_ROAM_SCAN;
21299 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21300 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 }
21302
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021304}/*WDI_2_HAL_SCAN_MODE*/
21305
21306/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021307WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021308WDI_2_HAL_SEC_CH_OFFSET
21309(
21310 WDI_HTSecondaryChannelOffset wdiSecChOffset
21311)
21312{
Jeff Johnsone7245742012-09-05 17:12:55 -070021313 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021314 the chances of getting inlined*/
21315 switch( wdiSecChOffset )
21316 {
21317 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021318 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021319 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021320 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021322 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21323#ifdef WLAN_FEATURE_11AC
21324 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21325 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21326 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21327 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21328 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21329 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21330 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21331 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21332 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21333 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21334 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21335 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21336 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21337 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21338#endif
21339 default:
21340 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021341 }
21342
Jeff Johnsone7245742012-09-05 17:12:55 -070021343 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021344}/*WDI_2_HAL_SEC_CH_OFFSET*/
21345
21346/*Convert WDI BSS type into HAL BSS type*/
21347WPT_STATIC WPT_INLINE tSirBssType
21348WDI_2_HAL_BSS_TYPE
21349(
21350 WDI_BssType wdiBSSType
21351)
21352{
Jeff Johnsone7245742012-09-05 17:12:55 -070021353 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021354 the chances of getting inlined*/
21355 switch( wdiBSSType )
21356 {
21357 case WDI_INFRASTRUCTURE_MODE:
21358 return eSIR_INFRASTRUCTURE_MODE;
21359 case WDI_INFRA_AP_MODE:
21360 return eSIR_INFRA_AP_MODE;
21361 case WDI_IBSS_MODE:
21362 return eSIR_IBSS_MODE;
21363 case WDI_BTAMP_STA_MODE:
21364 return eSIR_BTAMP_STA_MODE;
21365 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021366 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021367 case WDI_BSS_AUTO_MODE:
21368 return eSIR_AUTO_MODE;
21369 }
21370
Jeff Johnsone7245742012-09-05 17:12:55 -070021371 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021372}/*WDI_2_HAL_BSS_TYPE*/
21373
21374/*Convert WDI NW type into HAL NW type*/
21375WPT_STATIC WPT_INLINE tSirNwType
21376WDI_2_HAL_NW_TYPE
21377(
21378 WDI_NwType wdiNWType
21379)
21380{
Jeff Johnsone7245742012-09-05 17:12:55 -070021381 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021382 the chances of getting inlined*/
21383 switch( wdiNWType )
21384 {
21385 case WDI_11A_NW_TYPE:
21386 return eSIR_11A_NW_TYPE;
21387 case WDI_11B_NW_TYPE:
21388 return eSIR_11B_NW_TYPE;
21389 case WDI_11G_NW_TYPE:
21390 return eSIR_11G_NW_TYPE;
21391 case WDI_11N_NW_TYPE:
21392 return eSIR_11N_NW_TYPE;
21393 }
21394
Jeff Johnsone7245742012-09-05 17:12:55 -070021395 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021396}/*WDI_2_HAL_NW_TYPE*/
21397
21398/*Convert WDI chanel bonding type into HAL cb type*/
21399WPT_STATIC WPT_INLINE ePhyChanBondState
21400WDI_2_HAL_CB_STATE
21401(
21402 WDI_PhyChanBondState wdiCbState
21403)
21404{
Jeff Johnsone7245742012-09-05 17:12:55 -070021405 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021406 the chances of getting inlined*/
21407 switch ( wdiCbState )
21408 {
21409 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
21410 return PHY_SINGLE_CHANNEL_CENTERED;
21411 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
21412 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
21413 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
21414 return PHY_DOUBLE_CHANNEL_CENTERED;
21415 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
21416 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070021417#ifdef WLAN_FEATURE_11AC
21418 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21419 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21420 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21421 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
21422 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21423 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21424 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21425 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21426 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21427 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
21428 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21429 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21430 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21431 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21432#endif
21433 case WDI_MAX_CB_STATE:
21434 default:
21435 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021436 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021437
Jeff Johnson295189b2012-06-20 16:38:30 -070021438 return PHY_CHANNEL_BONDING_STATE_MAX;
21439}/*WDI_2_HAL_CB_STATE*/
21440
21441/*Convert WDI chanel bonding type into HAL cb type*/
21442WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
21443WDI_2_HAL_HT_OPER_MODE
21444(
21445 WDI_HTOperatingMode wdiHTOperMode
21446)
21447{
Jeff Johnsone7245742012-09-05 17:12:55 -070021448 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021449 the chances of getting inlined*/
21450 switch ( wdiHTOperMode )
21451 {
21452 case WDI_HT_OP_MODE_PURE:
21453 return eSIR_HT_OP_MODE_PURE;
21454 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
21455 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
21456 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
21457 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
21458 case WDI_HT_OP_MODE_MIXED:
21459 return eSIR_HT_OP_MODE_MIXED;
21460 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021461
Jeff Johnson295189b2012-06-20 16:38:30 -070021462 return eSIR_HT_OP_MODE_MAX;
21463}/*WDI_2_HAL_HT_OPER_MODE*/
21464
21465/*Convert WDI mimo PS type into HAL mimo PS type*/
21466WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
21467WDI_2_HAL_MIMO_PS
21468(
21469 WDI_HTMIMOPowerSaveState wdiHTOperMode
21470)
21471{
Jeff Johnsone7245742012-09-05 17:12:55 -070021472 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021473 the chances of getting inlined*/
21474 switch ( wdiHTOperMode )
21475 {
21476 case WDI_HT_MIMO_PS_STATIC:
21477 return eSIR_HT_MIMO_PS_STATIC;
21478 case WDI_HT_MIMO_PS_DYNAMIC:
21479 return eSIR_HT_MIMO_PS_DYNAMIC;
21480 case WDI_HT_MIMO_PS_NA:
21481 return eSIR_HT_MIMO_PS_NA;
21482 case WDI_HT_MIMO_PS_NO_LIMIT:
21483 return eSIR_HT_MIMO_PS_NO_LIMIT;
21484 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021485
Jeff Johnson295189b2012-06-20 16:38:30 -070021486 return eSIR_HT_MIMO_PS_MAX;
21487}/*WDI_2_HAL_MIMO_PS*/
21488
21489/*Convert WDI ENC type into HAL ENC type*/
21490WPT_STATIC WPT_INLINE tAniEdType
21491WDI_2_HAL_ENC_TYPE
21492(
21493 WDI_EncryptType wdiEncType
21494)
21495{
Jeff Johnsone7245742012-09-05 17:12:55 -070021496 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 the chances of getting inlined*/
21498 switch ( wdiEncType )
21499 {
21500 case WDI_ENCR_NONE:
21501 return eSIR_ED_NONE;
21502
21503 case WDI_ENCR_WEP40:
21504 return eSIR_ED_WEP40;
21505
21506 case WDI_ENCR_WEP104:
21507 return eSIR_ED_WEP104;
21508
21509 case WDI_ENCR_TKIP:
21510 return eSIR_ED_TKIP;
21511
21512 case WDI_ENCR_CCMP:
21513 return eSIR_ED_CCMP;
21514
21515 case WDI_ENCR_AES_128_CMAC:
21516 return eSIR_ED_AES_128_CMAC;
21517#if defined(FEATURE_WLAN_WAPI)
21518 case WDI_ENCR_WPI:
21519 return eSIR_ED_WPI;
21520#endif
21521 default:
21522 return eSIR_ED_NOT_IMPLEMENTED;
21523 }
21524
21525}/*WDI_2_HAL_ENC_TYPE*/
21526
21527/*Convert WDI WEP type into HAL WEP type*/
21528WPT_STATIC WPT_INLINE tAniWepType
21529WDI_2_HAL_WEP_TYPE
21530(
21531 WDI_WepType wdiWEPType
21532)
21533{
Jeff Johnsone7245742012-09-05 17:12:55 -070021534 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 the chances of getting inlined*/
21536 switch ( wdiWEPType )
21537 {
21538 case WDI_WEP_STATIC:
21539 return eSIR_WEP_STATIC;
21540
21541 case WDI_WEP_DYNAMIC:
21542 return eSIR_WEP_DYNAMIC;
21543 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021544
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 return eSIR_WEP_MAX;
21546}/*WDI_2_HAL_WEP_TYPE*/
21547
21548WPT_STATIC WPT_INLINE tSirLinkState
21549WDI_2_HAL_LINK_STATE
21550(
21551 WDI_LinkStateType wdiLinkState
21552)
21553{
Jeff Johnsone7245742012-09-05 17:12:55 -070021554 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 the chances of getting inlined*/
21556 switch ( wdiLinkState )
21557 {
21558 case WDI_LINK_IDLE_STATE:
21559 return eSIR_LINK_IDLE_STATE;
21560
21561 case WDI_LINK_PREASSOC_STATE:
21562 return eSIR_LINK_PREASSOC_STATE;
21563
21564 case WDI_LINK_POSTASSOC_STATE:
21565 return eSIR_LINK_POSTASSOC_STATE;
21566
21567 case WDI_LINK_AP_STATE:
21568 return eSIR_LINK_AP_STATE;
21569
21570 case WDI_LINK_IBSS_STATE:
21571 return eSIR_LINK_IBSS_STATE;
21572
21573 case WDI_LINK_BTAMP_PREASSOC_STATE:
21574 return eSIR_LINK_BTAMP_PREASSOC_STATE;
21575
21576 case WDI_LINK_BTAMP_POSTASSOC_STATE:
21577 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
21578
21579 case WDI_LINK_BTAMP_AP_STATE:
21580 return eSIR_LINK_BTAMP_AP_STATE;
21581
21582 case WDI_LINK_BTAMP_STA_STATE:
21583 return eSIR_LINK_BTAMP_STA_STATE;
21584
21585 case WDI_LINK_LEARN_STATE:
21586 return eSIR_LINK_LEARN_STATE;
21587
21588 case WDI_LINK_SCAN_STATE:
21589 return eSIR_LINK_SCAN_STATE;
21590
21591 case WDI_LINK_FINISH_SCAN_STATE:
21592 return eSIR_LINK_FINISH_SCAN_STATE;
21593
21594 case WDI_LINK_INIT_CAL_STATE:
21595 return eSIR_LINK_INIT_CAL_STATE;
21596
21597 case WDI_LINK_FINISH_CAL_STATE:
21598 return eSIR_LINK_FINISH_CAL_STATE;
21599
21600#ifdef WLAN_FEATURE_P2P
21601 case WDI_LINK_LISTEN_STATE:
21602 return eSIR_LINK_LISTEN_STATE;
21603#endif
21604
21605 default:
21606 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070021607 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021608}
21609
Jeff Johnsone7245742012-09-05 17:12:55 -070021610/*Translate a STA Context from WDI into HAL*/
21611WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070021612void
21613WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070021614(
Jeff Johnson295189b2012-06-20 16:38:30 -070021615 tConfigStaParams* phalConfigSta,
21616 WDI_ConfigStaReqInfoType* pwdiConfigSta
21617)
21618{
21619 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070021620#ifdef WLAN_FEATURE_11AC
21621 /* Get the Version 1 Handler */
21622 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
21623 if (WDI_getFwWlanFeatCaps(DOT11AC))
21624 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021625 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070021626 }
21627#endif
21628 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021629 the chances of getting inlined*/
21630
Jeff Johnsone7245742012-09-05 17:12:55 -070021631 wpalMemoryCopy(phalConfigSta->bssId,
21632 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
21633
21634 wpalMemoryCopy(phalConfigSta->staMac,
21635 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070021636
21637 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
21638 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
21639 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
21640 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
21641 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
21642 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
21643 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
21644 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
21645 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
21646 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
21647 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
21648 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
21649 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
21650 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
21651 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
21652 phalConfigSta->action = pwdiConfigSta->wdiAction;
21653 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
21654 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
21655 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
21656 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
21657 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
21658 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
21659 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070021660
Jeff Johnson295189b2012-06-20 16:38:30 -070021661 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
21662
Jeff Johnsone7245742012-09-05 17:12:55 -070021663 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070021664 pwdiConfigSta->wdiSupportedRates.opRateMode;
21665 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
21666 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021667 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021668 pwdiConfigSta->wdiSupportedRates.llbRates[i];
21669 }
21670 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
21671 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021673 pwdiConfigSta->wdiSupportedRates.llaRates[i];
21674 }
21675 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
21676 {
21677 phalConfigSta->supportedRates.aniLegacyRates[i] =
21678 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
21679 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
21682 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
21683 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
21686 }
21687 phalConfigSta->supportedRates.rxHighestDataRate =
21688 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
21689
Jeff Johnsone7245742012-09-05 17:12:55 -070021690#ifdef WLAN_FEATURE_11AC
21691 if(phalConfigSta_V1 != NULL)
21692 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021693 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
21694 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
21695 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
21696 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070021697 }
21698#endif
21699
Jeff Johnson295189b2012-06-20 16:38:30 -070021700#ifdef WLAN_FEATURE_P2P
21701 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
21702#endif
21703
Jeff Johnsone7245742012-09-05 17:12:55 -070021704#ifdef WLAN_FEATURE_11AC
21705 if(phalConfigSta_V1 != NULL)
21706 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021707 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
21708 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 }
21710#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021711}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070021712
21713/*Translate a Rate set info from WDI into HAL*/
21714WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021715WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070021716(
Jeff Johnson295189b2012-06-20 16:38:30 -070021717 tSirMacRateSet* pHalRateSet,
21718 WDI_RateSet* pwdiRateSet
21719)
21720{
Jeff Johnsone7245742012-09-05 17:12:55 -070021721 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21723
21724 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
21725 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
21726
21727 for ( i = 0; i < pHalRateSet->numRates; i++ )
21728 {
21729 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
21730 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021731
Jeff Johnson295189b2012-06-20 16:38:30 -070021732}/*WDI_CopyWDIRateSetToHALRateSet*/
21733
21734
21735/*Translate an EDCA Parameter Record from WDI into HAL*/
21736WPT_STATIC WPT_INLINE void
21737WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070021738(
Jeff Johnson295189b2012-06-20 16:38:30 -070021739 tSirMacEdcaParamRecord* phalEdcaParam,
21740 WDI_EdcaParamRecord* pWDIEdcaParam
21741)
21742{
Jeff Johnsone7245742012-09-05 17:12:55 -070021743 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 the chances of getting inlined*/
21745
21746 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
21747 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
21748 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
21749 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
21750
21751 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
21752 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
21753 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
21754}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
21755
21756
21757/*Copy a management frame header from WDI fmt into HAL fmt*/
21758WPT_STATIC WPT_INLINE void
21759WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
21760(
21761 tSirMacMgmtHdr* pmacMgmtHdr,
21762 WDI_MacMgmtHdr* pwdiMacMgmtHdr
21763)
21764{
21765 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
21766 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
21767 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
21768 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
21769 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
21770 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
21771 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
21772 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
21773 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
21774 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
21775 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
21776
21777 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
21778 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
21779
Jeff Johnsone7245742012-09-05 17:12:55 -070021780 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070021781 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021782 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021784 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070021785 pwdiMacMgmtHdr->bssId, 6);
21786
21787 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
21788 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
21789 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
21790
21791}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
21792
21793
21794/*Copy config bss parameters from WDI fmt into HAL fmt*/
21795WPT_STATIC WPT_INLINE void
21796WDI_CopyWDIConfigBSSToHALConfigBSS
21797(
21798 tConfigBssParams* phalConfigBSS,
21799 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
21800)
21801{
21802
21803 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021804#ifdef WLAN_FEATURE_11AC
21805 /* Get the Version 1 Handler */
21806 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
21807 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021808 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070021809#endif
21810
Jeff Johnson295189b2012-06-20 16:38:30 -070021811 wpalMemoryCopy( phalConfigBSS->bssId,
21812 pwdiConfigBSS->macBSSID,
21813 WDI_MAC_ADDR_LEN);
21814
21815#ifdef HAL_SELF_STA_PER_BSS
21816 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
21817 pwdiConfigBSS->macSelfAddr,
21818 WDI_MAC_ADDR_LEN);
21819#endif
21820
21821 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
21822
21823 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
21824 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
21825
Jeff Johnsone7245742012-09-05 17:12:55 -070021826 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 pwdiConfigBSS->ucShortSlotTimeSupported;
21828 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
21829 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
21830 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
21831 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
21832 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070021833 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 pwdiConfigBSS->ucTXOPProtectionFullSupport;
21835 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
21836 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
21837 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
21838 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
21839 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
21840 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
21841 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
21842 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
21843 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
21844 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
21845
Jeff Johnsone7245742012-09-05 17:12:55 -070021846 phalConfigBSS->htOperMode =
21847 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070021848
21849 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
21850 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
21851 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
21852 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
21853
21854#ifdef WLAN_FEATURE_VOWIFI
21855 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
21856#endif
21857
21858 /*! Used 32 as magic number because that is how the ssid is declared inside the
21859 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070021860 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070021861 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
21862 pwdiConfigBSS->wdiSSID.ucLength : 32;
21863 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070021864 pwdiConfigBSS->wdiSSID.sSSID,
21865 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070021866
21867 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
21868 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070021869
Jeff Johnson295189b2012-06-20 16:38:30 -070021870 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
21871 &pwdiConfigBSS->wdiRateSet);
21872
21873 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
21874
21875 if(phalConfigBSS->edcaParamsValid)
21876 {
21877 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
21878 &pwdiConfigBSS->wdiBEEDCAParams);
21879 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
21880 &pwdiConfigBSS->wdiBKEDCAParams);
21881 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
21882 &pwdiConfigBSS->wdiVIEDCAParams);
21883 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
21884 &pwdiConfigBSS->wdiVOEDCAParams);
21885 }
21886
Jeff Johnsone7245742012-09-05 17:12:55 -070021887 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070021888
21889 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
21890
21891#ifdef WLAN_FEATURE_VOWIFI_11R
21892
Jeff Johnsone7245742012-09-05 17:12:55 -070021893 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070021894 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070021895
Jeff Johnson295189b2012-06-20 16:38:30 -070021896 if( phalConfigBSS->extSetStaKeyParamValid )
21897 {
21898 /*-----------------------------------------------------------------------
21899 Copy the STA Key parameters into the HAL message
21900 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021901 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021902 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
21903
Jeff Johnsone7245742012-09-05 17:12:55 -070021904 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021905 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
21906
21907 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
21908
21909 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
21910
21911 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
21912
21913#ifdef WLAN_SOFTAP_FEATURE
21914 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
21915 keyIndex++)
21916 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021917 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021918 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
21919 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
21920 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
21921 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
21922 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
21923 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021924 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021927 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
21930 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021931 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021932 WDI_MAX_KEY_LENGTH);
21933 }
21934#else
Jeff Johnsone7245742012-09-05 17:12:55 -070021935 phalConfigBSS->extSetStaKeyParam.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021936 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyId;
21937 phalConfigBSS->extSetStaKeyParam.key.unicast =
21938 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].unicast;
21939 phalConfigBSS->extSetStaKeyParam.key.keyDirection =
21940 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyDirection;
21941 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021942 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021943 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 phalConfigBSS->extSetStaKeyParam.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021945 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021946 phalConfigBSS->extSetStaKeyParam.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyLength;
21948 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021949 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021950 WDI_MAX_KEY_LENGTH);
21951#endif
21952 }
21953 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
21954 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070021956 sizeof(phalConfigBSS->extSetStaKeyParam) );
21957 }
21958
21959#endif /*WLAN_FEATURE_VOWIFI_11R*/
21960
Jeff Johnsone7245742012-09-05 17:12:55 -070021961#ifdef WLAN_FEATURE_11AC
21962 if(phalConfigBSS_V1 != NULL)
21963 {
21964 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
21965 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
21966 }
21967#endif
21968
Jeff Johnson295189b2012-06-20 16:38:30 -070021969}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
21970
21971
Jeff Johnsone7245742012-09-05 17:12:55 -070021972/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 pointed to by user data */
21974WPT_STATIC WPT_INLINE void
21975WDI_ExtractRequestCBFromEvent
21976(
21977 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070021978 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070021979 void** ppUserData
21980)
21981{
21982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21983 switch ( pEvent->wdiRequest )
21984 {
21985 case WDI_START_REQ:
21986 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21987 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
21988 break;
21989 case WDI_STOP_REQ:
21990 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21991 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
21992 break;
21993 case WDI_INIT_SCAN_REQ:
21994 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21995 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
21996 break;
21997 case WDI_START_SCAN_REQ:
21998 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
21999 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22000 break;
22001 case WDI_END_SCAN_REQ:
22002 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22003 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22004 break;
22005 case WDI_FINISH_SCAN_REQ:
22006 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22007 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22008 break;
22009 case WDI_JOIN_REQ:
22010 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22011 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22012 break;
22013 case WDI_CONFIG_BSS_REQ:
22014 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22015 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22016 break;
22017 case WDI_DEL_BSS_REQ:
22018 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22019 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22020 break;
22021 case WDI_POST_ASSOC_REQ:
22022 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22023 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22024 break;
22025 case WDI_DEL_STA_REQ:
22026 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22027 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22028 break;
22029 case WDI_DEL_STA_SELF_REQ:
22030 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22031 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22032 break;
22033
22034 case WDI_SET_BSS_KEY_REQ:
22035 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22036 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22037 break;
22038 case WDI_RMV_BSS_KEY_REQ:
22039 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22040 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22041 break;
22042 case WDI_SET_STA_KEY_REQ:
22043 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22044 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22045 break;
22046 case WDI_RMV_STA_KEY_REQ:
22047 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22048 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22049 break;
22050 case WDI_ADD_TS_REQ:
22051 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22052 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22053 break;
22054 case WDI_DEL_TS_REQ:
22055 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22056 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22057 break;
22058 case WDI_UPD_EDCA_PRMS_REQ:
22059 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22060 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22061 break;
22062 case WDI_ADD_BA_SESSION_REQ:
22063 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22064 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22065 break;
22066 case WDI_DEL_BA_REQ:
22067 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22068 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22069 break;
22070#ifdef FEATURE_WLAN_CCX
22071 case WDI_TSM_STATS_REQ:
22072 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22073 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22074 break;
22075#endif
22076 case WDI_CH_SWITCH_REQ:
22077 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22078 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22079 break;
22080 case WDI_CONFIG_STA_REQ:
22081 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22082 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22083 break;
22084 case WDI_SET_LINK_ST_REQ:
22085 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22086 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22087 break;
22088 case WDI_GET_STATS_REQ:
22089 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22090 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22091 break;
22092 case WDI_UPDATE_CFG_REQ:
22093 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22094 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22095 break;
22096 case WDI_ADD_BA_REQ:
22097 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22098 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22099 break;
22100 case WDI_TRIGGER_BA_REQ:
22101 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22102 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22103 break;
22104 case WDI_UPD_BCON_PRMS_REQ:
22105 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22106 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22107 break;
22108 case WDI_SND_BCON_REQ:
22109 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22110 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22111 break;
22112 case WDI_ENTER_BMPS_REQ:
22113 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22114 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22115 break;
22116 case WDI_EXIT_BMPS_REQ:
22117 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22118 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22119 break;
22120 case WDI_ENTER_UAPSD_REQ:
22121 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22122 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22123 break;
22124 case WDI_UPDATE_UAPSD_PARAM_REQ:
22125 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22126 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22127 break;
22128 case WDI_CONFIGURE_RXP_FILTER_REQ:
22129 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22130 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22131 break;
22132 case WDI_SET_BEACON_FILTER_REQ:
22133 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22134 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22135 break;
22136 case WDI_REM_BEACON_FILTER_REQ:
22137 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22138 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022139 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022140 case WDI_SET_RSSI_THRESHOLDS_REQ:
22141 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22142 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22143 break;
22144 case WDI_HOST_OFFLOAD_REQ:
22145 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22146 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22147 break;
22148 case WDI_WOWL_ADD_BC_PTRN_REQ:
22149 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22150 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22151 break;
22152 case WDI_WOWL_DEL_BC_PTRN_REQ:
22153 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22154 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22155 break;
22156 case WDI_WOWL_ENTER_REQ:
22157 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22158 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22159 break;
22160 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22161 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22162 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22163 break;
22164 case WDI_FLUSH_AC_REQ:
22165 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22166 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22167 break;
22168 case WDI_BTAMP_EVENT_REQ:
22169 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22170 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22171 break;
22172 case WDI_KEEP_ALIVE_REQ:
22173 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22174 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22175 break;
22176 case WDI_SET_TX_PER_TRACKING_REQ:
22177 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22178 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
22179 default:
22180 *ppfnReqCB = NULL;
22181 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022182 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 }
22184}/*WDI_ExtractRequestCBFromEvent*/
22185
22186
22187/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022188 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022189 frame xtl is enabled for a particular STA.
22190
22191 WDI_PostAssocReq must have been called.
22192
Jeff Johnsone7245742012-09-05 17:12:55 -070022193 @param uSTAIdx: STA index
22194
Jeff Johnson295189b2012-06-20 16:38:30 -070022195 @see WDI_PostAssocReq
22196 @return Result of the function call
22197*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022198wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022199WDI_IsHwFrameTxTranslationCapable
22200(
22201 wpt_uint8 uSTAIdx
22202)
22203{
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 uma value*/
22206 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022207 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022208 ------------------------------------------------------------------------*/
22209 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22210 {
22211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22212 "WDI API call before module is initialized - Fail request");
22213
Jeff Johnsone7245742012-09-05 17:12:55 -070022214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022215 }
22216
Jeff Johnsone7245742012-09-05 17:12:55 -070022217
Jeff Johnson295189b2012-06-20 16:38:30 -070022218 return gWDICb.bFrameTransEnabled;
22219}/*WDI_IsHwFrameTxTranslationCapable*/
22220
22221#ifdef FEATURE_WLAN_SCAN_PNO
22222/**
22223 @brief WDI_SetPreferredNetworkList
22224
Jeff Johnsone7245742012-09-05 17:12:55 -070022225 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022226 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022227
Jeff Johnson295189b2012-06-20 16:38:30 -070022228 wdiPNOScanCb: callback for passing back the response
22229 of the Set PNO operation received from the
22230 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022231
Jeff Johnson295189b2012-06-20 16:38:30 -070022232 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022233 callback
22234
Jeff Johnson295189b2012-06-20 16:38:30 -070022235 @return Result of the function call
22236*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022237WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022238WDI_SetPreferredNetworkReq
22239(
22240 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22241 WDI_PNOScanCb wdiPNOScanCb,
22242 void* pUserData
22243)
22244{
22245 WDI_EventInfoType wdiEventData = {{0}};
22246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22247
22248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 ------------------------------------------------------------------------*/
22251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22252 {
22253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22254 "WDI API call before module is initialized - Fail request");
22255
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 }
22258
22259 /*------------------------------------------------------------------------
22260 Fill in Event data and post to the Main FSM
22261 ------------------------------------------------------------------------*/
22262 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022263 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022264 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022265 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022266 wdiEventData.pUserData = pUserData;
22267
22268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22269}
22270
22271
22272/**
22273 @brief WDI_SetRssiFilterReq
22274
Jeff Johnsone7245742012-09-05 17:12:55 -070022275 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022276 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022277
Jeff Johnson295189b2012-06-20 16:38:30 -070022278 wdiRssiFilterCb: callback for passing back the response
22279 of the Set RSSI Filter operation received from the
22280 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022281
Jeff Johnson295189b2012-06-20 16:38:30 -070022282 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022283 callback
22284
Jeff Johnson295189b2012-06-20 16:38:30 -070022285 @return Result of the function call
22286*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022287WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022288WDI_SetRssiFilterReq
22289(
22290 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22291 WDI_RssiFilterCb wdiRssiFilterCb,
22292 void* pUserData
22293)
22294{
22295 WDI_EventInfoType wdiEventData = {{0}};
22296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22297
22298 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022299 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022300 ------------------------------------------------------------------------*/
22301 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22302 {
22303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22304 "WDI API call before module is initialized - Fail request");
22305
Jeff Johnsone7245742012-09-05 17:12:55 -070022306 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022307 }
22308
22309 /*------------------------------------------------------------------------
22310 Fill in Event data and post to the Main FSM
22311 ------------------------------------------------------------------------*/
22312 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022313 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022314 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022315 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022316 wdiEventData.pUserData = pUserData;
22317
22318 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22319}/*WDI_SetRssiFilterReq*/
22320
22321/**
22322 @brief WDI_UpdateScanParamsReq
22323
Jeff Johnsone7245742012-09-05 17:12:55 -070022324 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022325 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022326
Jeff Johnson295189b2012-06-20 16:38:30 -070022327 wdiUpdateScanParamsCb: callback for passing back the response
22328 of the Set PNO operation received from the
22329 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022330
Jeff Johnson295189b2012-06-20 16:38:30 -070022331 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 callback
22333
Jeff Johnson295189b2012-06-20 16:38:30 -070022334 @return Result of the function call
22335*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022336WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022337WDI_UpdateScanParamsReq
22338(
22339 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22340 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22341 void* pUserData
22342)
22343{
22344 WDI_EventInfoType wdiEventData = {{0}};
22345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22346
22347 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022348 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022349 ------------------------------------------------------------------------*/
22350 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22351 {
22352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22353 "WDI API call before module is initialized - Fail request");
22354
Jeff Johnsone7245742012-09-05 17:12:55 -070022355 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022356 }
22357
22358 /*------------------------------------------------------------------------
22359 Fill in Event data and post to the Main FSM
22360 ------------------------------------------------------------------------*/
22361 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022362 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022363 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070022364 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022365 wdiEventData.pUserData = pUserData;
22366
22367 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22368}
22369
22370/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022371 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022373
22374 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022375 pwdiPNOScanReqParams: pointer to the info received
22376 from upper layers
22377 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022378 and its size
22379
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 @return Result of the function call
22381*/
22382
22383WDI_Status
22384WDI_PackPreferredNetworkList
22385(
22386 WDI_ControlBlockType* pWDICtx,
22387 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22388 wpt_uint8** ppSendBuffer,
22389 wpt_uint16* pSize
22390)
22391{
Jeff Johnsone7245742012-09-05 17:12:55 -070022392 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022393 wpt_uint16 usDataOffset = 0;
22394 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022395 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022396 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022397 /*-----------------------------------------------------------------------
22398 Get message buffer
22399 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022400 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022401 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070022402 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022403 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022404 {
22405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22406 "Unable to get send buffer in Set PNO req %x ",
22407 pwdiPNOScanReqParams);
22408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022410 }
22411
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022412 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
22413
Jeff Johnson295189b2012-06-20 16:38:30 -070022414 /*-------------------------------------------------------------------------
22415 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22416 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022417 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022418 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022419 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022420 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22421
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022422 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022423 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022424 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022425 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022426 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22427
22428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022429 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022430 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22431 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22432 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22433
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022434 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 {
22436 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022437 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022438 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22439
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022440 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022442 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022443
22444 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022445 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022447
22448 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022449 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022450 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022451
Jeff Johnsone7245742012-09-05 17:12:55 -070022452 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022454 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070022455 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
22456 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22457 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
22458 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022459
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022460 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022461 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022462 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022463
22464 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022465 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22467
22468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022470 pPrefNetwListParams->aNetworks[i].ssId.length,
22471 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 }
22473
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022474 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22477 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22478 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22479
22480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022482 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022483 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22484 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22485
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022486 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022488 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022489 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022490 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022491 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22492 }
22493
22494 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022495 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022496 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22497 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22498 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022499 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022500
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022501 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022503 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022504
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022505 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22507 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22508 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022510
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022511 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022512 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022513 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022514
22515 /*Set the output values*/
22516 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022518
22519 return WDI_STATUS_SUCCESS;
22520}/*WDI_PackPreferredNetworkList*/
22521
22522/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022523 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022524 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022525
22526 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 pwdiPNOScanReqParams: pointer to the info received
22528 from upper layers
22529 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022530 and its size
22531
Jeff Johnson295189b2012-06-20 16:38:30 -070022532 @return Result of the function call
22533*/
22534
22535WDI_Status
22536WDI_PackPreferredNetworkListNew
22537(
22538 WDI_ControlBlockType* pWDICtx,
22539 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22540 wpt_uint8** ppSendBuffer,
22541 wpt_uint16* pSize
22542)
22543{
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 wpt_uint16 usDataOffset = 0;
22546 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022547 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022548 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022549
22550 /*-----------------------------------------------------------------------
22551 Get message buffer
22552 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022553 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022554 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070022555 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022556 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 {
22558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22559 "Unable to get send buffer in Set PNO req %x ",
22560 pwdiPNOScanReqParams);
22561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022563 }
22564
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022565 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
22566
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 /*-------------------------------------------------------------------------
22568 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22569 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022570 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022572 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022573 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22574
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022575 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022578 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022579 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22580
22581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022582 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022583 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22584 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22585 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22586
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022587 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022588 {
22589 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022590 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22592
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022593 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022594 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022595 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022596
22597 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022598 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022599 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022600
22601 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022602 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022603 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022604
22605 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022606 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070022607 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022608
Jeff Johnsone7245742012-09-05 17:12:55 -070022609 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022610 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022611 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070022612 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
22613
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022614 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022616 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022617
22618 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022619 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022620 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22621
22622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022623 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022624 pPrefNetwListParams->aNetworks[i].ssId.length,
22625 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022626 }
22627
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022628 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022629 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022630 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22631 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22632 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22633
22634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022635 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022636 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22638 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22639
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022640 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022641 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022642 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022644 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022645 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22646 }
22647
22648 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022649 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22651 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22652 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022654
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022655 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022656 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022657 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022658
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022659 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022660 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22661 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22662 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022663 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022664
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022665 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022666 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022667 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022668
Jeff Johnson295189b2012-06-20 16:38:30 -070022669
22670 /*Set the output values*/
22671 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022672 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022673
22674 return WDI_STATUS_SUCCESS;
22675}/*WDI_PackPreferredNetworkListNew*/
22676
22677/**
22678 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022679
22680 @param pWDICtx: pointer to the WLAN DAL context
22681 pEventData: pointer to the event information structure
22682
Jeff Johnson295189b2012-06-20 16:38:30 -070022683 @return Result of the function call
22684*/
22685WDI_Status
22686WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022687(
Jeff Johnson295189b2012-06-20 16:38:30 -070022688 WDI_ControlBlockType* pWDICtx,
22689 WDI_EventInfoType* pEventData
22690)
22691{
22692 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
22693 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022694 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022697
22698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022699 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 -------------------------------------------------------------------------*/
22701 if (( NULL == pEventData ) ||
22702 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
22703 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
22704 {
22705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022706 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022709 }
22710
22711 /*-------------------------------------------------------------------------
22712 Pack the PNO request structure based on version
22713 -------------------------------------------------------------------------*/
22714 if ( pWDICtx->wdiPNOVersion > 0 )
22715 {
22716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022717 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022718 pWDICtx->wdiPNOVersion);
22719
22720 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
22721 &pSendBuffer, &usSendSize);
22722 }
22723 else
22724 {
22725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022726 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022727 pWDICtx->wdiPNOVersion);
22728
22729 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
22730 &pSendBuffer, &usSendSize);
22731 }
22732
22733 if (( WDI_STATUS_SUCCESS != wdiStatus )||
22734 ( NULL == pSendBuffer )||( 0 == usSendSize ))
22735 {
22736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022737 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022739 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022740 }
22741
22742 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022743 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022744
22745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022746 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22749 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022750}
22751
22752/**
22753 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022754
22755 @param pWDICtx: pointer to the WLAN DAL context
22756 pEventData: pointer to the event information structure
22757
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 @see
22759 @return Result of the function call
22760*/
22761WDI_Status
22762WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022763(
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 WDI_ControlBlockType* pWDICtx,
22765 WDI_EventInfoType* pEventData
22766)
22767{
22768 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
22769 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022770 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022771 wpt_uint16 usDataOffset = 0;
22772 wpt_uint16 usSendSize = 0;
22773 wpt_uint8 ucRssiThreshold;
22774
22775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022776 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 -------------------------------------------------------------------------*/
22778 if (( NULL == pEventData ) ||
22779 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
22780 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
22781 {
22782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022786 }
22787
22788 /*-----------------------------------------------------------------------
22789 Get message buffer
22790 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022791 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022792 sizeof(ucRssiThreshold),
22793 &pSendBuffer, &usDataOffset, &usSendSize))||
22794 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
22795 {
22796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22797 "Unable to get send buffer in Set PNO req %x %x %x",
22798 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
22799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022801 }
22802
22803 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
22804
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 wpalMemoryCopy( pSendBuffer+usDataOffset,
22806 &ucRssiThreshold,
22807 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070022808
22809 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022810 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022811
22812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022815 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22816 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022817}
22818
22819
22820/**
22821 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070022822
22823 @param pWDICtx: pointer to the WLAN DAL context
22824 pEventData: pointer to the event information structure
22825
Jeff Johnson295189b2012-06-20 16:38:30 -070022826 @see
22827 @return Result of the function call
22828*/
22829WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053022830WDI_PackUpdateScanParamsReq
22831(
22832 WDI_ControlBlockType* pWDICtx,
22833 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
22834 wpt_uint8** ppSendBuffer,
22835 wpt_uint16* pSize
22836)
22837{
22838 wpt_uint8* pSendBuffer = NULL;
22839 wpt_uint16 usDataOffset = 0;
22840 wpt_uint16 usSendSize = 0;
22841 tUpdateScanParams updateScanParams = {0};
22842
22843
22844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22845 "Begin WDI Update Scan Parameters Old Style Params");
22846 /*-----------------------------------------------------------------------
22847 Get message buffer
22848 -----------------------------------------------------------------------*/
22849 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
22850 sizeof(updateScanParams),
22851 &pSendBuffer, &usDataOffset, &usSendSize))||
22852 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22853 {
22854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22855 "Unable to get send buffer in Update Scan Params req %x",
22856 pwdiUpdateScanParams);
22857 WDI_ASSERT(0);
22858 return WDI_STATUS_E_FAILURE;
22859 }
22860
22861 //
22862 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22863 //
22864
22865 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
22866 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
22867
22868 updateScanParams.ucChannelCount =
22869 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
22870 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22871 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
22872 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
22873
22874 wpalMemoryCopy( updateScanParams.aChannels,
22875 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
22876 updateScanParams.ucChannelCount);
22877
22878
22879 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
22880 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
22881 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
22882 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
22883 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
22884
22885 wpalMemoryCopy( pSendBuffer+usDataOffset,
22886 &updateScanParams,
22887 sizeof(updateScanParams));
22888
22889 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
22890 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
22891
22892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22893 "End Update Scan Parameters Old Style");
22894
22895 /*Set the output values*/
22896 *ppSendBuffer = pSendBuffer;
22897 *pSize = usSendSize;
22898
22899 return WDI_STATUS_SUCCESS;
22900}
22901
22902/**
22903 @brief Process Update Scan Params function
22904
22905 @param pWDICtx: pointer to the WLAN DAL context
22906 pEventData: pointer to the event information structure
22907
22908 @see
22909 @return Result of the function call
22910*/
22911WDI_Status
22912WDI_PackUpdateScanParamsReqEx
22913(
22914 WDI_ControlBlockType* pWDICtx,
22915 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
22916 wpt_uint8** ppSendBuffer,
22917 wpt_uint16* pSize
22918)
22919{
22920 wpt_uint8* pSendBuffer = NULL;
22921 wpt_uint16 usDataOffset = 0;
22922 wpt_uint16 usSendSize = 0;
22923 tUpdateScanParamsEx updateScanParams = {0};
22924
22925
22926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22927 "Begin WDI Update Scan Parameters New Style Params");
22928 /*-----------------------------------------------------------------------
22929 Get message buffer
22930 -----------------------------------------------------------------------*/
22931 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
22932 sizeof(updateScanParams),
22933 &pSendBuffer, &usDataOffset, &usSendSize))||
22934 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22935 {
22936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22937 "Unable to get send buffer in Update Scan Params Ex req %x",
22938 pwdiUpdateScanParams);
22939 WDI_ASSERT(0);
22940 return WDI_STATUS_E_FAILURE;
22941 }
22942
22943 //
22944 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22945 //
22946
22947 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
22948 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
22949
22950 updateScanParams.ucChannelCount =
22951 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
22952 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
22953 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
22954 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
22955
22956 wpalMemoryCopy( updateScanParams.aChannels,
22957 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
22958 updateScanParams.ucChannelCount);
22959
22960
22961 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
22962 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
22963 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
22964 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
22965 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
22966
22967 wpalMemoryCopy( pSendBuffer+usDataOffset,
22968 &updateScanParams,
22969 sizeof(updateScanParams));
22970
22971 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
22972 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
22973
22974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22975 "End Update Scan Parameters New Style");
22976
22977 /*Set the output values*/
22978 *ppSendBuffer = pSendBuffer;
22979 *pSize = usSendSize;
22980
22981 return WDI_STATUS_SUCCESS;
22982}
22983
22984/**
22985 @brief Process Update Scan Params function
22986
22987 @param pWDICtx: pointer to the WLAN DAL context
22988 pEventData: pointer to the event information structure
22989
22990 @see
22991 @return Result of the function call
22992*/
22993WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022994WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022995(
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 WDI_ControlBlockType* pWDICtx,
22997 WDI_EventInfoType* pEventData
22998)
22999{
23000 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23001 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023002 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 wpt_uint16 usDataOffset = 0;
23004 wpt_uint16 usSendSize = 0;
23005 tUpdateScanParams updateScanParams = {0};
23006
23007
23008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023010 -------------------------------------------------------------------------*/
23011 if (( NULL == pEventData ) ||
23012 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23013 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23014 {
23015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023019 }
23020
23021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23022 "Begin WDI Update Scan Parameters");
23023 /*-----------------------------------------------------------------------
23024 Get message buffer
23025 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023026 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023027 sizeof(updateScanParams),
23028 &pSendBuffer, &usDataOffset, &usSendSize))||
23029 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23030 {
23031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23032 "Unable to get send buffer in Update Scan Params req %x %x %x",
23033 pEventData, pwdiUpdateScanParams, wdiUpdateScanParamsCb);
23034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023036 }
23037
23038 //
23039 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23040 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023041 if ( pWDICtx->wlanVersion.revision < 1 )
23042 {
23043 WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
23044 &pSendBuffer, &usSendSize);
23045 }
23046 else
23047 {
23048 WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23049 &pSendBuffer, &usSendSize);
23050 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023051
Jeff Johnson295189b2012-06-20 16:38:30 -070023052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023053 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023054 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023055 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023056 wdiUpdateScanParamsCb, pEventData->pUserData,
23057 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023058}
23059
23060/**
23061 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023062
23063 @param pWDICtx: pointer to the WLAN DAL context
23064 pEventData: pointer to the event information structure
23065
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 @see
23067 @return Result of the function call
23068*/
23069WDI_Status
23070WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023071(
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 WDI_ControlBlockType* pWDICtx,
23073 WDI_EventInfoType* pEventData
23074)
23075{
23076 WDI_LowLevelIndType wdiInd;
23077 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23078
23079
23080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 -------------------------------------------------------------------------*/
23083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23084 ( NULL == pEventData->pEventData ))
23085 {
23086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023088 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023090 }
23091
23092 /*-------------------------------------------------------------------------
23093 Extract indication and send it to UMAC
23094 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023095 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23096 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023097 sizeof(tPrefNetwFoundParams));
23098
23099 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023100 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023101
23102 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23103
Jeff Johnsone7245742012-09-05 17:12:55 -070023104 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023105 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023106 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023107
Jeff Johnsone7245742012-09-05 17:12:55 -070023108 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23109 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023110 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23111
23112 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23113 prefNetwFoundInd.prefNetwFoundParams.rssi;
23114
23115 // DEBUG
23116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23117 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23118 wdiInd.wdiIndicationType,
23119 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23120 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23121
23122 /*Notify UMAC*/
23123 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070023124
23125 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023126}
23127
23128/**
23129 @brief Process PNO Rsp function (called when a
23130 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023131
23132 @param pWDICtx: pointer to the WLAN DAL context
23133 pEventData: pointer to the event information structure
23134
Jeff Johnson295189b2012-06-20 16:38:30 -070023135 @see
23136 @return Result of the function call
23137*/
23138WDI_Status
23139WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023140(
Jeff Johnson295189b2012-06-20 16:38:30 -070023141 WDI_ControlBlockType* pWDICtx,
23142 WDI_EventInfoType* pEventData
23143)
23144{
23145 WDI_Status wdiStatus;
23146 eHalStatus halStatus;
23147 WDI_PNOScanCb wdiPNOScanCb = NULL;
23148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23149
23150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023152 -------------------------------------------------------------------------*/
23153 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23154 ( NULL == pEventData->pEventData ))
23155 {
23156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023160 }
23161
23162
Jeff Johnsone7245742012-09-05 17:12:55 -070023163 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023164
23165 /*-------------------------------------------------------------------------
23166 Extract response and send it to UMAC
23167 -------------------------------------------------------------------------*/
23168 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023169 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023170
23171 /*Notify UMAC*/
23172 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23173
Jeff Johnsone7245742012-09-05 17:12:55 -070023174 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023175}/*WDI_ProcessSetPreferredNetworkRsp*/
23176
23177/**
23178 @brief Process RSSI Filter Rsp function (called when a
23179 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023180
23181 @param pWDICtx: pointer to the WLAN DAL context
23182 pEventData: pointer to the event information structure
23183
Jeff Johnson295189b2012-06-20 16:38:30 -070023184 @see
23185 @return Result of the function call
23186*/
23187WDI_Status
23188WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023189(
Jeff Johnson295189b2012-06-20 16:38:30 -070023190 WDI_ControlBlockType* pWDICtx,
23191 WDI_EventInfoType* pEventData
23192)
23193{
23194 WDI_Status wdiStatus;
23195 eHalStatus halStatus;
23196 WDI_RssiFilterCb wdiRssiFilterCb;
23197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23198
23199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023200 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023201 -------------------------------------------------------------------------*/
23202 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23203 ( NULL == pEventData->pEventData ))
23204 {
23205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023206 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023209 }
23210
Jeff Johnsone7245742012-09-05 17:12:55 -070023211 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023212
23213 /*-------------------------------------------------------------------------
23214 Extract response and send it to UMAC
23215 -------------------------------------------------------------------------*/
23216 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023217 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023218
23219 /*Notify UMAC*/
23220 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23221
Jeff Johnsone7245742012-09-05 17:12:55 -070023222 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023223}/*WDI_ProcessSetRssiFilterRsp*/
23224
23225/**
23226 @brief Process Update Scan Params Rsp function (called when a
23227 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023228
23229 @param pWDICtx: pointer to the WLAN DAL context
23230 pEventData: pointer to the event information structure
23231
Jeff Johnson295189b2012-06-20 16:38:30 -070023232 @see
23233 @return Result of the function call
23234*/
23235WDI_Status
23236WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023237(
Jeff Johnson295189b2012-06-20 16:38:30 -070023238 WDI_ControlBlockType* pWDICtx,
23239 WDI_EventInfoType* pEventData
23240)
23241{
23242 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023243 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023244 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023245 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23247
23248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023250 -------------------------------------------------------------------------*/
23251 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23252 ( NULL == pEventData->pEventData ))
23253 {
23254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023258 }
23259
23260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023261 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023262
Jeff Johnsone7245742012-09-05 17:12:55 -070023263 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023264
23265 /*-------------------------------------------------------------------------
23266 Extract response and send it to UMAC
23267 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023268 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23269 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 sizeof(halUpdScanParams.status));
23271
23272 uStatus = halUpdScanParams.status;
23273
23274 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023275 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023276
23277 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023278 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023279
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023281
23282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023283 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023284 halUpdScanParams.status);
23285
23286 /*Notify UMAC*/
23287 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23288
Jeff Johnsone7245742012-09-05 17:12:55 -070023289 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023290}
23291#endif // FEATURE_WLAN_SCAN_PNO
23292
23293#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023294WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023295WDI_8023MulticastListReq
23296(
23297 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23298 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23299 void* pUserData
23300)
23301{
23302 WDI_EventInfoType wdiEventData;
23303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23304
23305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023306 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023307
23308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023309 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023310 ------------------------------------------------------------------------*/
23311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23312 {
23313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23314 "WDI API call before module is initialized - Fail request");
23315
Jeff Johnsone7245742012-09-05 17:12:55 -070023316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023317 }
23318
23319 /*------------------------------------------------------------------------
23320 Fill in Event data and post to the Main FSM
23321 ------------------------------------------------------------------------*/
23322 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023323 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023324 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023325 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023326 wdiEventData.pUserData = pUserData;
23327
23328 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23329}
23330
Jeff Johnsone7245742012-09-05 17:12:55 -070023331WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023332WDI_ReceiveFilterSetFilterReq
23333(
23334 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23335 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23336 void* pUserData
23337)
23338{
23339 WDI_EventInfoType wdiEventData;
23340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23341
23342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023343 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023344
23345 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023346 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023347 ------------------------------------------------------------------------*/
23348 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23349 {
23350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23351 "WDI API call before module is initialized - Fail request");
23352
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 }
23355
23356 /*------------------------------------------------------------------------
23357 Fill in Event data and post to the Main FSM
23358 ------------------------------------------------------------------------*/
23359 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023360 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23361 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
23362 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams
Jeff Johnson295189b2012-06-20 16:38:30 -070023363 * sizeof(WDI_RcvPktFilterFieldParams) - 1);
Jeff Johnsone7245742012-09-05 17:12:55 -070023364 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023365 wdiEventData.pUserData = pUserData;
23366
23367
23368 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23369}
23370
Jeff Johnsone7245742012-09-05 17:12:55 -070023371WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023372WDI_FilterMatchCountReq
23373(
23374 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
23375 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
23376 void* pUserData
23377)
23378{
23379 WDI_EventInfoType wdiEventData;
23380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23381
23382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023383 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023384
23385 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023386 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023387 ------------------------------------------------------------------------*/
23388 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23389 {
23390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23391 "WDI API call before module is initialized - Fail request");
23392
Jeff Johnsone7245742012-09-05 17:12:55 -070023393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 }
23395
23396 /*------------------------------------------------------------------------
23397 Fill in Event data and post to the Main FSM
23398 ------------------------------------------------------------------------*/
23399 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023400 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023401 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023402 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023403 wdiEventData.pUserData = pUserData;
23404
23405
23406 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23407}
23408
Jeff Johnsone7245742012-09-05 17:12:55 -070023409WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023410WDI_ReceiveFilterClearFilterReq
23411(
23412 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
23413 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
23414 void* pUserData
23415)
23416{
23417 WDI_EventInfoType wdiEventData;
23418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23419
23420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023421 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023422
23423 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023424 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023425 ------------------------------------------------------------------------*/
23426 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23427 {
23428 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23429 "WDI API call before module is initialized - Fail request");
23430
Jeff Johnsone7245742012-09-05 17:12:55 -070023431 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023432 }
23433
23434 /*------------------------------------------------------------------------
23435 Fill in Event data and post to the Main FSM
23436 ------------------------------------------------------------------------*/
23437 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023440 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023441 wdiEventData.pUserData = pUserData;
23442
23443
23444 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23445}
23446
23447/**
23448 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023449
23450 @param pWDICtx: pointer to the WLAN DAL context
23451 pEventData: pointer to the event information structure
23452
Jeff Johnson295189b2012-06-20 16:38:30 -070023453 @see
23454 @return Result of the function call
23455*/
23456WDI_Status
23457WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023458(
Jeff Johnson295189b2012-06-20 16:38:30 -070023459 WDI_ControlBlockType* pWDICtx,
23460 WDI_EventInfoType* pEventData
23461)
23462{
23463 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
23464 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023465 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023466 wpt_uint16 usDataOffset = 0;
23467 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023468 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023469 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023470 wpt_uint8 ucCurrentBSSSesIdx = 0;
23471 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023472
23473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023474 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023475
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023476 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
23477 if( NULL == pRcvFltMcAddrListType )
23478 {
23479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23480 "Failed to alloc in WDI_Process8023MulticastListReq");
23481 return WDI_STATUS_E_FAILURE;
23482 }
23483
Jeff Johnson295189b2012-06-20 16:38:30 -070023484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023486 -------------------------------------------------------------------------*/
23487 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023488 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023489 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023490 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023491 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
23492 {
23493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023494 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023495 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023497 return WDI_STATUS_E_FAILURE;
23498 }
23499
23500 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23501 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
23502 &pBSSSes);
23503 if ( NULL == pBSSSes )
23504 {
23505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023506 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023507 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023509 }
23510
23511 /*-----------------------------------------------------------------------
23512 Get message buffer
23513 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023514 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23515 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023516 sizeof(tHalRcvFltMcAddrListType),
23517 &pSendBuffer, &usDataOffset, &usSendSize))||
23518 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
23519 {
23520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23521 "Unable to get send buffer in "
23522 "WDI_Process8023MulticastListReq() %x %x %x",
23523 pEventData, pwdiFltPktSetMcListReqParamsType,
23524 wdi8023MulticastListCb);
23525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023527 }
23528
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023529 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070023530 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023531 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023532 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023533 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070023534 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
23535 sizeof(tSirMacAddr));
23536 }
23537
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023538 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023539 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023540 pRcvFltMcAddrListType,
23541 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070023542
23543 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023544 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023545
23546
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023547 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023549 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023552 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023553 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023554}
23555
23556/**
23557 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023558
23559 @param pWDICtx: pointer to the WLAN DAL context
23560 pEventData: pointer to the event information structure
23561
Jeff Johnson295189b2012-06-20 16:38:30 -070023562 @see
23563 @return Result of the function call
23564*/
23565WDI_Status
23566WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023567(
Jeff Johnson295189b2012-06-20 16:38:30 -070023568 WDI_ControlBlockType* pWDICtx,
23569 WDI_EventInfoType* pEventData
23570)
23571{
23572 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
23573 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 wpt_uint16 usDataOffset = 0;
23576 wpt_uint16 usSendSize = 0;
23577 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023578 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023580 wpt_uint8 ucCurrentBSSSesIdx = 0;
23581 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023582 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
23583 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023584
23585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023586 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023587
23588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023590 -------------------------------------------------------------------------*/
23591 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023592 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070023593 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023594 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023595 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
23596 {
23597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023600 return WDI_STATUS_E_FAILURE;
23601 }
23602
23603 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23604 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
23605 &pBSSSes);
23606 if ( NULL == pBSSSes )
23607 {
23608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023609 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 }
23612
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023613 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
23614 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023615
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023616 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
23617 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23618 * sizeof(tHalSessionizedRcvPktFilterCfgType));
23619
23620 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
23621 usSessRcvPktFilterCfgSize);
23622
23623 if(NULL == pSessRcvPktFilterCfg)
23624 {
23625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23626 "%s: Failed to allocate memory for "
23627 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023628 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023629 WDI_ASSERT(0);
23630 return WDI_STATUS_E_FAILURE;
23631 }
23632
23633 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
23634
23635 /*-----------------------------------------------------------------------
23636 Get message buffer
23637 -----------------------------------------------------------------------*/
23638
23639 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
23640 usSessRcvPktFilterCfgSize,
23641 &pSendBuffer, &usDataOffset, &usSendSize))||
23642 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
23643 {
23644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23645 "Unable to get send buffer in "
23646 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23647 pEventData, pwdiSetRcvPktFilterReqInfo,
23648 wdiReceiveFilterSetFilterCb);
23649 WDI_ASSERT(0);
23650 wpalMemoryFree(pSessRcvPktFilterCfg);
23651 return WDI_STATUS_E_FAILURE;
23652 }
23653
23654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23655 "UsData Off %d UsSend %d cfg %d",usDataOffset,
23656 usSendSize,pSessRcvPktFilterCfg);
23657
23658 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23659 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23660 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23661 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
23662
23663 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
23664
23665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23666 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
23667 pSessRcvPktFilterCfg->filterType);
23668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23669 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
23670 pSessRcvPktFilterCfg->coleasceTime);
23671
23672 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
23673 {
23674 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
23675 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23676 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
23677 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23678 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
23679 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23680 pSessRcvPktFilterCfg->paramsData[i].dataLength =
23681 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
23682
23683 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
23684 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23685 8);
23686 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
23687 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23688 8);
23689
23690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23691 "Out:Proto %d Comp Flag %d \n",
23692 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
23693 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
23694
23695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23696 "Data Offset %d Data Len %d\n",
23697 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
23698 pSessRcvPktFilterCfg->paramsData[i].dataLength);
23699
23700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23701 "CData: %d:%d:%d:%d:%d:%d\n",
23702 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
23703 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
23704 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
23705 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
23706 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
23707 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
23708
23709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23710 "MData: %d:%d:%d:%d:%d:%d\n",
23711 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
23712 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
23713 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
23714 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
23715 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
23716 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
23717 }
23718
23719 wpalMemoryCopy( pSendBuffer+usDataOffset,
23720 pSessRcvPktFilterCfg,
23721 usSessRcvPktFilterCfgSize);
23722
23723
23724 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23725 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
23726
23727 wpalMemoryFree(pSessRcvPktFilterCfg);
23728
23729 }
23730 /*If SLM_SESSIONIZATION is not supported then do this */
23731 else
23732 {
23733 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
23734 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23735 * sizeof(tHalRcvPktFilterParams));
23736
23737 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070023738 usRcvPktFilterCfgSize);
23739
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023740 if(NULL == pRcvPktFilterCfg)
23741 {
23742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23743 "%s: Failed to allocate memory for "
23744 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023745 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023746 WDI_ASSERT(0);
23747 return WDI_STATUS_E_FAILURE;
23748 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023749
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023750 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023751
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023752 /*-----------------------------------------------------------------------
23753 Get message buffer
23754 -----------------------------------------------------------------------*/
23755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 usRcvPktFilterCfgSize,
23757 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023758 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
23759 {
23760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070023761 "Unable to get send buffer in "
23762 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23763 pEventData, pwdiSetRcvPktFilterReqInfo,
23764 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023765 WDI_ASSERT(0);
23766 wpalMemoryFree(pRcvPktFilterCfg);
23767 return WDI_STATUS_E_FAILURE;
23768 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023769
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023771 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070023772 usSendSize,usRcvPktFilterCfgSize);
23773
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023774 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23775 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23776 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23777 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070023778
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023780 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023781 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023783 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070023784 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070023785
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023786 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
23787 {
23788 pRcvPktFilterCfg->paramsData[i].protocolLayer =
23789 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23790 pRcvPktFilterCfg->paramsData[i].cmpFlag =
23791 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23792 pRcvPktFilterCfg->paramsData[i].dataOffset =
23793 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23794 pRcvPktFilterCfg->paramsData[i].dataLength =
23795 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070023796
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023797 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023798 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23799 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023800 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070023801 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23802 8);
23803
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023805 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070023806 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 pRcvPktFilterCfg->paramsData[i].cmpFlag);
23808
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23810 "Data Offset %d Data Len %d\n",
23811 pRcvPktFilterCfg->paramsData[i].dataOffset,
23812 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070023813
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23815 "CData: %d:%d:%d:%d:%d:%d\n",
23816 pRcvPktFilterCfg->paramsData[i].compareData[0],
23817 pRcvPktFilterCfg->paramsData[i].compareData[1],
23818 pRcvPktFilterCfg->paramsData[i].compareData[2],
23819 pRcvPktFilterCfg->paramsData[i].compareData[3],
23820 pRcvPktFilterCfg->paramsData[i].compareData[4],
23821 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070023822
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23824 "MData: %d:%d:%d:%d:%d:%d\n",
23825 pRcvPktFilterCfg->paramsData[i].dataMask[0],
23826 pRcvPktFilterCfg->paramsData[i].dataMask[1],
23827 pRcvPktFilterCfg->paramsData[i].dataMask[2],
23828 pRcvPktFilterCfg->paramsData[i].dataMask[3],
23829 pRcvPktFilterCfg->paramsData[i].dataMask[4],
23830 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
23831 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023832
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023833 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070023834 pRcvPktFilterCfg,
23835 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023836
23837
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023838 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23839 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023840
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023842 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023843 wpalMemoryFree(pRcvPktFilterCfg);
23844 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023846 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023847 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023848 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023850 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023851}
23852
23853/**
23854 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023855
23856 @param pWDICtx: pointer to the WLAN DAL context
23857 pEventData: pointer to the event information structure
23858
Jeff Johnson295189b2012-06-20 16:38:30 -070023859 @see
23860 @return Result of the function call
23861*/
23862WDI_Status
23863WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023864(
Jeff Johnson295189b2012-06-20 16:38:30 -070023865 WDI_ControlBlockType* pWDICtx,
23866 WDI_EventInfoType* pEventData
23867)
23868{
23869 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
23870 NULL;
23871 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
23872 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023873 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023874 wpt_uint16 usDataOffset = 0;
23875 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023876 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
23877 wpt_uint8 ucCurrentBSSSesIdx = 0;
23878 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023879
23880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023881 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023882
23883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023884 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 -------------------------------------------------------------------------*/
23886 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023887 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023888 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023889 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023890 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
23891 {
23892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023896 }
23897
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023898 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23899 pwdiRcvFltPktMatchCntReqParamsType->bssId,
23900 &pBSSSes);
23901 if ( NULL == pBSSSes )
23902 {
23903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023904 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023905 return WDI_STATUS_E_FAILURE;
23906 }
23907
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 /*-----------------------------------------------------------------------
23909 Get message buffer
23910 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023911 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23912 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023913 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023914 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023915 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070023916 {
23917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23918 "Unable to get send buffer in "
23919 "WDI_ProcessFilterMatchCountReq() %x %x %x",
23920 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
23921 wdiFilterMatchCountCb);
23922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 }
23925
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023926 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
23927 wpalMemoryCopy( pSendBuffer+usDataOffset,
23928 &rcvFltPktMatchCntReqParam,
23929 sizeof(rcvFltPktMatchCntReqParam));
23930
Jeff Johnson295189b2012-06-20 16:38:30 -070023931 //
23932 // Don't need to fill send buffer other than header
23933 //
23934 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023936
23937
23938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023939 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23942 wdiFilterMatchCountCb,
23943 pEventData->pUserData,
23944 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023945}
23946
23947/**
23948 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023949
23950 @param pWDICtx: pointer to the WLAN DAL context
23951 pEventData: pointer to the event information structure
23952
Jeff Johnson295189b2012-06-20 16:38:30 -070023953 @see
23954 @return Result of the function call
23955*/
23956WDI_Status
23957WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023958(
Jeff Johnson295189b2012-06-20 16:38:30 -070023959 WDI_ControlBlockType* pWDICtx,
23960 WDI_EventInfoType* pEventData
23961)
Jeff Johnsone7245742012-09-05 17:12:55 -070023962{
Jeff Johnson295189b2012-06-20 16:38:30 -070023963 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
23964 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023965 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023966 wpt_uint16 usDataOffset = 0;
23967 wpt_uint16 usSendSize = 0;
23968 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023969 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023970 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023971
23972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023973 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023974
23975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 -------------------------------------------------------------------------*/
23978 if (( NULL == pEventData ) ||
23979 ( NULL == (pwdiRcvFltPktClearReqParamsType =
23980 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023981 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023982 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
23983 {
23984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023987 return WDI_STATUS_E_FAILURE;
23988 }
23989
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023990 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070023991 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
23992 &pBSSSes);
23993 if ( NULL == pBSSSes )
23994 {
23995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023996 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023998 }
23999
24000 /*-----------------------------------------------------------------------
24001 Get message buffer
24002 -----------------------------------------------------------------------*/
24003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024004 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024005 sizeof(tHalRcvFltPktClearParam),
24006 &pSendBuffer, &usDataOffset, &usSendSize))||
24007 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24008 {
24009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24010 "Unable to get send buffer in "
24011 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24012 pEventData, pwdiRcvFltPktClearReqParamsType,
24013 wdiRcvFltPktClearFilterCb);
24014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024016 }
24017
24018
24019 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024023
Jeff Johnsone7245742012-09-05 17:12:55 -070024024 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24025 wpalMemoryCopy( pSendBuffer+usDataOffset,
24026 &rcvFltPktClearParam,
24027 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024028
24029 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024031
24032
24033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024034 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024035 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024036 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024037 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024038 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024039}
24040
24041/**
24042 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024043
24044 @param pWDICtx: pointer to the WLAN DAL context
24045 pEventData: pointer to the event information structure
24046
Jeff Johnson295189b2012-06-20 16:38:30 -070024047 @see
24048 @return Result of the function call
24049*/
24050WDI_Status
24051WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024052(
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 WDI_ControlBlockType* pWDICtx,
24054 WDI_EventInfoType* pEventData
24055)
24056{
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 eHalStatus halStatus;
24058 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024059 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24060 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24062
24063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024064 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024065
24066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024067 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024068 -------------------------------------------------------------------------*/
24069 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24070 ( NULL == pEventData->pEventData ))
24071 {
24072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024073 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024075 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024076 }
24077
Jeff Johnsone7245742012-09-05 17:12:55 -070024078 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024079
24080 /*-------------------------------------------------------------------------
24081 Extract response and send it to UMAC
24082 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024083 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24084 {
24085 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24086 pEventData->pEventData,
24087 sizeof(halRcvFltPktSetMcListRsp));
24088
24089 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24090 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24091 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24092 halRcvFltPktSetMcListRsp.bssIdx;
24093 }
24094 else
24095 {
24096 halStatus = *((eHalStatus*)pEventData->pEventData);
24097 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24098 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024099
24100 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024101 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024102
Jeff Johnsone7245742012-09-05 17:12:55 -070024103 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024104}
24105
24106/**
24107 @brief Process Set Rsp function (called when a
24108 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024109
24110 @param pWDICtx: pointer to the WLAN DAL context
24111 pEventData: pointer to the event information structure
24112
Jeff Johnson295189b2012-06-20 16:38:30 -070024113 @see
24114 @return Result of the function call
24115*/
24116WDI_Status
24117WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024118(
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 WDI_ControlBlockType* pWDICtx,
24120 WDI_EventInfoType* pEventData
24121)
24122{
Jeff Johnson295189b2012-06-20 16:38:30 -070024123 eHalStatus halStatus;
24124 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024125 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24126 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24128
24129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024130 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024131
24132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024133 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024134 -------------------------------------------------------------------------*/
24135 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24136 ( NULL == pEventData->pEventData ))
24137 {
24138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024139 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024142 }
24143
24144 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024145 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024146
24147 /*-------------------------------------------------------------------------
24148 Extract response and send it to UMAC
24149 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024150 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24151 {
24152 wpalMemoryCopy( &halSetPktFilterRspParams,
24153 pEventData->pEventData,
24154 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024155
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024156 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24157 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24158 }
24159 else
24160 {
24161 halStatus = *((eHalStatus*)pEventData->pEventData);
24162 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24163 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024164 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024165 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024166
Jeff Johnsone7245742012-09-05 17:12:55 -070024167 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024168}
24169
24170/**
24171 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024172
24173 @param pWDICtx: pointer to the WLAN DAL context
24174 pEventData: pointer to the event information structure
24175
Jeff Johnson295189b2012-06-20 16:38:30 -070024176 @see
24177 @return Result of the function call
24178*/
24179WDI_Status
24180WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024181(
Jeff Johnson295189b2012-06-20 16:38:30 -070024182 WDI_ControlBlockType* pWDICtx,
24183 WDI_EventInfoType* pEventData
24184)
24185{
Jeff Johnson295189b2012-06-20 16:38:30 -070024186 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024187 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024188 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24189 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024190
24191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24192
24193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024194 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024195
24196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024198 -------------------------------------------------------------------------*/
24199 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24200 ( NULL == pEventData->pEventData ))
24201 {
24202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024206 }
24207
Jeff Johnsone7245742012-09-05 17:12:55 -070024208 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024209
24210 /*-------------------------------------------------------------------------
24211 Extract response and send it to UMAC
24212 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024213 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24214 {
24215 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24216 pEventData->pEventData,
24217 sizeof(halRcvFltrPktMatachRsp));
24218
24219 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24220 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24221 }
24222 else
24223 {
24224 halStatus = *((eHalStatus*)pEventData->pEventData);
24225 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24226 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024227
24228 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024229 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024230
Jeff Johnsone7245742012-09-05 17:12:55 -070024231 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024232}
24233
24234/**
24235 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024236
24237 @param pWDICtx: pointer to the WLAN DAL context
24238 pEventData: pointer to the event information structure
24239
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 @see
24241 @return Result of the function call
24242*/
24243WDI_Status
24244WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024245(
Jeff Johnson295189b2012-06-20 16:38:30 -070024246 WDI_ControlBlockType* pWDICtx,
24247 WDI_EventInfoType* pEventData
24248)
24249{
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 eHalStatus halStatus;
24251 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024252 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24253 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24255
24256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024257 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024258
24259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024260 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024261 -------------------------------------------------------------------------*/
24262 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24263 ( NULL == pEventData->pEventData ))
24264 {
24265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024266 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024267 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 }
24270
24271 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024272 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024273
24274 /*-------------------------------------------------------------------------
24275 Extract response and send it to UMAC
24276 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024277 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24278 {
24279 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24280 pEventData->pEventData,
24281 sizeof(halRcvFltPktClearRspMsg));
24282
24283 wdiRcvFltPktClearRspParamsType.wdiStatus =
24284 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24285 wdiRcvFltPktClearRspParamsType.bssIdx =
24286 halRcvFltPktClearRspMsg.bssIdx;
24287 }
24288 else
24289 {
24290 halStatus = *((eHalStatus*)pEventData->pEventData);
24291 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24292 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024293
24294 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024295 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024296
Jeff Johnsone7245742012-09-05 17:12:55 -070024297 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024298}
24299#endif // WLAN_FEATURE_PACKET_FILTERING
24300
24301/**
24302 @brief Process Shutdown Rsp function
24303 There is no shutdown response comming from HAL
24304 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024305
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024308
24309 @see
24310 @return Result of the function call
24311*/
24312WDI_Status
24313WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024314(
Jeff Johnson295189b2012-06-20 16:38:30 -070024315 WDI_ControlBlockType* pWDICtx,
24316 WDI_EventInfoType* pEventData
24317)
24318{
24319 /*There is no shutdown response comming from HAL - function just kept for
24320 simmetry */
24321 WDI_ASSERT(0);
24322 return WDI_STATUS_SUCCESS;
24323}/*WDI_ProcessShutdownRsp*/
24324
24325/**
24326 @brief WDI_SetPowerParamsReq
24327
Jeff Johnsone7245742012-09-05 17:12:55 -070024328 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024330
Jeff Johnson295189b2012-06-20 16:38:30 -070024331 wdiPowerParamsCb: callback for passing back the response
24332 of the Set Power Params operation received from the
24333 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024334
Jeff Johnson295189b2012-06-20 16:38:30 -070024335 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024336 callback
24337
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 @return Result of the function call
24339*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024340WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024341WDI_SetPowerParamsReq
24342(
24343 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24344 WDI_SetPowerParamsCb wdiPowerParamsCb,
24345 void* pUserData
24346)
24347{
24348 WDI_EventInfoType wdiEventData;
24349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24350
24351 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024352 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 ------------------------------------------------------------------------*/
24354 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24355 {
24356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24357 "WDI API call before module is initialized - Fail request");
24358
Jeff Johnsone7245742012-09-05 17:12:55 -070024359 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 }
24361
24362 /*------------------------------------------------------------------------
24363 Fill in Event data and post to the Main FSM
24364 ------------------------------------------------------------------------*/
24365 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024366 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024367 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024368 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024369 wdiEventData.pUserData = pUserData;
24370
24371 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24372}/*WDI_SetPowerParamsReq*/
24373
24374/**
24375 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024376
24377 @param pWDICtx: pointer to the WLAN DAL context
24378 pEventData: pointer to the event information structure
24379
Jeff Johnson295189b2012-06-20 16:38:30 -070024380 @see
24381 @return Result of the function call
24382*/
24383WDI_Status
24384WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024385(
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 WDI_ControlBlockType* pWDICtx,
24387 WDI_EventInfoType* pEventData
24388)
24389{
24390 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
24391 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024392 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024393 wpt_uint16 usDataOffset = 0;
24394 wpt_uint16 usSendSize = 0;
24395 tSetPowerParamsType powerParams;
24396
24397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024399 -------------------------------------------------------------------------*/
24400 if (( NULL == pEventData ) ||
24401 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
24402 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
24403 {
24404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024408 }
24409
24410 /*-----------------------------------------------------------------------
24411 Get message buffer
24412 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024413 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024414 sizeof(powerParams),
24415 &pSendBuffer, &usDataOffset, &usSendSize))||
24416 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
24417 {
24418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24419 "Unable to get send buffer in Set PNO req %x %x %x",
24420 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
24421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024423 }
24424
24425 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070024426 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070024427 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
24428
24429 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024430 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070024431 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
24432
24433 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024434 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070024435 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
24436
24437 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070024438 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070024439 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
24440
24441 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070024442 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
24444
24445 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024446 powerParams.uBETInterval =
24447 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070024448
Jeff Johnsone7245742012-09-05 17:12:55 -070024449
24450 wpalMemoryCopy( pSendBuffer+usDataOffset,
24451 &powerParams,
24452 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024453
24454 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024455 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024456
24457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024458 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024459 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024460 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24461 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024462}
24463
24464/**
24465 @brief Process Power Params Rsp function (called when a
24466 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024467
24468 @param pWDICtx: pointer to the WLAN DAL context
24469 pEventData: pointer to the event information structure
24470
Jeff Johnson295189b2012-06-20 16:38:30 -070024471 @see
24472 @return Result of the function call
24473*/
24474WDI_Status
24475WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024476(
Jeff Johnson295189b2012-06-20 16:38:30 -070024477 WDI_ControlBlockType* pWDICtx,
24478 WDI_EventInfoType* pEventData
24479)
24480{
24481 WDI_Status wdiStatus;
24482 eHalStatus halStatus;
24483 WDI_SetPowerParamsCb wdiPowerParamsCb;
24484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24485
24486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024488 -------------------------------------------------------------------------*/
24489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24490 ( NULL == pEventData->pEventData ))
24491 {
24492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024496 }
24497
Jeff Johnsone7245742012-09-05 17:12:55 -070024498 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024499
24500 /*-------------------------------------------------------------------------
24501 Extract response and send it to UMAC
24502 -------------------------------------------------------------------------*/
24503 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024504 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024505
24506 /*Notify UMAC*/
24507 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24508
Jeff Johnsone7245742012-09-05 17:12:55 -070024509 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024510}/*WDI_ProcessSetPowerParamsRsp*/
24511
24512#ifdef WLAN_FEATURE_GTK_OFFLOAD
24513/**
24514 @brief WDI_GTKOffloadReq will be called when the upper MAC
24515 wants to set GTK Rekey Counter while in power save. Upon
24516 the call of this API the WLAN DAL will pack and send a
24517 HAL GTK offload request message to the lower RIVA
24518 sub-system if DAL is in state STARTED.
24519
24520 In state BUSY this request will be queued. Request won't
24521 be allowed in any other state.
24522
24523 WDI_PostAssocReq must have been called.
24524
24525 @param pwdiGtkOffloadParams: the GTK offload as specified
24526 by the Device Interface
24527
24528 wdiGtkOffloadCb: callback for passing back the response
24529 of the GTK offload operation received from the device
24530
24531 pUserData: user data will be passed back with the
24532 callback
24533
24534 @see WDI_PostAssocReq
24535 @return Result of the function call
24536*/
24537WDI_Status
24538WDI_GTKOffloadReq
24539(
24540 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
24541 WDI_GtkOffloadCb wdiGtkOffloadCb,
24542 void* pUserData
24543)
24544{
24545 WDI_EventInfoType wdiEventData = {0};
24546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24547
24548 /*------------------------------------------------------------------------
24549 Sanity Check
24550 ------------------------------------------------------------------------*/
24551 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24552 {
24553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24554 "WDI API call before module is initialized - Fail request");
24555
24556 return WDI_STATUS_E_NOT_ALLOWED;
24557 }
24558
24559 /*------------------------------------------------------------------------
24560 Fill in Event data and post to the Main FSM
24561 ------------------------------------------------------------------------*/
24562 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
24563 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070024564 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 wdiEventData.pCBfnc = wdiGtkOffloadCb;
24566 wdiEventData.pUserData = pUserData;
24567
24568 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24569}
24570
24571
24572/**
24573 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
24574 MAC wants to get GTK Rekey Counter while in power save.
24575 Upon the call of this API the WLAN DAL will pack and
24576 send a HAL GTK offload request message to the lower RIVA
24577 sub-system if DAL is in state STARTED.
24578
24579 In state BUSY this request will be queued. Request won't
24580 be allowed in any other state.
24581
24582 WDI_PostAssocReq must have been called.
24583
24584 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
24585 Information Message as specified by the
24586 Device Interface
24587
24588 wdiGtkOffloadGetInfoCb: callback for passing back the
24589 response of the GTK offload operation received from the
24590 device
24591
24592 pUserData: user data will be passed back with the
24593 callback
24594
24595 @see WDI_PostAssocReq
24596 @return Result of the function call
24597*/
24598WDI_Status
24599WDI_GTKOffloadGetInfoReq
24600(
24601 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
24602 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
24603 void* pUserData
24604)
24605{
24606 WDI_EventInfoType wdiEventData = {0};
24607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24608
24609 /*------------------------------------------------------------------------
24610 Sanity Check
24611 ------------------------------------------------------------------------*/
24612 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24613 {
24614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24615 "WDI API call before module is initialized - Fail request");
24616
24617 return WDI_STATUS_E_NOT_ALLOWED;
24618 }
24619
24620 /*------------------------------------------------------------------------
24621 Fill in Event data and post to the Main FSM
24622 ------------------------------------------------------------------------*/
24623 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
24624 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
24625 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
24626 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
24627 wdiEventData.pUserData = pUserData;
24628
24629 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24630}
24631
24632
24633/**
24634 @brief Process set GTK Offload Request function
24635
24636 @param pWDICtx: pointer to the WLAN DAL context
24637 pEventData: pointer to the event information structure
24638
24639 @see
24640 @return Result of the function call
24641*/
24642WDI_Status
24643WDI_ProcessGTKOffloadReq
24644(
24645 WDI_ControlBlockType* pWDICtx,
24646 WDI_EventInfoType* pEventData
24647)
24648{
24649 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
24650 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
24651 wpt_uint8* pSendBuffer = NULL;
24652 wpt_uint16 usDataOffset = 0;
24653 wpt_uint16 usSendSize = 0;
24654 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024655 wpt_uint8 ucCurrentSessionId = 0;
24656 WDI_BSSSessionType* pBSSSes = NULL;
24657
Jeff Johnson295189b2012-06-20 16:38:30 -070024658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24659
24660 /*-------------------------------------------------------------------------
24661 Sanity check
24662 -------------------------------------------------------------------------*/
24663 if (( NULL == pEventData ) ||
24664 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
24665 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
24666 {
24667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024669 WDI_ASSERT(0);
24670 return WDI_STATUS_E_FAILURE;
24671 }
24672
24673 /*-----------------------------------------------------------------------
24674 Get message buffer
24675 -----------------------------------------------------------------------*/
24676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
24677 sizeof(gtkOffloadReqParams),
24678 &pSendBuffer, &usDataOffset, &usSendSize))||
24679 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
24680 {
24681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24682 "Unable to get send buffer in GTK offload req %x %x %x",
24683 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
24684 WDI_ASSERT(0);
24685 return WDI_STATUS_E_FAILURE;
24686 }
24687
24688 //
24689 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
24690 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024691 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24692 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
24693 &pBSSSes);
24694 if ( NULL == pBSSSes )
24695 {
24696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024697 " %s : Association for this BSSID does not exist", __func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024698 return WDI_STATUS_E_FAILURE;
24699 }
24700
24701 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
24702
Jeff Johnson295189b2012-06-20 16:38:30 -070024703 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
24704 // Copy KCK
24705 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
24706 // Copy KEK
24707 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
24708 // Copy KeyReplayCounter
24709 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
24710
24711 wpalMemoryCopy( pSendBuffer+usDataOffset,
24712 &gtkOffloadReqParams,
24713 sizeof(gtkOffloadReqParams));
24714
24715 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
24716 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
24717
24718 /*-------------------------------------------------------------------------
24719 Send Get STA Request to HAL
24720 -------------------------------------------------------------------------*/
24721 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24722 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
24723}
24724
24725
24726/**
24727 @brief Process GTK Offload Get Information Request function
24728
24729 @param pWDICtx: pointer to the WLAN DAL context
24730 pEventData: pointer to the event information structure
24731
24732 @see
24733 @return Result of the function call
24734*/
24735WDI_Status
24736WDI_ProcessGTKOffloadGetInfoReq
24737(
24738 WDI_ControlBlockType* pWDICtx,
24739 WDI_EventInfoType* pEventData
24740)
24741{
24742 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
24743 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
24744 wpt_uint8* pSendBuffer = NULL;
24745 wpt_uint16 usDataOffset = 0;
24746 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024747 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
24748 wpt_uint8 ucCurrentSessionId = 0;
24749 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024750
24751 /*-------------------------------------------------------------------------
24752 Sanity check
24753 -------------------------------------------------------------------------*/
24754 if (( NULL == pEventData ) ||
24755 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
24756 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
24757 {
24758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024760 WDI_ASSERT(0);
24761 return WDI_STATUS_E_FAILURE;
24762 }
24763
24764 /*-----------------------------------------------------------------------
24765 Get message buffer
24766 -----------------------------------------------------------------------*/
24767 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024768 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024769 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024770 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070024771 {
24772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24773 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
24774 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
24775 WDI_ASSERT(0);
24776 return WDI_STATUS_E_FAILURE;
24777 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024778 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24779 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
24780 &pBSSSes);
24781 if ( NULL == pBSSSes )
24782 {
24783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024784 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024785 return WDI_STATUS_E_FAILURE;
24786 }
24787 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024788
24789 //
24790 // Don't need to fill send buffer other than header
24791 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024792 wpalMemoryCopy( pSendBuffer+usDataOffset,
24793 &halGtkOffloadGetInfoReqParams,
24794 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024795
24796 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
24797 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
24798
24799 /*-------------------------------------------------------------------------
24800 Send Get STA Request to HAL
24801 -------------------------------------------------------------------------*/
24802 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24803 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
24804}
24805
24806/**
24807 @brief Process host offload Rsp function (called when a
24808 response is being received over the bus from HAL)
24809
24810 @param pWDICtx: pointer to the WLAN DAL context
24811 pEventData: pointer to the event information structure
24812
24813 @see
24814 @return Result of the function call
24815*/
24816WDI_Status
24817WDI_ProcessGtkOffloadRsp
24818(
24819 WDI_ControlBlockType* pWDICtx,
24820 WDI_EventInfoType* pEventData
24821)
24822{
Jeff Johnson295189b2012-06-20 16:38:30 -070024823 eHalStatus halStatus;
24824 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024825 tHalGtkOffloadRspParams halGtkOffloadRspParams;
24826 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24828
24829 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
24830
24831 /*-------------------------------------------------------------------------
24832 Sanity check
24833 -------------------------------------------------------------------------*/
24834 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24835 ( NULL == pEventData->pEventData))
24836 {
24837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024838 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024839 WDI_ASSERT(0);
24840 return WDI_STATUS_E_FAILURE;
24841 }
24842
24843 /*-------------------------------------------------------------------------
24844 Extract response and send it to UMAC
24845 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024846 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24847 {
24848 wpalMemoryCopy( &halGtkOffloadRspParams,
24849 pEventData->pEventData,
24850 sizeof(halGtkOffloadRspParams));
24851
24852 wdiGtkOffloadRsparams.ulStatus =
24853 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
24854 wdiGtkOffloadRsparams.bssIdx =
24855 halGtkOffloadRspParams.bssIdx;
24856 }
24857 else
24858 {
24859 halStatus = *((eHalStatus*)pEventData->pEventData);
24860 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24861 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024862
24863 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024864 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024865
24866 return WDI_STATUS_SUCCESS;
24867}
24868
24869/**
24870 @brief Process GTK Offload Get Information Response function
24871
24872 @param pWDICtx: pointer to the WLAN DAL context
24873 pEventData: pointer to the event information structure
24874
24875 @see
24876 @return Result of the function call
24877*/
24878WDI_Status
24879WDI_ProcessGTKOffloadGetInfoRsp
24880(
24881 WDI_ControlBlockType* pWDICtx,
24882 WDI_EventInfoType* pEventData
24883)
24884{
Jeff Johnson295189b2012-06-20 16:38:30 -070024885 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024886 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024887 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
24888 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024889
24890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24891
24892 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
24893
24894 /*-------------------------------------------------------------------------
24895 Sanity check
24896 -------------------------------------------------------------------------*/
24897 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24898 ( NULL == pEventData->pEventData ))
24899 {
24900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024902 WDI_ASSERT(0);
24903 return WDI_STATUS_E_FAILURE;
24904 }
24905
24906 /*-------------------------------------------------------------------------
24907 Extract response and send it to UMAC
24908 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024909 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24910 {
24911 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
24912 pEventData->pEventData,
24913 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024914
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024915 wdiGtkOffloadGetInfoRsparams.ulStatus =
24916 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
24917 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
24918 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
24919 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
24920 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
24921 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
24922 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
24923 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
24924 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
24925 wdiGtkOffloadGetInfoRsparams.bssIdx =
24926 halGtkOffloadGetInfoRspParams.bssIdx;
24927 }
24928 else
24929 {
24930 halStatus = *((eHalStatus*)pEventData->pEventData);
24931 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24932 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024933 /*Notify UMAC*/
24934 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24935 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024936 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024937
24938 return WDI_STATUS_SUCCESS;
24939}
24940#endif // WLAN_FEATURE_GTK_OFFLOAD
24941
24942#ifdef WLAN_WAKEUP_EVENTS
24943WDI_Status
24944WDI_ProcessWakeReasonInd
24945(
24946 WDI_ControlBlockType* pWDICtx,
24947 WDI_EventInfoType* pEventData
24948)
24949{
24950 WDI_LowLevelIndType *pWdiInd;
24951 tpWakeReasonParams pWakeReasonParams;
24952 wpt_uint32 allocSize = 0;
24953
24954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024955 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024956
24957 /*-------------------------------------------------------------------------
24958 Sanity check
24959 -------------------------------------------------------------------------*/
24960 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24961 ( NULL == pEventData->pEventData ))
24962 {
24963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024965 WDI_ASSERT( 0 );
24966 return WDI_STATUS_E_FAILURE;
24967 }
24968
24969 /*-------------------------------------------------------------------------
24970 Extract indication and send it to UMAC
24971 -------------------------------------------------------------------------*/
24972 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
24973
24974 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
24975
24976 //Allocate memory for WDI_WakeReasonIndType structure
24977 pWdiInd = wpalMemoryAllocate(allocSize) ;
24978
24979 if(NULL == pWdiInd)
24980 {
24981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24982 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024983 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024984 WDI_ASSERT(0);
24985 return WDI_STATUS_E_FAILURE;
24986 }
24987
24988 wpalMemoryZero(pWdiInd, allocSize);
24989
24990 /* Fill in the indication parameters*/
24991 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
24992 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
24993 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
24994 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
24995 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
24996 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
24997 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
24998 &(pWakeReasonParams->aDataStart[0]),
24999 pWakeReasonParams->ulStoredDataLen);
25000
25001 /*Notify UMAC*/
25002 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25003
25004 //Free memory allocated for WDI_WakeReasonIndType structure
25005 wpalMemoryFree(pWdiInd);
25006
25007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025008 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025009
25010 return WDI_STATUS_SUCCESS;
25011}
25012#endif // WLAN_WAKEUP_EVENTS
25013
25014void WDI_GetWcnssCompiledApiVersion
25015(
25016 WDI_WlanVersionType *pWcnssApiVersion
25017)
25018{
25019 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25020 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25021 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25022 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25023}
25024
25025/**
25026 @brief Process Set TM Level Rsp function (called when a
25027 response is being received over the bus from HAL)
25028
25029 @param pWDICtx: pointer to the WLAN DAL context
25030 pEventData: pointer to the event information structure
25031
25032 @see
25033 @return Result of the function call
25034*/
25035WDI_Status
25036WDI_ProcessSetTmLevelRsp
25037(
25038 WDI_ControlBlockType* pWDICtx,
25039 WDI_EventInfoType* pEventData
25040)
25041{
25042 WDI_Status wdiStatus;
25043 eHalStatus halStatus;
25044 WDI_SetTmLevelCb wdiSetTmLevelCb;
25045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25046
25047 /*-------------------------------------------------------------------------
25048 Sanity check
25049 -------------------------------------------------------------------------*/
25050 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25051 ( NULL == pEventData->pEventData ))
25052 {
25053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025054 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 WDI_ASSERT(0);
25056 return WDI_STATUS_E_FAILURE;
25057 }
25058
25059 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25060
25061 /*-------------------------------------------------------------------------
25062 Extract response and send it to UMAC
25063 -------------------------------------------------------------------------*/
25064 halStatus = *((eHalStatus*)pEventData->pEventData);
25065 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25066
25067 /*Notify UMAC*/
25068 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25069
25070 return WDI_STATUS_SUCCESS;
25071}/*WDI_ProcessSetTmLevelRsp*/
25072
25073/**
25074 @brief Process Set Thermal Mitigation level Changed request
25075
25076 @param pWDICtx: pointer to the WLAN DAL context
25077 pEventData: pointer to the event information structure
25078
25079 @see
25080 @return Result of the function call
25081*/
25082WDI_Status
25083WDI_ProcessSetTmLevelReq
25084(
25085 WDI_ControlBlockType* pWDICtx,
25086 WDI_EventInfoType* pEventData
25087)
25088{
25089 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25090 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25091 wpt_uint8* pSendBuffer = NULL;
25092 wpt_uint16 usDataOffset = 0;
25093 wpt_uint16 usSendSize = 0;
25094 tSetThermalMitgationType halTmMsg;
25095
25096 /*-------------------------------------------------------------------------
25097 Sanity check
25098 -------------------------------------------------------------------------*/
25099 if (( NULL == pEventData ) ||
25100 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25101 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25102 {
25103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025104 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025105 WDI_ASSERT(0);
25106 return WDI_STATUS_E_FAILURE;
25107 }
25108
25109 /*-----------------------------------------------------------------------
25110 Get message buffer
25111 -----------------------------------------------------------------------*/
25112 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25113 sizeof(halTmMsg),
25114 &pSendBuffer, &usDataOffset, &usSendSize))||
25115 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25116 {
25117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25118 "Unable to get send buffer in Set PNO req %x %x %x",
25119 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25120 WDI_ASSERT(0);
25121 return WDI_STATUS_E_FAILURE;
25122 }
25123
25124 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25125 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25126
25127 wpalMemoryCopy( pSendBuffer+usDataOffset,
25128 &halTmMsg,
25129 sizeof(halTmMsg));
25130
25131 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25132 pWDICtx->pfncRspCB = NULL;
25133 /*-------------------------------------------------------------------------
25134 Send Get STA Request to HAL
25135 -------------------------------------------------------------------------*/
25136 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25137 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25138}
25139
25140/* Fill the value from the global features enabled array to the global capabilities
25141 * bitmap struct
25142 */
25143static void
25144FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25145{
25146 wpt_int8 i;
25147 for (i=0; i<len; i++)
25148 {
25149 setFeatCaps(fCaps, enabledFeat[i]);
25150 }
25151}
25152
25153/**
25154 @brief WDI_featureCapsExchangeReq
25155 Post feature capability bitmap exchange event.
25156 Host will send its own capability to FW in this req and
25157 expect FW to send its capability back as a bitmap in Response
25158
25159 @param
25160
25161 wdiFeatureCapsExchangeCb: callback called on getting the response.
25162 It is kept to mantain similarity between WDI reqs and if needed, can
25163 be used in future. Currently, It is set to NULL
25164
25165 pUserData: user data will be passed back with the
25166 callback
25167
25168 @see
25169 @return Result of the function call
25170*/
25171WDI_Status
25172WDI_featureCapsExchangeReq
25173(
25174 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25175 void* pUserData
25176)
25177{
25178 WDI_EventInfoType wdiEventData;
25179 wpt_int32 fCapsStructSize;
25180
25181 /*------------------------------------------------------------------------
25182 Sanity Check
25183 ------------------------------------------------------------------------*/
25184 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25185 {
25186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25187 "WDI API call before module is initialized - Fail request");
25188
25189 return WDI_STATUS_E_NOT_ALLOWED;
25190 }
25191
25192 /* Allocate memory separately for global variable carrying FW caps */
25193 fCapsStructSize = sizeof(tWlanFeatCaps);
25194 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25195 if ( NULL == gpHostWlanFeatCaps )
25196 {
25197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25198 "Cannot allocate memory for host capability info\n");
25199 WDI_ASSERT(0);
25200 return WDI_STATUS_MEM_FAILURE;
25201 }
25202
25203 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25204
25205 /*------------------------------------------------------------------------
25206 Fill in Event data and post to the Main FSM
25207 ------------------------------------------------------------------------*/
25208 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25209 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25211 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025212 gpHostWlanFeatCaps->featCaps[0],
25213 gpHostWlanFeatCaps->featCaps[1],
25214 gpHostWlanFeatCaps->featCaps[2],
25215 gpHostWlanFeatCaps->featCaps[3]
25216 );
25217
25218 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25219 wdiEventData.pEventData = gpHostWlanFeatCaps;
25220 wdiEventData.uEventDataSize = fCapsStructSize;
25221 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25222 wdiEventData.pUserData = pUserData;
25223
25224 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25225}
25226
25227/**
Yathishd8713192012-12-10 14:21:35 -080025228 @brief Disable Active mode offload in Host
25229
25230 @param void
25231 @see
25232 @return void
25233*/
25234void
25235WDI_disableCapablityFeature(wpt_uint8 feature_index)
25236{
25237 supportEnabledFeatures[feature_index] = 0;
25238 return;
25239}
25240
25241/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025242 @brief Process Host-FW Capability Exchange Request function
25243
25244 @param pWDICtx: pointer to the WLAN DAL context
25245 pEventData: pointer to the event information structure
25246
25247 @see
25248 @return Result of the function call
25249*/
25250WDI_Status
25251WDI_ProcessFeatureCapsExchangeReq
25252(
25253 WDI_ControlBlockType* pWDICtx,
25254 WDI_EventInfoType* pEventData
25255)
25256{
25257 wpt_uint8* pSendBuffer = NULL;
25258 wpt_uint16 usDataOffset = 0;
25259 wpt_uint16 usSendSize = 0;
25260 wpt_uint16 usLen = 0;
25261
25262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25263
25264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025265 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025266
25267 /*-------------------------------------------------------------------------
25268 Sanity check
25269 -------------------------------------------------------------------------*/
25270 /* Call back function is NULL since not required for cap exchange req */
25271 if (( NULL == pEventData ) ||
25272 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25273 {
25274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025276 WDI_ASSERT(0);
25277 return WDI_STATUS_E_FAILURE;
25278 }
25279
25280 /*-----------------------------------------------------------------------
25281 Get message buffer
25282 -----------------------------------------------------------------------*/
25283 usLen = sizeof(tWlanFeatCaps);
25284
25285 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25286 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25287 usLen,
25288 &pSendBuffer, &usDataOffset, &usSendSize))||
25289 ( usSendSize < (usDataOffset + usLen )))
25290 {
25291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25292 "Unable to get send buffer in feat caps exchange req %x %x",
25293 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25294 WDI_ASSERT(0);
25295 return WDI_STATUS_E_FAILURE;
25296 }
25297
25298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025299 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025300 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25301 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25302 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25303 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25304 );
25305
25306 /* Copy host caps after the offset in the send buffer */
25307 wpalMemoryCopy( pSendBuffer+usDataOffset,
25308 (tWlanFeatCaps *)pEventData->pEventData,
25309 usLen);
25310
25311 /*-------------------------------------------------------------------------
25312 Send Start Request to HAL
25313 -------------------------------------------------------------------------*/
25314 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25315 (WDI_StartRspCb)pEventData->pCBfnc,
25316 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25317
25318}/*WDI_ProcessFeatureCapsExchangeReq*/
25319
25320/**
25321 @brief Process Host-FW Capability Exchange Response function
25322
25323 @param pWDICtx: pointer to the WLAN DAL context
25324 pEventData: pointer to the event information structure
25325
25326 @see
25327 @return Result of the function call
25328*/
25329WDI_Status
25330WDI_ProcessFeatureCapsExchangeRsp
25331(
25332 WDI_ControlBlockType* pWDICtx,
25333 WDI_EventInfoType* pEventData
25334)
25335{
25336 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25337 wpt_int32 fCapsStructSize;
25338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25339
25340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025341 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025342
25343 /*-------------------------------------------------------------------------
25344 Sanity check
25345 -------------------------------------------------------------------------*/
25346 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25347 ( NULL == pEventData->pEventData ))
25348 {
25349 /* It will go here when riva is old (doesn't understand this msg) and host is new */
25350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025352 WDI_ASSERT(0);
25353 return WDI_STATUS_E_FAILURE;
25354 }
25355
25356 /* Allocate memory separately for global variable carrying FW caps */
25357 fCapsStructSize = sizeof(tWlanFeatCaps);
25358 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25359 if ( NULL == gpFwWlanFeatCaps )
25360 {
25361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25362 "Cannot allocate memory for host capability info\n");
25363 WDI_ASSERT(0);
25364 return WDI_STATUS_MEM_FAILURE;
25365 }
25366
25367 /*-------------------------------------------------------------------------
25368 Unpack HAL Response Message - the header was already extracted by the
25369 main Response Handling procedure
25370 -------------------------------------------------------------------------*/
25371 /*-------------------------------------------------------------------------
25372 Extract response and send it to UMAC
25373 -------------------------------------------------------------------------*/
25374
25375 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
25376 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070025377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25378 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025379 gpFwWlanFeatCaps->featCaps[0],
25380 gpFwWlanFeatCaps->featCaps[1],
25381 gpFwWlanFeatCaps->featCaps[2],
25382 gpFwWlanFeatCaps->featCaps[3]
25383 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025384
Jeff Johnson295189b2012-06-20 16:38:30 -070025385 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
25386
25387 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
25388 if (wdiFeatureCapsExchangeCb != NULL)
25389 wdiFeatureCapsExchangeCb(NULL, NULL);
25390
25391 return WDI_STATUS_SUCCESS;
25392}
25393
Mohit Khanna4a70d262012-09-11 16:30:12 -070025394#ifdef WLAN_FEATURE_11AC
25395WDI_Status
25396WDI_ProcessUpdateVHTOpModeRsp
25397(
25398 WDI_ControlBlockType* pWDICtx,
25399 WDI_EventInfoType* pEventData
25400)
25401{
25402 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25403 WDI_Status wdiStatus;
25404 eHalStatus halStatus;
25405
25406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25407
25408 /*-------------------------------------------------------------------------
25409 Sanity check
25410 -------------------------------------------------------------------------*/
25411 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25412 ( NULL == pEventData->pEventData))
25413 {
25414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025415 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025416 WDI_ASSERT(0);
25417 return WDI_STATUS_E_FAILURE;
25418 }
25419 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
25420
25421 /*-------------------------------------------------------------------------
25422 Extract response and send it to UMAC
25423 -------------------------------------------------------------------------*/
25424 halStatus = *((eHalStatus*)pEventData->pEventData);
25425 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25426
25427 /*Notify UMAC*/
25428 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
25429
25430 return WDI_STATUS_SUCCESS;
25431}
25432#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025433/**
25434 @brief WDI_getHostWlanFeatCaps
25435 WDI API that returns whether the feature passed to it as enum value in
25436 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
25437 variable storing host capability bitmap to find this. This can be used by
25438 other moduels to decide certain things like call different APIs based on
25439 whether a particular feature is supported.
25440
25441 @param
25442
25443 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
25444
25445 @see
25446 @return
25447 0 - if the feature is NOT supported in host
25448 any non-zero value - if the feature is SUPPORTED in host.
25449*/
25450wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
25451{
25452 wpt_uint8 featSupported = 0;
25453 if (gpHostWlanFeatCaps != NULL)
25454 {
25455 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
25456 }
25457 else
25458 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025460 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025461 }
25462 return featSupported;
25463}
25464
25465/**
25466 @brief WDI_getFwWlanFeatCaps
25467 WDI API that returns whether the feature passed to it as enum value in
25468 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
25469 variable storing host capability bitmap to find this. This can be used by
25470 other moduels to decide certain things like call different APIs based on
25471 whether a particular feature is supported.
25472
25473 @param
25474
25475 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
25476 in wlan_hal_msg.h.
25477
25478 @see
25479 @return
25480 0 - if the feature is NOT supported in FW
25481 any non-zero value - if the feature is SUPPORTED in FW.
25482*/
25483wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
25484{
25485 wpt_uint8 featSupported = 0;
25486 if (gpFwWlanFeatCaps != NULL)
25487 {
25488 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
25489 }
25490 else
25491 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025493 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025494 }
25495 return featSupported;
25496}
Mohit Khanna4a70d262012-09-11 16:30:12 -070025497
25498#ifdef WLAN_FEATURE_11AC
25499WDI_Status
25500WDI_ProcessUpdateVHTOpModeReq
25501(
25502 WDI_ControlBlockType* pWDICtx,
25503 WDI_EventInfoType* pEventData
25504)
25505{
25506 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
25507 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25508 wpt_uint8* pSendBuffer = NULL;
25509 wpt_uint16 usDataOffset = 0;
25510 wpt_uint16 usSendSize = 0;
25511
25512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25513
25514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025515 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025516
25517 /*-------------------------------------------------------------------------
25518 Sanity check
25519 -------------------------------------------------------------------------*/
25520 if (( NULL == pEventData ) ||
25521 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
25522 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
25523 {
25524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025525 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025526 WDI_ASSERT(0);
25527 return WDI_STATUS_E_FAILURE;
25528 }
25529
25530 /*-----------------------------------------------------------------------
25531 Get message buffer
25532 -----------------------------------------------------------------------*/
25533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
25534 sizeof(WDI_UpdateVHTOpMode),
25535 &pSendBuffer, &usDataOffset, &usSendSize))||
25536 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
25537 {
25538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25539 "Unable to get send buffer in update vht opMode req");
25540 WDI_ASSERT(0);
25541 return WDI_STATUS_E_FAILURE;
25542 }
25543
25544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25545 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
25546
25547 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
25548 sizeof(WDI_UpdateVHTOpMode));
25549
25550 /*-------------------------------------------------------------------------
25551 Send Start Request to HAL
25552 -------------------------------------------------------------------------*/
25553 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25554 wdiVHTOpModeCb,
25555 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
25556
25557}
25558
25559WDI_Status
25560WDI_UpdateVHTOpModeReq
25561(
25562 WDI_UpdateVHTOpMode *pData,
25563 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
25564 void* pUserData
25565)
25566{
25567 WDI_EventInfoType wdiEventData;
25568
25569 /*------------------------------------------------------------------------
25570 Sanity Check
25571 ------------------------------------------------------------------------*/
25572 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25573 {
25574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25575 "WDI API call before module is initialized - Fail request");
25576
25577 return WDI_STATUS_E_NOT_ALLOWED;
25578 }
25579
25580 /*------------------------------------------------------------------------
25581 Fill in Event data and post to the Main FSM
25582 ------------------------------------------------------------------------*/
25583 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
25584 wdiEventData.pEventData = pData;
25585 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
25586 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
25587 wdiEventData.pUserData = pUserData;
25588
25589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25590 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
25591
25592 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25593
25594}
25595#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025596
25597/**
25598 @brief WDI_TransportChannelDebug -
25599 Display DXE Channel debugging information
25600 User may request to display DXE channel snapshot
25601 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025602
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080025603 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025604 @param enableStallDetect : Enable stall detect feature
25605 This feature will take effect to data performance
25606 Not integrate till fully verification
25607 @see
25608 @return none
25609*/
25610void WDI_TransportChannelDebug
25611(
25612 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025613 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025614)
25615{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025616 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025617 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070025618}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025619/**
25620 @brief WDI_SsrTimerCB
25621 Callback function for SSR timer, if this is called then the graceful
25622 shutdown for Riva did not happen.
25623
25624 @param pUserData : user data to timer
25625
25626 @see
25627 @return none
25628*/
25629void
25630WDI_SsrTimerCB
25631(
25632 void *pUserData
25633)
25634{
25635 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
25636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25637
25638 if (NULL == pWDICtx )
25639 {
25640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025641 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025642 WDI_ASSERT(0);
25643 return;
25644 }
25645 wpalRivaSubystemRestart();
25646
25647 return;
25648
25649}/*WDI_SsrTimerCB*/