blob: da7ed5ba12281dba87e3589fdcc8e9c0fa04b978 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala92f07d82013-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
Yathish9f22e662012-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 Khanna698ba2a2012-12-04 15:08:18 -0800131 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800132#ifdef WLAN_SOFTAP_VSTA_FEATURE
133 ,SAP32STA
134#else
135 ,FEATURE_NOT_SUPPORTED
136#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800137#ifdef FEATURE_WLAN_TDLS
Yathish9f22e662012-12-10 14:21:35 -0800138 ,TDLS
139#else
140 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800141#endif
Viral Modid86bde22012-12-10 13:09:21 -0800142 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathish9f22e662012-12-10 14:21:35 -0800143#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
144 ,WLANACTIVE_OFFLOAD
145#else
146 ,FEATURE_NOT_SUPPORTED
147#endif
Mohit Khanna698ba2a2012-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 Modid86bde22012-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 */
Ravali85acf6b2012-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 Modid86bde22012-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;
Ravali85acf6b2012-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);
Ravali85acf6b2012-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
Ravali85acf6b2012-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
Ravali85acf6b2012-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
Ravali85acf6b2012-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);
Ravali85acf6b2012-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;
Ravali85acf6b2012-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
Ravali85acf6b2012-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;
Ravali85acf6b2012-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)*/
Ravali85acf6b2012-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;
Ravali85acf6b2012-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
Ravali85acf6b2012-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;
Ravali85acf6b2012-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)*/
Ravali85acf6b2012-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;
Ravali85acf6b2012-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
Ravali85acf6b2012-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;
Srinivasdaaec712012-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 Modid86bde22012-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;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019402 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070019403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19404
19405 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019406 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 ------------------------------------------------------------------------*/
19408 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019409 pWDICtx->pfncRspCB = pRspCb;
19410 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019411
19412 /*-----------------------------------------------------------------------
19413 Call the CTS to send this message over - free message afterwards
19414 - notify transport failure
19415 Note: CTS is reponsible for freeing the message buffer.
19416 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019417 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
19418 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
19419 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019422 "Failed to send message over the bus - catastrophic failure");
19423
Jeff Johnsond13512a2012-07-17 11:42:19 -070019424 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019425 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019426 else
19427 {
19428 /* even when message was placed in CTS deferred Q, we will treat it
19429 success but log this info
19430 */
19431 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
19432 {
19433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19434 "WDI_SendMsg: message placed in CTS deferred Q, expected "
19435 "response %s (%d)",
19436 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19437 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080019438 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019439 }
19440 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019441
Jeff Johnsond13512a2012-07-17 11:42:19 -070019442 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019443 if ( NULL != pWDICtx->wdiReqStatusCB )
19444 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019445 /*Inform originator whether request went through or not*/
19446 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
19447 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 pWDICtx->wdiReqStatusCB = NULL;
19449 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070019450 callback(wdiStatus, callbackContext);
19451
19452 /*For WDI requests which have registered a request callback,
19453 inform the WDA caller of the same via setting the return value
19454 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
19455 end up repeating the functonality in the req callback for the
19456 WDI_STATUS_E_FAILURE case*/
19457 if (wdiStatus == WDI_STATUS_E_FAILURE)
19458 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 }
19460
Jeff Johnsond13512a2012-07-17 11:42:19 -070019461 if ( wdiStatus == WDI_STATUS_SUCCESS )
19462 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019463 /*Start timer for the expected response */
19464 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019465
19466 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080019467 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070019468 }
19469 else
19470 {
Jeff Johnson902c9832012-12-10 14:28:09 -080019471 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070019472 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19473 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019474
Jeff Johnsond13512a2012-07-17 11:42:19 -070019475 return wdiStatus;
19476
Jeff Johnson295189b2012-06-20 16:38:30 -070019477}/*WDI_SendMsg*/
19478
19479
19480
19481/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019482 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019483 the bus using the control transport and saves some info
19484 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070019485
19486 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019487 pSendBuffer: buffer to be sent
19488 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019489
Jeff Johnson295189b2012-06-20 16:38:30 -070019490 @see
19491 @return Result of the function call
19492*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019494WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070019495(
19496 WDI_ControlBlockType* pWDICtx,
19497 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019498 wpt_uint32 usSendSize
19499)
19500{
19501 wpt_uint32 uStatus ;
19502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19503
19504 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019505 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019506 Note: CTS is reponsible for freeing the message buffer.
19507 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019508 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019509 (void*)pSendBuffer, usSendSize );
19510
19511 /*Inform Upper MAC about the outcome of the request*/
19512 if ( NULL != pWDICtx->wdiReqStatusCB )
19513 {
19514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19515 "Send indication status : %d", uStatus);
19516
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019517 /* even if CTS placed indication into its deferred Q, we treat it
19518 * as success and let CTS drain its queue as per smd interrupt to CTS
19519 */
19520 pWDICtx->wdiReqStatusCB( ((uStatus != eWLAN_PAL_STATUS_SUCCESS) && (uStatus != eWLAN_PAL_STATUS_E_RESOURCES)) ? WDI_STATUS_E_FAILURE: WDI_STATUS_SUCCESS,
Jeff Johnsone7245742012-09-05 17:12:55 -070019521 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019522 }
19523
19524 /*If sending of the message failed - it is considered catastrophic and
19525 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019526 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
19527 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
19528
Jeff Johnson295189b2012-06-20 16:38:30 -070019529 {
19530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070019531 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070019532
19533 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19534 return WDI_STATUS_E_FAILURE;
19535 }
19536
Jeff Johnsone7245742012-09-05 17:12:55 -070019537 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019538}/*WDI_SendIndication*/
19539
19540
19541/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019542 @brief WDI_DetectedDeviceError - called internally by DAL when
19543 it has detected a failure in the device
19544
19545 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019546 usErrorCode: error code detected by WDI or received
19547 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019548
Jeff Johnson295189b2012-06-20 16:38:30 -070019549 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070019550 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019551*/
19552void
19553WDI_DetectedDeviceError
19554(
19555 WDI_ControlBlockType* pWDICtx,
19556 wpt_uint16 usErrorCode
19557)
19558{
19559 WDI_LowLevelIndType wdiInd;
19560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19561
19562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19563 "Device Error detected code: %d - transitioning to stopped state",
19564 usErrorCode);
19565
19566 wpalMutexAcquire(&pWDICtx->wptMutex);
19567
19568 WDI_STATableStop(pWDICtx);
19569
19570 WDI_ResetAssocSessions(pWDICtx);
19571
19572 /*Set the expected state transition to stopped - because the device
19573 experienced a failure*/
19574 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
19575
19576 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019577 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070019578
Jeff Johnsone7245742012-09-05 17:12:55 -070019579 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019580
19581 /*TO DO: - there should be an attempt to reset the device here*/
19582
19583 wpalMutexRelease(&pWDICtx->wptMutex);
19584
19585 /*------------------------------------------------------------------------
19586 Notify UMAC if a handler is registered
19587 ------------------------------------------------------------------------*/
19588 if (pWDICtx->wdiLowLevelIndCB)
19589 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019590 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19591 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019592
19593 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
19594 }
19595}/*WDI_DetectedDeviceError*/
19596
19597/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019598 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070019599 we started on send message has expire - this should
19600 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070019601 reply - trigger catastrophic failure
19602 @param
19603
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070019605
19606 @see
19607 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019608*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019609void
Jeff Johnson295189b2012-06-20 16:38:30 -070019610WDI_ResponseTimerCB
19611(
19612 void *pUserData
19613)
19614{
19615 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
19616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19617
19618 if (NULL == pWDICtx )
19619 {
19620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019624 }
19625
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019626 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080019627 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019628
19629 /* If response timer is running at this time that means this timer
19630 * event is not for the last request but rather last-to-last request and
19631 * this timer event has come after we recevied respone for last-to-last
19632 * message
19633 */
19634 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
19635 {
19636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19637 "WDI_ResponseTimerCB: timer in running state on timer event, "
19638 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19639 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
19640 return;
19641 }
19642
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
19644 {
19645
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053019646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019647 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019648 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070019649 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019650 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19651 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019652 /* WDI timeout means Riva is not responding or SMD communication to Riva
19653 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019654 * is to initiate SSR from APPS
19655 * There is also an option to re-enable wifi, which will eventually
19656 * trigger SSR
19657 */
19658#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070019659 wpalWcnssResetIntr();
19660 /* if this timer fires, it means Riva did not receive the FIQ */
19661 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019662#else
19663 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19664 wpalWlanReload();
19665#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019666 }
19667 else
19668 {
19669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019670 "Timeout occurred but not waiting for any response %d "
19671 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19672 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19673 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019674 }
19675
19676 return;
19677
19678}/*WDI_ResponseTimerCB*/
19679
19680
19681/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019682 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019683
Jeff Johnsone7245742012-09-05 17:12:55 -070019684
19685 @param pWDICtx: pointer to the WLAN DAL context
19686 pEventData: pointer to the event information structure
19687
Jeff Johnson295189b2012-06-20 16:38:30 -070019688 @see
19689 @return Result of the function call
19690*/
19691WPT_INLINE WDI_Status
19692WDI_ProcessResponse
19693(
19694 WDI_ControlBlockType* pWDICtx,
19695 WDI_EventInfoType* pEventData
19696)
19697{
19698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19699
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 already checked these pointers
19702 ! - revisit this assumption */
19703 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
19704 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019705 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070019707 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070019708 WDI_getRespMsgString(pEventData->wdiResponse),
19709 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
19710 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
19711 }
19712 else
19713 {
19714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019715 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019716 pEventData->wdiResponse);
19717 return WDI_STATUS_E_NOT_IMPLEMENT;
19718 }
19719}/*WDI_ProcessResponse*/
19720
19721
19722/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019723 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070019724=========================================================================*/
19725
19726/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019727 @brief Utility function used by the DAL Core to help queue a
19728 request that cannot be processed right away.
19729 @param
19730
Jeff Johnson295189b2012-06-20 16:38:30 -070019731 pWDICtx: - pointer to the WDI control block
19732 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019733 queued
19734
19735 @see
19736 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019737*/
19738WDI_Status
19739WDI_QueuePendingReq
19740(
19741 WDI_ControlBlockType* pWDICtx,
19742 WDI_EventInfoType* pEventData
19743)
19744{
Jeff Johnsone7245742012-09-05 17:12:55 -070019745 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070019747 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19749
19750 if ( NULL == pEventDataQueue )
19751 {
19752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019753 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070019754 WDI_ASSERT(0);
19755 return WDI_STATUS_MEM_FAILURE;
19756 }
19757
19758 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19759 pEventDataQueue->pUserData = pEventData->pUserData;
19760 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19761 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019762 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019763
19764 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
19765 {
19766 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019767
Jeff Johnson295189b2012-06-20 16:38:30 -070019768 if ( NULL == pEventInfo )
19769 {
19770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019771 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070019772 WDI_ASSERT(0);
19773 wpalMemoryFree(pEventDataQueue);
19774 return WDI_STATUS_MEM_FAILURE;
19775 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019776
Jeff Johnson295189b2012-06-20 16:38:30 -070019777 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19778
19779 }
19780 pEventDataQueue->pEventData = pEventInfo;
19781
19782 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019783 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019784
Jeff Johnsone7245742012-09-05 17:12:55 -070019785 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019786
19787 return WDI_STATUS_SUCCESS;
19788}/*WDI_QueuePendingReq*/
19789
19790/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019791 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070019792 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070019793 @param
19794
19795 pMsg - pointer to the message
19796
19797 @see
19798 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019799*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019800void
Jeff Johnson295189b2012-06-20 16:38:30 -070019801WDI_PALCtrlMsgCB
19802(
19803 wpt_msg *pMsg
19804)
19805{
19806 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019807 WDI_ControlBlockType* pWDICtx = NULL;
19808 WDI_Status wdiStatus;
19809 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019810 void* pUserData;
19811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19812
19813 if (( NULL == pMsg )||
19814 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
19815 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
19816 {
19817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019818 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070019819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019820 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 }
19822
19823 /*Transition back to the state that we had before serialization
19824 - serialization transitions us to BUSY to stop any incomming requests
19825 ! TO DO L: possible race condition here if a request comes in between the
19826 state transition and the post function*/
19827
Jeff Johnsone7245742012-09-05 17:12:55 -070019828 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070019829
19830 /*-----------------------------------------------------------------------
19831 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070019832 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070019833 -----------------------------------------------------------------------*/
19834 switch ( pEventData->wdiRequest )
19835 {
19836
Jeff Johnsone7245742012-09-05 17:12:55 -070019837 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070019838 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
19839 break;
19840
Jeff Johnson295189b2012-06-20 16:38:30 -070019841 case WDI_NV_DOWNLOAD_REQ:
19842 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
19843 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
19844 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
19845 {
19846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019847 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19849 }
19850 else
19851 {
19852 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
19853 }
19854
19855 break;
19856
19857 default:
19858 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19859 break;
19860 }/*switch ( pEventData->wdiRequest )*/
19861
19862 if ( WDI_STATUS_SUCCESS != wdiStatus )
19863 {
19864 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
19865
19866 if ( NULL != pfnReqStatusCB )
19867 {
19868 /*Fail the request*/
19869 pfnReqStatusCB( wdiStatus, pUserData);
19870 }
19871 }
19872
19873 /* Free data - that was allocated when queueing*/
19874 if( pEventData != NULL )
19875 {
19876 if( pEventData->pEventData != NULL )
19877 {
19878 wpalMemoryFree(pEventData->pEventData);
19879 }
19880 wpalMemoryFree(pEventData);
19881 }
19882
19883 if( pMsg != NULL )
19884 {
19885 wpalMemoryFree(pMsg);
19886 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019887
Jeff Johnson295189b2012-06-20 16:38:30 -070019888}/*WDI_PALCtrlMsgCB*/
19889
19890/**
19891 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070019892 and schedule for execution a pending request
19893 @param
19894
Jeff Johnson295189b2012-06-20 16:38:30 -070019895 pWDICtx: - pointer to the WDI control block
19896 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019897 queued
19898
19899 @see
19900 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019901*/
19902WDI_Status
19903WDI_DequeuePendingReq
19904(
19905 WDI_ControlBlockType* pWDICtx
19906)
19907{
Jeff Johnsone7245742012-09-05 17:12:55 -070019908 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019909 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019910 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070019911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19912
Jeff Johnsone7245742012-09-05 17:12:55 -070019913 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019914
19915 if ( NULL == pNode )
19916 {
19917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070019918 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 return WDI_STATUS_SUCCESS;
19920 }
19921
19922 /*The node actually points to the 1st element inside the Event Data struct -
19923 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019924 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019925
19926 /*Serialize processing in the control thread
19927 !TO DO: - check to see if these are all the messages params that need
19928 to be filled in*/
19929 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
19930
19931 if ( NULL == palMsg )
19932 {
19933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019934 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070019935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019936 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019938 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019939 palMsg->callback = WDI_PALCtrlMsgCB;
19940 palMsg->ptr = pEventData;
19941
19942 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019943 palMsg->val = pWDICtx->uGlobalState;
19944
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 /*Transition back to BUSY as we need to handle a queued request*/
19946 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070019947
Jeff Johnson295189b2012-06-20 16:38:30 -070019948 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
19949
19950 return WDI_STATUS_PENDING;
19951}/*WDI_DequeuePendingReq*/
19952
19953
19954/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019955 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019956 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070019957 away.- The assoc requests will be queued by BSSID
19958 @param
19959
Jeff Johnson295189b2012-06-20 16:38:30 -070019960 pWDICtx: - pointer to the WDI control block
19961 pEventData: pointer to the evnt info that needs to be queued
19962 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070019963
19964 @see
19965 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019966*/
19967WDI_Status
19968WDI_QueueNewAssocRequest
19969(
19970 WDI_ControlBlockType* pWDICtx,
19971 WDI_EventInfoType* pEventData,
19972 wpt_macAddr macBSSID
19973)
19974{
Jeff Johnsone7245742012-09-05 17:12:55 -070019975 wpt_uint8 i;
19976 WDI_BSSSessionType* pSession = NULL;
19977 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019978 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070019979 void* pEventInfo;
19980 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070019982
Jeff Johnsone7245742012-09-05 17:12:55 -070019983
19984 /*------------------------------------------------------------------------
19985 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070019986 ------------------------------------------------------------------------*/
19987 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
19988 {
19989 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
19990 {
19991 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019992 pSession = &pWDICtx->aBSSSessions[i];
19993 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070019994 }
19995 }
19996
19997 if ( i >= WDI_MAX_BSS_SESSIONS )
19998 {
19999 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020002
Jeff Johnson295189b2012-06-20 16:38:30 -070020003 /*------------------------------------------------------------------------
20004 Fill in the BSSID for this session and set the usage flag
20005 ------------------------------------------------------------------------*/
20006 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020007 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020008
20009 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020010 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020011 ------------------------------------------------------------------------*/
20012 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20013 if ( NULL == pEventDataQueue )
20014 {
20015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020016 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020017 WDI_ASSERT(0);
20018 return WDI_STATUS_MEM_FAILURE;
20019 }
20020
20021 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20022 if ( NULL == pSessionIdElement )
20023 {
20024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020025 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 WDI_ASSERT(0);
20027 wpalMemoryFree(pEventDataQueue);
20028 return WDI_STATUS_MEM_FAILURE;
20029 }
20030
20031 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20032 if ( NULL == pEventInfo )
20033 {
20034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020035 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 WDI_ASSERT(0);
20037 wpalMemoryFree(pSessionIdElement);
20038 wpalMemoryFree(pEventDataQueue);
20039 return WDI_STATUS_MEM_FAILURE;
20040 }
20041
20042 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20043 pEventDataQueue->pUserData = pEventData->pUserData;
20044 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20045 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020046 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020047
20048 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20049 pEventDataQueue->pEventData = pEventInfo;
20050
20051 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020052 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020053
20054 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020055 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020056
Jeff Johnsone7245742012-09-05 17:12:55 -070020057 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020058
20059 /*We need to maintain a separate list that keeps track of the order in which
20060 the new assoc requests are being queued such that we can start processing
20061 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020062 pSessionIdElement->ucIndex = i;
20063 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020064
20065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20066 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020067 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020068
20069 /*Return pending as this is what the status of the request is since it has
20070 been queued*/
20071 return WDI_STATUS_PENDING;
20072}/*WDI_QueueNewAssocRequest*/
20073
20074/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020075 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020076 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020077 away.- The assoc requests will be queued by BSSID
20078 @param
20079
Jeff Johnson295189b2012-06-20 16:38:30 -070020080 pWDICtx: - pointer to the WDI control block
20081 pSession: - session in which to queue
20082 pEventData: pointer to the event info that needs to be
20083 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020084
20085 @see
20086 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020087*/
20088WDI_Status
20089WDI_QueueAssocRequest
20090(
20091 WDI_ControlBlockType* pWDICtx,
20092 WDI_BSSSessionType* pSession,
20093 WDI_EventInfoType* pEventData
20094)
20095{
Jeff Johnsone7245742012-09-05 17:12:55 -070020096 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020097 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020098 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020100
20101 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020102 Sanity check
20103 ------------------------------------------------------------------------*/
20104 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20105 {
20106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020108
Jeff Johnsone7245742012-09-05 17:12:55 -070020109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020110 }
20111
20112 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020113 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 ------------------------------------------------------------------------*/
20115 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20116 if ( NULL == pEventDataQueue )
20117 {
20118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020119 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020120 WDI_ASSERT(0);
20121 return WDI_STATUS_MEM_FAILURE;
20122 }
20123
20124 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20125 if ( NULL == pEventInfo )
20126 {
20127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20128 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020129 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020130 WDI_ASSERT(0);
20131 wpalMemoryFree(pEventDataQueue);
20132 return WDI_STATUS_MEM_FAILURE;
20133 }
20134
20135 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20136 pEventDataQueue->pUserData = pEventData->pUserData;
20137 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20138 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020139 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020140 pEventDataQueue->pEventData = pEventInfo;
20141
20142 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20143
20144 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020145 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020146
20147 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020148 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020149
Jeff Johnsone7245742012-09-05 17:12:55 -070020150 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020151
20152 /*The result of this operation is pending because the request has been
20153 queued and it will be processed at a later moment in time */
20154 return WDI_STATUS_PENDING;
20155}/*WDI_QueueAssocRequest*/
20156
20157/**
20158 @brief Utility function used by the DAL Core to help dequeue
20159 an association request that was pending
20160 The request will be queued up in front of the main
20161 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020162 @param
20163
Jeff Johnson295189b2012-06-20 16:38:30 -070020164 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020165
20166
20167 @see
20168 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020169*/
20170WDI_Status
20171WDI_DequeueAssocRequest
20172(
20173 WDI_ControlBlockType* pWDICtx
20174)
20175{
Jeff Johnsone7245742012-09-05 17:12:55 -070020176 wpt_list_node* pNode = NULL;
20177 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020178 WDI_BSSSessionType* pSession;
20179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020180
20181 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020182 Sanity check
20183 ------------------------------------------------------------------------*/
20184 if ( NULL == pWDICtx )
20185 {
20186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020188
Jeff Johnsone7245742012-09-05 17:12:55 -070020189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020190 }
20191
20192 /*------------------------------------------------------------------------
20193 An association has been completed => a new association can occur
20194 Check to see if there are any pending associations ->
20195 If so , transfer all the pending requests into the busy queue for
20196 processing
20197 These requests have arrived prior to the requests in the busy queue
20198 (bc they needed to be processed in order to be placed in this queue)
20199 => they will be placed at the front of the busy queue
20200 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020201 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020202
20203 if ( NULL == pNode )
20204 {
20205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020206 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 return WDI_STATUS_SUCCESS;
20208 }
20209
20210 /*The node actually points to the 1st element inside the Session Id struct -
20211 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020212 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020213
20214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20215 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20216
20217 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20218 {
20219 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020220
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020222 the front of the main waiting queue for subsequent execution*/
20223 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020224 while ( NULL != pNode )
20225 {
20226 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020227 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20228 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020230 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020231 }
20232 else
20233 {
20234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020235 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 WPAL_ASSERT(0);
20237 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020238 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020239 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020240
Jeff Johnson295189b2012-06-20 16:38:30 -070020241 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20242 wpalMemoryFree(pSessionIdElement);
20243 return WDI_STATUS_SUCCESS;
20244}/*WDI_DequeueAssocRequest*/
20245
20246/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020247 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020248 pending requests - all req cb will be called with
20249 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020250 @param
20251
Jeff Johnson295189b2012-06-20 16:38:30 -070020252 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020253
20254 @see
20255 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020256*/
20257WDI_Status
20258WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020259(
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 WDI_ControlBlockType* pWDICtx
20261)
20262{
Jeff Johnsone7245742012-09-05 17:12:55 -070020263 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020264 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020265 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020266 void* pUserData;
20267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20268
Jeff Johnsone7245742012-09-05 17:12:55 -070020269 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020270
20271 /*------------------------------------------------------------------------
20272 Go through all the requests and fail them - this will only be called
20273 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020274 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 ------------------------------------------------------------------------*/
20276 while( pNode )
20277 {
20278 /*The node actually points to the 1st element inside the Event Data struct -
20279 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020280 pEventDataQueue = (WDI_EventInfoType*)pNode;
20281
Jeff Johnson295189b2012-06-20 16:38:30 -070020282 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20283 if ( NULL != pfnReqStatusCB )
20284 {
20285 /*Fail the request*/
20286 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20287 }
20288 /* Free data - that was allocated when queueing */
20289 if ( pEventDataQueue->pEventData != NULL )
20290 {
20291 wpalMemoryFree(pEventDataQueue->pEventData);
20292 }
20293 wpalMemoryFree(pEventDataQueue);
20294
20295 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20296 {
20297 break;
20298 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020299 }
20300
Jeff Johnson295189b2012-06-20 16:38:30 -070020301 return WDI_STATUS_SUCCESS;
20302}/*WDI_ClearPendingRequests*/
20303
20304/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020305 @brief Helper routine used to init the BSS Sessions in the WDI control block
20306
20307
20308 @param pWDICtx: pointer to the WLAN DAL context
20309
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 @see
20311*/
20312void
20313WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020314(
Jeff Johnson295189b2012-06-20 16:38:30 -070020315 WDI_ControlBlockType* pWDICtx
20316)
20317{
Jeff Johnsone7245742012-09-05 17:12:55 -070020318 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20320
20321 /*-------------------------------------------------------------------------
20322 No Sanity check
20323 -------------------------------------------------------------------------*/
20324 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20325 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020326 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020327 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20328 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20329 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20330 }
20331}/*WDI_ResetAssocSessions*/
20332
20333/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020334 @brief Helper routine used to find a session based on the BSSID
20335
20336
20337 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020338 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020339 pSession: pointer to the session (if found)
20340
Jeff Johnson295189b2012-06-20 16:38:30 -070020341 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020342 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020343*/
20344wpt_uint8
20345WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020346(
Jeff Johnson295189b2012-06-20 16:38:30 -070020347 WDI_ControlBlockType* pWDICtx,
20348 wpt_macAddr macBSSID,
20349 WDI_BSSSessionType** ppSession
20350)
20351{
Jeff Johnsone7245742012-09-05 17:12:55 -070020352 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20354
20355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020356 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020357 -------------------------------------------------------------------------*/
20358 if ( NULL == ppSession )
20359 {
20360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020361 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020362 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020363 }
20364
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020366
Jeff Johnsone7245742012-09-05 17:12:55 -070020367 /*------------------------------------------------------------------------
20368 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 ------------------------------------------------------------------------*/
20370 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20371 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020372 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20373 (eWLAN_PAL_TRUE ==
20374 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20375 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020376 {
20377 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020378 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020379 return i;
20380 }
20381 }
20382
Jeff Johnsone7245742012-09-05 17:12:55 -070020383 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020384}/*WDI_FindAssocSession*/
20385
20386/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020387 @brief Helper routine used to find a session based on the BSSID
20388
20389
20390 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020391 ucBSSIdx: BSS Index of the session
20392 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020393
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020395 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020396*/
20397wpt_uint8
20398WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020399(
Jeff Johnson295189b2012-06-20 16:38:30 -070020400 WDI_ControlBlockType* pWDICtx,
20401 wpt_uint16 ucBSSIdx,
20402 WDI_BSSSessionType** ppSession
20403)
20404{
Jeff Johnsone7245742012-09-05 17:12:55 -070020405 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20407
20408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020410 -------------------------------------------------------------------------*/
20411 if ( NULL == ppSession )
20412 {
20413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020414 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020415 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020416 }
20417
Jeff Johnsone7245742012-09-05 17:12:55 -070020418 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020419
Jeff Johnsone7245742012-09-05 17:12:55 -070020420 /*------------------------------------------------------------------------
20421 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020422 ------------------------------------------------------------------------*/
20423 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20424 {
20425 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
20426 {
20427 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020428 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020429 return i;
20430 }
20431 }
20432
Jeff Johnsone7245742012-09-05 17:12:55 -070020433 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020434}/*WDI_FindAssocSessionByBSSIdx*/
20435
20436/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020437 @brief Helper routine used to find a session based on the BSSID
20438
20439
20440 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020441 ucBSSIdx: BSS Index of the session
20442 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020443
Jeff Johnson295189b2012-06-20 16:38:30 -070020444 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020445 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020446*/
20447wpt_uint8
20448WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020449(
Jeff Johnson295189b2012-06-20 16:38:30 -070020450 WDI_ControlBlockType* pWDICtx,
20451 wpt_uint16 usIdx,
20452 WDI_BSSSessionType** ppSession
20453)
20454{
20455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20456
20457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020459 -------------------------------------------------------------------------*/
20460 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
20461 {
20462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020463 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020464 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020465 }
20466
20467 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020468 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070020469
20470 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020471
Jeff Johnson295189b2012-06-20 16:38:30 -070020472}/*WDI_FindAssocSessionByBSSIdx*/
20473
20474/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020475 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020477
20478
20479 @param pWDICtx: pointer to the WLAN DAL context
20480 pSession: pointer to the session (if found)
20481
Jeff Johnson295189b2012-06-20 16:38:30 -070020482 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020483 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020484*/
20485wpt_uint8
20486WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070020487(
Jeff Johnson295189b2012-06-20 16:38:30 -070020488 WDI_ControlBlockType* pWDICtx,
20489 WDI_BSSSessionType** ppSession
20490)
20491{
Jeff Johnsone7245742012-09-05 17:12:55 -070020492 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 -------------------------------------------------------------------------*/
20497 if ( NULL == ppSession )
20498 {
20499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020500 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020501 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020502 }
20503
Jeff Johnsone7245742012-09-05 17:12:55 -070020504 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020505
Jeff Johnsone7245742012-09-05 17:12:55 -070020506 /*------------------------------------------------------------------------
20507 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 ------------------------------------------------------------------------*/
20509 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20510 {
20511 if ( ! pWDICtx->aBSSSessions[i].bInUse )
20512 {
20513 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020514 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020515 return i;
20516 }
20517 }
20518
Jeff Johnsone7245742012-09-05 17:12:55 -070020519 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020520}/*WDI_FindEmptySession*/
20521
20522
20523/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020524 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070020525 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020526
20527
20528 @param pWDICtx: pointer to the WLAN DAL context
20529
Jeff Johnson295189b2012-06-20 16:38:30 -070020530 @see
20531 @return Number of sessions in use
20532*/
20533wpt_uint8
20534WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070020535(
Jeff Johnson295189b2012-06-20 16:38:30 -070020536 WDI_ControlBlockType* pWDICtx
20537)
20538{
Jeff Johnsone7245742012-09-05 17:12:55 -070020539 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020541
20542 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020543 Count all sessions in use
20544 ------------------------------------------------------------------------*/
20545 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20546 {
20547 if ( pWDICtx->aBSSSessions[i].bInUse )
20548 {
20549 ucCount++;
20550 }
20551 }
20552
Jeff Johnsone7245742012-09-05 17:12:55 -070020553 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070020554}/*WDI_GetActiveSessionsCount*/
20555
20556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020557 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020558 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020559
20560
20561 @param pWDICtx: pointer to the WLAN DAL context
20562 pSession: pointer to the session (if found)
20563
Jeff Johnson295189b2012-06-20 16:38:30 -070020564 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020565 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020566*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020567void
Jeff Johnson295189b2012-06-20 16:38:30 -070020568WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020569(
Jeff Johnson295189b2012-06-20 16:38:30 -070020570 WDI_ControlBlockType* pWDICtx,
20571 WDI_BSSSessionType* ppSession
20572)
20573{
20574 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020575 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 -------------------------------------------------------------------------*/
20577 if ( NULL == ppSession )
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 Johnsone7245742012-09-05 17:12:55 -070020581 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020582 }
20583
Jeff Johnsone7245742012-09-05 17:12:55 -070020584 /*------------------------------------------------------------------------
20585 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 ------------------------------------------------------------------------*/
20587 wpal_list_destroy(&ppSession->wptPendingQueue);
20588 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070020589 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
20590 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
20592 wpal_list_init(&ppSession->wptPendingQueue);
20593
20594}/*WDI_DeleteSession*/
20595
20596/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020597 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070020598 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070020599 @param
20600
Jeff Johnson295189b2012-06-20 16:38:30 -070020601 WDI_AddStaParams: - pointer to the WDI Add STA params
20602 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020603
20604 @see
20605 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070020606*/
20607void
20608WDI_AddBcastSTAtoSTATable
20609(
20610 WDI_ControlBlockType* pWDICtx,
20611 WDI_AddStaParams * staParams,
20612 wpt_uint16 usBcastStaIdx
20613)
20614{
20615 WDI_AddStaParams wdiAddSTAParam = {0};
20616 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
20617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20618
20619 /*---------------------------------------------------------------------
20620 Sanity check
20621 ---------------------------------------------------------------------*/
20622 if ( NULL == staParams )
20623 {
20624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020625 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020626
Jeff Johnsone7245742012-09-05 17:12:55 -070020627 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 }
20629
20630 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
20631 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
20632 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
20633 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
20634 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
20635 wdiAddSTAParam.dpuSig = staParams->dpuSig;
20636 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
20637 WDI_MAC_ADDR_LEN );
20638 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
20639 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
20640 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
20641 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
20642 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
20643 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
20644 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020645
Jeff Johnson295189b2012-06-20 16:38:30 -070020646 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
20647}
20648
20649/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020650 @brief NV blob will be divided into fragments of size 4kb and
20651 Sent to HAL
20652
20653 @param pWDICtx: pointer to the WLAN DAL context
20654 pEventData: pointer to the event information structure
20655
Jeff Johnson295189b2012-06-20 16:38:30 -070020656 @see
20657 @return Result of the function call
20658 */
20659
20660WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020661(
Jeff Johnson295189b2012-06-20 16:38:30 -070020662 WDI_ControlBlockType* pWDICtx,
20663 WDI_EventInfoType* pEventData
20664)
20665{
20666
20667 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
20668 wpt_uint8* pSendBuffer = NULL;
20669 wpt_uint16 usDataOffset = 0;
20670 wpt_uint16 usSendSize = 0;
20671 wpt_uint16 usCurrentFragmentSize =0;
20672 wpt_uint8* pSrcBuffer = NULL;
20673 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
20674 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20675
20676 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
20677 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
20678 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
20679
Jeff Johnsone7245742012-09-05 17:12:55 -070020680 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070020681 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
20682
20683 /* Update the current Fragment Number */
20684 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
20685
20686 /*Update the HAL REQ structure */
20687 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
20688 halNvImgDownloadParam.nvImageReqParams.fragNumber =
20689 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
20690
20691 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070020692 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 image will be sent to HAL*/
20694
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070020697 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020698 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070020699 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070020700 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
20701 usCurrentFragmentSize = FRAGMENT_SIZE;
20702
20703 /*Update the HAL REQ structure */
20704 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
20705 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
20706
20707 }
20708 else
Jeff Johnsone7245742012-09-05 17:12:55 -070020709 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 usCurrentFragmentSize = FRAGMENT_SIZE;
20711
20712 /*Update the HAL REQ structure */
20713 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
20714 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
20715 }
20716
20717 /*-----------------------------------------------------------------------
20718 Get message buffer
20719 -----------------------------------------------------------------------*/
20720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
20721 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
20722 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020723 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
20725 {
20726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20727 "Unable to get send buffer in NV Download req %x %x ",
20728 pEventData, pwdiNvDownloadReqParams);
20729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020731 }
20732
20733 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020735 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
20736
20737 /* Appending the NV image fragment */
20738 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
20739 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
20740 usCurrentFragmentSize);
20741
20742 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020743 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020744
Jeff Johnsone7245742012-09-05 17:12:55 -070020745 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20746 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020747 WDI_NV_DOWNLOAD_RESP);
20748
20749}
Jeff Johnsone7245742012-09-05 17:12:55 -070020750/*============================================================================
20751 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070020752 ============================================================================*/
20753/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020754 @brief Helper routine used to find a session based on the BSSID
20755 @param pContext: pointer to the WLAN DAL context
20756 @param pDPContext: pointer to the Datapath context
20757
Jeff Johnson295189b2012-06-20 16:38:30 -070020758 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020759 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070020760*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020761WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020762WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
20763{
20764 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20765
20766 pCB->pDPContext = pDPContext;
20767 return;
20768}
20769
20770/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020771 @brief Helper routine used to find a session based on the BSSID
20772
20773
20774 @param pContext: pointer to the WLAN DAL context
20775
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 @see
20777 @return pointer to Datapath context
20778*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020779WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020780WDI_DS_GetDatapathContext (void *pContext)
20781{
20782 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20783 return pCB->pDPContext;
20784}
20785/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020786 @brief Helper routine used to find a session based on the BSSID
20787
20788
20789 @param pContext: pointer to the WLAN DAL context
20790 @param pDTDriverContext: pointer to the Transport Driver context
20791
Jeff Johnson295189b2012-06-20 16:38:30 -070020792 @see
20793 @return void
20794*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020795WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020796WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
20797{
20798 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20799
20800 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020801 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020802}
20803
20804/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020805 @brief Helper routine used to find a session based on the BSSID
20806
20807
20808 @param pWDICtx: pointer to the WLAN DAL context
20809
Jeff Johnson295189b2012-06-20 16:38:30 -070020810 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020811 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070020812*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020813WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020814WDT_GetTransportDriverContext (void *pContext)
20815{
20816 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020817 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070020818}
20819
Jeff Johnsone7245742012-09-05 17:12:55 -070020820/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 Helper inline converters
20822 ============================================================================*/
20823/*Convert WDI driver type into HAL driver type*/
20824WPT_STATIC WPT_INLINE WDI_Status
20825WDI_HAL_2_WDI_STATUS
20826(
20827 eHalStatus halStatus
20828)
20829{
Jeff Johnsone7245742012-09-05 17:12:55 -070020830 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 the chances of getting inlined*/
20832 switch( halStatus )
20833 {
20834 case eHAL_STATUS_SUCCESS:
20835 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20836 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20837 return WDI_STATUS_SUCCESS;
20838 case eHAL_STATUS_FAILURE:
20839 return WDI_STATUS_E_FAILURE;
20840 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070020841 return WDI_STATUS_MEM_FAILURE;
20842 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 default:
20845 return WDI_STATUS_DEV_INTERNAL_FAILURE;
20846 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020847
Jeff Johnsone7245742012-09-05 17:12:55 -070020848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020849}/*WDI_HAL_2_WDI_STATUS*/
20850
20851/*Convert WDI request type into HAL request type*/
20852WPT_STATIC WPT_INLINE tHalHostMsgType
20853WDI_2_HAL_REQ_TYPE
20854(
20855 WDI_RequestEnumType wdiReqType
20856)
20857{
Jeff Johnsone7245742012-09-05 17:12:55 -070020858 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020859 the chances of getting inlined*/
20860 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070020861 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020862 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020863 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020864 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020865 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020866 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020867 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020868 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020869 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020870 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020871 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020872 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020873 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020874 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020875 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020876 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020877 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020879 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020880 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020881 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020882 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020883 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020885 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020886 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020889 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020892 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020893 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 return WLAN_HAL_RMV_STAKEY_REQ;
20897 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020899 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020900 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020901 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020902 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020903 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020904 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020905 case WDI_DEL_BA_REQ:
20906 return WLAN_HAL_DEL_BA_REQ;
20907#ifdef FEATURE_WLAN_CCX
20908 case WDI_TSM_STATS_REQ:
20909 return WLAN_HAL_TSM_STATS_REQ;
20910#endif
20911 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020912 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020913 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020914 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020915 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020916 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020917 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020918 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 case WDI_ADD_BA_SESSION_REQ:
20922 return WLAN_HAL_ADD_BA_SESSION_REQ;
20923 case WDI_TRIGGER_BA_REQ:
20924 return WLAN_HAL_TRIGGER_BA_REQ;
20925 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020926 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020927 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020928 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
20930 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
20931 case WDI_SET_MAX_TX_POWER_REQ:
20932 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
20933#ifdef WLAN_FEATURE_P2P
20934 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
20935 return WLAN_HAL_SET_P2P_GONOA_REQ;
20936#endif
20937 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020938 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020939 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020940 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020942 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020943 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020944 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020945 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020946 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020947 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020948 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020949 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020950 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020951 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020952 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020953 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020954 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020955 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020956 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 case WDI_REM_BEACON_FILTER_REQ:
20958 return WLAN_HAL_REM_BCN_FILTER_REQ;
20959 case WDI_SET_RSSI_THRESHOLDS_REQ:
20960 return WLAN_HAL_SET_RSSI_THRESH_REQ;
20961 case WDI_HOST_OFFLOAD_REQ:
20962 return WLAN_HAL_HOST_OFFLOAD_REQ;
20963 case WDI_WOWL_ADD_BC_PTRN_REQ:
20964 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
20965 case WDI_WOWL_DEL_BC_PTRN_REQ:
20966 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
20967 case WDI_WOWL_ENTER_REQ:
20968 return WLAN_HAL_ENTER_WOWL_REQ;
20969 case WDI_WOWL_EXIT_REQ:
20970 return WLAN_HAL_EXIT_WOWL_REQ;
20971 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
20972 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
20973 case WDI_NV_DOWNLOAD_REQ:
20974 return WLAN_HAL_DOWNLOAD_NV_REQ;
20975 case WDI_FLUSH_AC_REQ:
20976 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
20977 case WDI_BTAMP_EVENT_REQ:
20978 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
20979#ifdef WLAN_FEATURE_VOWIFI_11R
20980 case WDI_AGGR_ADD_TS_REQ:
20981 return WLAN_HAL_AGGR_ADD_TS_REQ;
20982#endif /* WLAN_FEATURE_VOWIFI_11R */
20983#ifdef ANI_MANF_DIAG
20984 case WDI_FTM_CMD_REQ:
20985 return WLAN_HAL_PROCESS_PTT_REQ;
20986#endif /* ANI_MANF_DIAG */
20987 case WDI_ADD_STA_SELF_REQ:
20988 return WLAN_HAL_ADD_STA_SELF_REQ;
20989 case WDI_DEL_STA_SELF_REQ:
20990 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070020991#ifdef FEATURE_OEM_DATA_SUPPORT
20992 case WDI_START_OEM_DATA_REQ:
20993 return WLAN_HAL_START_OEM_DATA_REQ;
20994#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070020995 case WDI_HOST_RESUME_REQ:
20996 return WLAN_HAL_HOST_RESUME_REQ;
20997 case WDI_HOST_SUSPEND_IND:
20998 return WLAN_HAL_HOST_SUSPEND_IND;
20999 case WDI_KEEP_ALIVE_REQ:
21000 return WLAN_HAL_KEEP_ALIVE_REQ;
21001
21002#ifdef FEATURE_WLAN_SCAN_PNO
21003 case WDI_SET_PREF_NETWORK_REQ:
21004 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21005 case WDI_SET_RSSI_FILTER_REQ:
21006 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21007 case WDI_UPDATE_SCAN_PARAMS_REQ:
21008 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21009#endif // FEATURE_WLAN_SCAN_PNO
21010 case WDI_SET_TX_PER_TRACKING_REQ:
21011 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21012#ifdef WLAN_FEATURE_PACKET_FILTERING
21013 case WDI_8023_MULTICAST_LIST_REQ:
21014 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21015 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021016 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021017 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21018 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21019 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21020 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21021#endif // WLAN_FEATURE_PACKET_FILTERING
21022 case WDI_HAL_DUMP_CMD_REQ:
21023 return WLAN_HAL_DUMP_COMMAND_REQ;
21024#ifdef WLAN_FEATURE_GTK_OFFLOAD
21025 case WDI_GTK_OFFLOAD_REQ:
21026 return WLAN_HAL_GTK_OFFLOAD_REQ;
21027 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21028 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21029#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21030
21031 case WDI_INIT_SCAN_CON_REQ:
21032 return WLAN_HAL_INIT_SCAN_CON_REQ;
21033 case WDI_SET_POWER_PARAMS_REQ:
21034 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21035 case WDI_SET_TM_LEVEL_REQ:
21036 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21037 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21038 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021039#ifdef WLAN_FEATURE_11AC
21040 case WDI_UPDATE_VHT_OP_MODE_REQ:
21041 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21042#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021043 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021044 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021046
Jeff Johnson295189b2012-06-20 16:38:30 -070021047}/*WDI_2_HAL_REQ_TYPE*/
21048
21049/*Convert WDI response type into HAL response type*/
21050WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21051HAL_2_WDI_RSP_TYPE
21052(
21053 tHalHostMsgType halMsg
21054)
21055{
Jeff Johnsone7245742012-09-05 17:12:55 -070021056 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021057 the chances of getting inlined*/
21058 switch( halMsg )
21059 {
21060 case WLAN_HAL_START_RSP:
21061 return WDI_START_RESP;
21062 case WLAN_HAL_STOP_RSP:
21063 return WDI_STOP_RESP;
21064 case WLAN_HAL_INIT_SCAN_RSP:
21065 return WDI_INIT_SCAN_RESP;
21066 case WLAN_HAL_START_SCAN_RSP:
21067 return WDI_START_SCAN_RESP;
21068 case WLAN_HAL_END_SCAN_RSP:
21069 return WDI_END_SCAN_RESP;
21070 case WLAN_HAL_FINISH_SCAN_RSP:
21071 return WDI_FINISH_SCAN_RESP;
21072 case WLAN_HAL_CONFIG_STA_RSP:
21073 return WDI_CONFIG_STA_RESP;
21074 case WLAN_HAL_DELETE_STA_RSP:
21075 return WDI_DEL_STA_RESP;
21076 case WLAN_HAL_CONFIG_BSS_RSP:
21077 return WDI_CONFIG_BSS_RESP;
21078 case WLAN_HAL_DELETE_BSS_RSP:
21079 return WDI_DEL_BSS_RESP;
21080 case WLAN_HAL_JOIN_RSP:
21081 return WDI_JOIN_RESP;
21082 case WLAN_HAL_POST_ASSOC_RSP:
21083 return WDI_POST_ASSOC_RESP;
21084 case WLAN_HAL_SET_BSSKEY_RSP:
21085 return WDI_SET_BSS_KEY_RESP;
21086 case WLAN_HAL_SET_STAKEY_RSP:
21087 return WDI_SET_STA_KEY_RESP;
21088 case WLAN_HAL_RMV_BSSKEY_RSP:
21089 return WDI_RMV_BSS_KEY_RESP;
21090 case WLAN_HAL_RMV_STAKEY_RSP:
21091 return WDI_RMV_STA_KEY_RESP;
21092 case WLAN_HAL_SET_BCASTKEY_RSP:
21093 return WDI_SET_STA_BCAST_KEY_RESP;
21094 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21095 // return WDI_RMV_STA_BCAST_KEY_RESP;
21096 case WLAN_HAL_ADD_TS_RSP:
21097 return WDI_ADD_TS_RESP;
21098 case WLAN_HAL_DEL_TS_RSP:
21099 return WDI_DEL_TS_RESP;
21100 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21101 return WDI_UPD_EDCA_PRMS_RESP;
21102 case WLAN_HAL_ADD_BA_RSP:
21103 return WDI_ADD_BA_RESP;
21104 case WLAN_HAL_DEL_BA_RSP:
21105 return WDI_DEL_BA_RESP;
21106#ifdef FEATURE_WLAN_CCX
21107 case WLAN_HAL_TSM_STATS_RSP:
21108 return WDI_TSM_STATS_RESP;
21109#endif
21110 case WLAN_HAL_CH_SWITCH_RSP:
21111 return WDI_CH_SWITCH_RESP;
21112 case WLAN_HAL_SET_LINK_ST_RSP:
21113 return WDI_SET_LINK_ST_RESP;
21114 case WLAN_HAL_GET_STATS_RSP:
21115 return WDI_GET_STATS_RESP;
21116 case WLAN_HAL_UPDATE_CFG_RSP:
21117 return WDI_UPDATE_CFG_RESP;
21118 case WLAN_HAL_ADD_BA_SESSION_RSP:
21119 return WDI_ADD_BA_SESSION_RESP;
21120 case WLAN_HAL_TRIGGER_BA_RSP:
21121 return WDI_TRIGGER_BA_RESP;
21122 case WLAN_HAL_UPDATE_BEACON_RSP:
21123 return WDI_UPD_BCON_PRMS_RESP;
21124 case WLAN_HAL_SEND_BEACON_RSP:
21125 return WDI_SND_BCON_RESP;
21126 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21127 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21128 /*Indications*/
21129 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21130 return WDI_HAL_RSSI_NOTIFICATION_IND;
21131 case WLAN_HAL_MISSED_BEACON_IND:
21132 return WDI_HAL_MISSED_BEACON_IND;
21133 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21134 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21135 case WLAN_HAL_MIC_FAILURE_IND:
21136 return WDI_HAL_MIC_FAILURE_IND;
21137 case WLAN_HAL_FATAL_ERROR_IND:
21138 return WDI_HAL_FATAL_ERROR_IND;
21139 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21140 return WDI_HAL_DEL_STA_IND;
21141 case WLAN_HAL_COEX_IND:
21142 return WDI_HAL_COEX_IND;
21143 case WLAN_HAL_OTA_TX_COMPL_IND:
21144 return WDI_HAL_TX_COMPLETE_IND;
21145#ifdef WLAN_FEATURE_P2P
21146 case WLAN_HAL_P2P_NOA_ATTR_IND:
21147 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080021148 case WLAN_HAL_P2P_NOA_START_IND:
21149 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021150#endif
21151 case WLAN_HAL_TX_PER_HIT_IND:
21152 return WDI_HAL_TX_PER_HIT_IND;
21153 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21154 return WDI_SET_MAX_TX_POWER_RESP;
21155#ifdef WLAN_FEATURE_P2P
21156 case WLAN_HAL_SET_P2P_GONOA_RSP:
21157 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
21158#endif
21159 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021160 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021162 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021163 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021164 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021165 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021166 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021167 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021168 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021169 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021170 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021171 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021172 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021173 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021174 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021175 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021176 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021177 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21178 return WDI_SET_BEACON_FILTER_RESP;
21179 case WLAN_HAL_REM_BCN_FILTER_RSP:
21180 return WDI_REM_BEACON_FILTER_RESP;
21181 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21182 return WDI_SET_RSSI_THRESHOLDS_RESP;
21183 case WLAN_HAL_HOST_OFFLOAD_RSP:
21184 return WDI_HOST_OFFLOAD_RESP;
21185 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21186 return WDI_WOWL_ADD_BC_PTRN_RESP;
21187 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21188 return WDI_WOWL_DEL_BC_PTRN_RESP;
21189 case WLAN_HAL_ENTER_WOWL_RSP:
21190 return WDI_WOWL_ENTER_RESP;
21191 case WLAN_HAL_EXIT_WOWL_RSP:
21192 return WDI_WOWL_EXIT_RESP;
21193 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21194 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21195 case WLAN_HAL_DOWNLOAD_NV_RSP:
21196 return WDI_NV_DOWNLOAD_RESP;
21197 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21198 return WDI_FLUSH_AC_RESP;
21199 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21200 return WDI_BTAMP_EVENT_RESP;
21201#ifdef ANI_MANF_DIAG
21202 case WLAN_HAL_PROCESS_PTT_RSP:
21203 return WDI_FTM_CMD_RESP;
21204#endif /* ANI_MANF_DIAG */
21205 case WLAN_HAL_ADD_STA_SELF_RSP:
21206 return WDI_ADD_STA_SELF_RESP;
21207case WLAN_HAL_DEL_STA_SELF_RSP:
21208 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021209#ifdef FEATURE_OEM_DATA_SUPPORT
21210 case WLAN_HAL_START_OEM_DATA_RSP:
21211 return WDI_START_OEM_DATA_RESP;
21212#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 case WLAN_HAL_HOST_RESUME_RSP:
21214 return WDI_HOST_RESUME_RESP;
21215 case WLAN_HAL_KEEP_ALIVE_RSP:
21216 return WDI_KEEP_ALIVE_RESP;
21217#ifdef FEATURE_WLAN_SCAN_PNO
21218 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21219 return WDI_SET_PREF_NETWORK_RESP;
21220 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021221 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021222 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21223 return WDI_UPDATE_SCAN_PARAMS_RESP;
21224 case WLAN_HAL_PREF_NETW_FOUND_IND:
21225 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21226#endif // FEATURE_WLAN_SCAN_PNO
21227 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21228 return WDI_SET_TX_PER_TRACKING_RESP;
21229#ifdef WLAN_FEATURE_PACKET_FILTERING
21230 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21231 return WDI_8023_MULTICAST_LIST_RESP;
21232 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21233 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21234 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21235 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21236 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21237 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21238#endif // WLAN_FEATURE_PACKET_FILTERING
21239
21240 case WLAN_HAL_DUMP_COMMAND_RSP:
21241 return WDI_HAL_DUMP_CMD_RESP;
21242 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21243 return WDI_SET_POWER_PARAMS_RESP;
21244#ifdef WLAN_FEATURE_VOWIFI_11R
21245 case WLAN_HAL_AGGR_ADD_TS_RSP:
21246 return WDI_AGGR_ADD_TS_RESP;
21247#endif
21248
21249#ifdef WLAN_FEATURE_GTK_OFFLOAD
21250 case WLAN_HAL_GTK_OFFLOAD_RSP:
21251 return WDI_GTK_OFFLOAD_RESP;
21252 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21253 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21254#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21255#ifdef WLAN_WAKEUP_EVENTS
21256 case WLAN_HAL_WAKE_REASON_IND:
21257 return WDI_HAL_WAKE_REASON_IND;
21258#endif // WLAN_WAKEUP_EVENTS
21259
21260 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21261 return WDI_SET_TM_LEVEL_RESP;
21262 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21263 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021264#ifdef WLAN_FEATURE_11AC
21265 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21266 return WDI_UPDATE_VHT_OP_MODE_RESP;
21267#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021268 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021269 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 }
21271
21272}/*HAL_2_WDI_RSP_TYPE*/
21273
21274
21275/*Convert WDI driver type into HAL driver type*/
21276WPT_STATIC WPT_INLINE tDriverType
21277WDI_2_HAL_DRV_TYPE
21278(
21279 WDI_DriverType wdiDriverType
21280)
21281{
Jeff Johnsone7245742012-09-05 17:12:55 -070021282 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021283 the chances of getting inlined*/
21284 switch( wdiDriverType )
21285 {
21286 case WDI_DRIVER_TYPE_PRODUCTION:
21287 return eDRIVER_TYPE_PRODUCTION;
21288 case WDI_DRIVER_TYPE_MFG:
21289 return eDRIVER_TYPE_MFG;
21290 case WDI_DRIVER_TYPE_DVT:
21291 return eDRIVER_TYPE_DVT;
21292 }
21293
Jeff Johnsone7245742012-09-05 17:12:55 -070021294 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021295}/*WDI_2_HAL_DRV_TYPE*/
21296
21297
21298/*Convert WDI stop reason into HAL stop reason*/
21299WPT_STATIC WPT_INLINE tHalStopType
21300WDI_2_HAL_STOP_REASON
21301(
21302 WDI_StopType wdiDriverType
21303)
21304{
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021306 the chances of getting inlined*/
21307 switch( wdiDriverType )
21308 {
21309 case WDI_STOP_TYPE_SYS_RESET:
21310 return HAL_STOP_TYPE_SYS_RESET;
21311 case WDI_DRIVER_TYPE_MFG:
21312 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21313 case WDI_STOP_TYPE_RF_KILL:
21314 return HAL_STOP_TYPE_RF_KILL;
21315 }
21316
Jeff Johnsone7245742012-09-05 17:12:55 -070021317 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021318}/*WDI_2_HAL_STOP_REASON*/
21319
21320
21321/*Convert WDI scan mode type into HAL scan mode type*/
21322WPT_STATIC WPT_INLINE eHalSysMode
21323WDI_2_HAL_SCAN_MODE
21324(
21325 WDI_ScanMode wdiScanMode
21326)
21327{
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021329 the chances of getting inlined*/
21330 switch( wdiScanMode )
21331 {
21332 case WDI_SCAN_MODE_NORMAL:
21333 return eHAL_SYS_MODE_NORMAL;
21334 case WDI_SCAN_MODE_LEARN:
21335 return eHAL_SYS_MODE_LEARN;
21336 case WDI_SCAN_MODE_SCAN:
21337 return eHAL_SYS_MODE_SCAN;
21338 case WDI_SCAN_MODE_PROMISC:
21339 return eHAL_SYS_MODE_PROMISC;
21340 case WDI_SCAN_MODE_SUSPEND_LINK:
21341 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021342 case WDI_SCAN_MODE_ROAM_SCAN:
21343 return eHAL_SYS_MODE_ROAM_SCAN;
21344 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21345 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 }
21347
Jeff Johnsone7245742012-09-05 17:12:55 -070021348 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021349}/*WDI_2_HAL_SCAN_MODE*/
21350
21351/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021352WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021353WDI_2_HAL_SEC_CH_OFFSET
21354(
21355 WDI_HTSecondaryChannelOffset wdiSecChOffset
21356)
21357{
Jeff Johnsone7245742012-09-05 17:12:55 -070021358 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021359 the chances of getting inlined*/
21360 switch( wdiSecChOffset )
21361 {
21362 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021363 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021365 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021366 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021367 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21368#ifdef WLAN_FEATURE_11AC
21369 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21370 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21371 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21372 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21373 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21374 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21375 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21376 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21377 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21378 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21379 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21380 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21381 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21382 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21383#endif
21384 default:
21385 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021386 }
21387
Jeff Johnsone7245742012-09-05 17:12:55 -070021388 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021389}/*WDI_2_HAL_SEC_CH_OFFSET*/
21390
21391/*Convert WDI BSS type into HAL BSS type*/
21392WPT_STATIC WPT_INLINE tSirBssType
21393WDI_2_HAL_BSS_TYPE
21394(
21395 WDI_BssType wdiBSSType
21396)
21397{
Jeff Johnsone7245742012-09-05 17:12:55 -070021398 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021399 the chances of getting inlined*/
21400 switch( wdiBSSType )
21401 {
21402 case WDI_INFRASTRUCTURE_MODE:
21403 return eSIR_INFRASTRUCTURE_MODE;
21404 case WDI_INFRA_AP_MODE:
21405 return eSIR_INFRA_AP_MODE;
21406 case WDI_IBSS_MODE:
21407 return eSIR_IBSS_MODE;
21408 case WDI_BTAMP_STA_MODE:
21409 return eSIR_BTAMP_STA_MODE;
21410 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021411 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021412 case WDI_BSS_AUTO_MODE:
21413 return eSIR_AUTO_MODE;
21414 }
21415
Jeff Johnsone7245742012-09-05 17:12:55 -070021416 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021417}/*WDI_2_HAL_BSS_TYPE*/
21418
21419/*Convert WDI NW type into HAL NW type*/
21420WPT_STATIC WPT_INLINE tSirNwType
21421WDI_2_HAL_NW_TYPE
21422(
21423 WDI_NwType wdiNWType
21424)
21425{
Jeff Johnsone7245742012-09-05 17:12:55 -070021426 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021427 the chances of getting inlined*/
21428 switch( wdiNWType )
21429 {
21430 case WDI_11A_NW_TYPE:
21431 return eSIR_11A_NW_TYPE;
21432 case WDI_11B_NW_TYPE:
21433 return eSIR_11B_NW_TYPE;
21434 case WDI_11G_NW_TYPE:
21435 return eSIR_11G_NW_TYPE;
21436 case WDI_11N_NW_TYPE:
21437 return eSIR_11N_NW_TYPE;
21438 }
21439
Jeff Johnsone7245742012-09-05 17:12:55 -070021440 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021441}/*WDI_2_HAL_NW_TYPE*/
21442
21443/*Convert WDI chanel bonding type into HAL cb type*/
21444WPT_STATIC WPT_INLINE ePhyChanBondState
21445WDI_2_HAL_CB_STATE
21446(
21447 WDI_PhyChanBondState wdiCbState
21448)
21449{
Jeff Johnsone7245742012-09-05 17:12:55 -070021450 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021451 the chances of getting inlined*/
21452 switch ( wdiCbState )
21453 {
21454 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
21455 return PHY_SINGLE_CHANNEL_CENTERED;
21456 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
21457 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
21458 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
21459 return PHY_DOUBLE_CHANNEL_CENTERED;
21460 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
21461 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070021462#ifdef WLAN_FEATURE_11AC
21463 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21464 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21465 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21466 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
21467 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21468 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21469 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21470 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21471 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21472 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
21473 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21474 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21475 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21476 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21477#endif
21478 case WDI_MAX_CB_STATE:
21479 default:
21480 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021481 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021482
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 return PHY_CHANNEL_BONDING_STATE_MAX;
21484}/*WDI_2_HAL_CB_STATE*/
21485
21486/*Convert WDI chanel bonding type into HAL cb type*/
21487WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
21488WDI_2_HAL_HT_OPER_MODE
21489(
21490 WDI_HTOperatingMode wdiHTOperMode
21491)
21492{
Jeff Johnsone7245742012-09-05 17:12:55 -070021493 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021494 the chances of getting inlined*/
21495 switch ( wdiHTOperMode )
21496 {
21497 case WDI_HT_OP_MODE_PURE:
21498 return eSIR_HT_OP_MODE_PURE;
21499 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
21500 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
21501 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
21502 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
21503 case WDI_HT_OP_MODE_MIXED:
21504 return eSIR_HT_OP_MODE_MIXED;
21505 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021506
Jeff Johnson295189b2012-06-20 16:38:30 -070021507 return eSIR_HT_OP_MODE_MAX;
21508}/*WDI_2_HAL_HT_OPER_MODE*/
21509
21510/*Convert WDI mimo PS type into HAL mimo PS type*/
21511WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
21512WDI_2_HAL_MIMO_PS
21513(
21514 WDI_HTMIMOPowerSaveState wdiHTOperMode
21515)
21516{
Jeff Johnsone7245742012-09-05 17:12:55 -070021517 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021518 the chances of getting inlined*/
21519 switch ( wdiHTOperMode )
21520 {
21521 case WDI_HT_MIMO_PS_STATIC:
21522 return eSIR_HT_MIMO_PS_STATIC;
21523 case WDI_HT_MIMO_PS_DYNAMIC:
21524 return eSIR_HT_MIMO_PS_DYNAMIC;
21525 case WDI_HT_MIMO_PS_NA:
21526 return eSIR_HT_MIMO_PS_NA;
21527 case WDI_HT_MIMO_PS_NO_LIMIT:
21528 return eSIR_HT_MIMO_PS_NO_LIMIT;
21529 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021530
Jeff Johnson295189b2012-06-20 16:38:30 -070021531 return eSIR_HT_MIMO_PS_MAX;
21532}/*WDI_2_HAL_MIMO_PS*/
21533
21534/*Convert WDI ENC type into HAL ENC type*/
21535WPT_STATIC WPT_INLINE tAniEdType
21536WDI_2_HAL_ENC_TYPE
21537(
21538 WDI_EncryptType wdiEncType
21539)
21540{
Jeff Johnsone7245742012-09-05 17:12:55 -070021541 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021542 the chances of getting inlined*/
21543 switch ( wdiEncType )
21544 {
21545 case WDI_ENCR_NONE:
21546 return eSIR_ED_NONE;
21547
21548 case WDI_ENCR_WEP40:
21549 return eSIR_ED_WEP40;
21550
21551 case WDI_ENCR_WEP104:
21552 return eSIR_ED_WEP104;
21553
21554 case WDI_ENCR_TKIP:
21555 return eSIR_ED_TKIP;
21556
21557 case WDI_ENCR_CCMP:
21558 return eSIR_ED_CCMP;
21559
21560 case WDI_ENCR_AES_128_CMAC:
21561 return eSIR_ED_AES_128_CMAC;
21562#if defined(FEATURE_WLAN_WAPI)
21563 case WDI_ENCR_WPI:
21564 return eSIR_ED_WPI;
21565#endif
21566 default:
21567 return eSIR_ED_NOT_IMPLEMENTED;
21568 }
21569
21570}/*WDI_2_HAL_ENC_TYPE*/
21571
21572/*Convert WDI WEP type into HAL WEP type*/
21573WPT_STATIC WPT_INLINE tAniWepType
21574WDI_2_HAL_WEP_TYPE
21575(
21576 WDI_WepType wdiWEPType
21577)
21578{
Jeff Johnsone7245742012-09-05 17:12:55 -070021579 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021580 the chances of getting inlined*/
21581 switch ( wdiWEPType )
21582 {
21583 case WDI_WEP_STATIC:
21584 return eSIR_WEP_STATIC;
21585
21586 case WDI_WEP_DYNAMIC:
21587 return eSIR_WEP_DYNAMIC;
21588 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021589
Jeff Johnson295189b2012-06-20 16:38:30 -070021590 return eSIR_WEP_MAX;
21591}/*WDI_2_HAL_WEP_TYPE*/
21592
21593WPT_STATIC WPT_INLINE tSirLinkState
21594WDI_2_HAL_LINK_STATE
21595(
21596 WDI_LinkStateType wdiLinkState
21597)
21598{
Jeff Johnsone7245742012-09-05 17:12:55 -070021599 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021600 the chances of getting inlined*/
21601 switch ( wdiLinkState )
21602 {
21603 case WDI_LINK_IDLE_STATE:
21604 return eSIR_LINK_IDLE_STATE;
21605
21606 case WDI_LINK_PREASSOC_STATE:
21607 return eSIR_LINK_PREASSOC_STATE;
21608
21609 case WDI_LINK_POSTASSOC_STATE:
21610 return eSIR_LINK_POSTASSOC_STATE;
21611
21612 case WDI_LINK_AP_STATE:
21613 return eSIR_LINK_AP_STATE;
21614
21615 case WDI_LINK_IBSS_STATE:
21616 return eSIR_LINK_IBSS_STATE;
21617
21618 case WDI_LINK_BTAMP_PREASSOC_STATE:
21619 return eSIR_LINK_BTAMP_PREASSOC_STATE;
21620
21621 case WDI_LINK_BTAMP_POSTASSOC_STATE:
21622 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
21623
21624 case WDI_LINK_BTAMP_AP_STATE:
21625 return eSIR_LINK_BTAMP_AP_STATE;
21626
21627 case WDI_LINK_BTAMP_STA_STATE:
21628 return eSIR_LINK_BTAMP_STA_STATE;
21629
21630 case WDI_LINK_LEARN_STATE:
21631 return eSIR_LINK_LEARN_STATE;
21632
21633 case WDI_LINK_SCAN_STATE:
21634 return eSIR_LINK_SCAN_STATE;
21635
21636 case WDI_LINK_FINISH_SCAN_STATE:
21637 return eSIR_LINK_FINISH_SCAN_STATE;
21638
21639 case WDI_LINK_INIT_CAL_STATE:
21640 return eSIR_LINK_INIT_CAL_STATE;
21641
21642 case WDI_LINK_FINISH_CAL_STATE:
21643 return eSIR_LINK_FINISH_CAL_STATE;
21644
21645#ifdef WLAN_FEATURE_P2P
21646 case WDI_LINK_LISTEN_STATE:
21647 return eSIR_LINK_LISTEN_STATE;
21648#endif
21649
21650 default:
21651 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070021652 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021653}
21654
Jeff Johnsone7245742012-09-05 17:12:55 -070021655/*Translate a STA Context from WDI into HAL*/
21656WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070021657void
21658WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070021659(
Jeff Johnson295189b2012-06-20 16:38:30 -070021660 tConfigStaParams* phalConfigSta,
21661 WDI_ConfigStaReqInfoType* pwdiConfigSta
21662)
21663{
21664 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070021665#ifdef WLAN_FEATURE_11AC
21666 /* Get the Version 1 Handler */
21667 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
21668 if (WDI_getFwWlanFeatCaps(DOT11AC))
21669 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021670 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070021671 }
21672#endif
21673 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021674 the chances of getting inlined*/
21675
Jeff Johnsone7245742012-09-05 17:12:55 -070021676 wpalMemoryCopy(phalConfigSta->bssId,
21677 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
21678
21679 wpalMemoryCopy(phalConfigSta->staMac,
21680 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070021681
21682 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
21683 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
21684 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
21685 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
21686 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
21687 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
21688 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
21689 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
21690 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
21691 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
21692 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
21693 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
21694 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
21695 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
21696 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
21697 phalConfigSta->action = pwdiConfigSta->wdiAction;
21698 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
21699 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
21700 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
21701 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
21702 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
21703 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
21704 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070021705
Jeff Johnson295189b2012-06-20 16:38:30 -070021706 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
21707
Jeff Johnsone7245742012-09-05 17:12:55 -070021708 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070021709 pwdiConfigSta->wdiSupportedRates.opRateMode;
21710 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
21711 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021712 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021713 pwdiConfigSta->wdiSupportedRates.llbRates[i];
21714 }
21715 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
21716 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021717 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021718 pwdiConfigSta->wdiSupportedRates.llaRates[i];
21719 }
21720 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
21721 {
21722 phalConfigSta->supportedRates.aniLegacyRates[i] =
21723 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
21724 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021725 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070021726 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
21727 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
21728 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021729 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021730 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
21731 }
21732 phalConfigSta->supportedRates.rxHighestDataRate =
21733 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
21734
Jeff Johnsone7245742012-09-05 17:12:55 -070021735#ifdef WLAN_FEATURE_11AC
21736 if(phalConfigSta_V1 != NULL)
21737 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021738 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
21739 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
21740 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
21741 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070021742 }
21743#endif
21744
Jeff Johnson295189b2012-06-20 16:38:30 -070021745#ifdef WLAN_FEATURE_P2P
21746 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
21747#endif
21748
Jeff Johnsone7245742012-09-05 17:12:55 -070021749#ifdef WLAN_FEATURE_11AC
21750 if(phalConfigSta_V1 != NULL)
21751 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021752 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
21753 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Jeff Johnsone7245742012-09-05 17:12:55 -070021754 }
21755#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021756}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070021757
21758/*Translate a Rate set info from WDI into HAL*/
21759WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021760WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070021761(
Jeff Johnson295189b2012-06-20 16:38:30 -070021762 tSirMacRateSet* pHalRateSet,
21763 WDI_RateSet* pwdiRateSet
21764)
21765{
Jeff Johnsone7245742012-09-05 17:12:55 -070021766 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21768
21769 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
21770 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
21771
21772 for ( i = 0; i < pHalRateSet->numRates; i++ )
21773 {
21774 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
21775 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021776
Jeff Johnson295189b2012-06-20 16:38:30 -070021777}/*WDI_CopyWDIRateSetToHALRateSet*/
21778
21779
21780/*Translate an EDCA Parameter Record from WDI into HAL*/
21781WPT_STATIC WPT_INLINE void
21782WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070021783(
Jeff Johnson295189b2012-06-20 16:38:30 -070021784 tSirMacEdcaParamRecord* phalEdcaParam,
21785 WDI_EdcaParamRecord* pWDIEdcaParam
21786)
21787{
Jeff Johnsone7245742012-09-05 17:12:55 -070021788 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021789 the chances of getting inlined*/
21790
21791 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
21792 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
21793 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
21794 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
21795
21796 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
21797 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
21798 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
21799}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
21800
21801
21802/*Copy a management frame header from WDI fmt into HAL fmt*/
21803WPT_STATIC WPT_INLINE void
21804WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
21805(
21806 tSirMacMgmtHdr* pmacMgmtHdr,
21807 WDI_MacMgmtHdr* pwdiMacMgmtHdr
21808)
21809{
21810 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
21811 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
21812 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
21813 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
21814 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
21815 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
21816 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
21817 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
21818 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
21819 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
21820 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
21821
21822 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
21823 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
21824
Jeff Johnsone7245742012-09-05 17:12:55 -070021825 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070021826 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021827 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070021828 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021829 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070021830 pwdiMacMgmtHdr->bssId, 6);
21831
21832 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
21833 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
21834 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
21835
21836}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
21837
21838
21839/*Copy config bss parameters from WDI fmt into HAL fmt*/
21840WPT_STATIC WPT_INLINE void
21841WDI_CopyWDIConfigBSSToHALConfigBSS
21842(
21843 tConfigBssParams* phalConfigBSS,
21844 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
21845)
21846{
21847
21848 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021849#ifdef WLAN_FEATURE_11AC
21850 /* Get the Version 1 Handler */
21851 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
21852 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021853 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070021854#endif
21855
Jeff Johnson295189b2012-06-20 16:38:30 -070021856 wpalMemoryCopy( phalConfigBSS->bssId,
21857 pwdiConfigBSS->macBSSID,
21858 WDI_MAC_ADDR_LEN);
21859
21860#ifdef HAL_SELF_STA_PER_BSS
21861 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
21862 pwdiConfigBSS->macSelfAddr,
21863 WDI_MAC_ADDR_LEN);
21864#endif
21865
21866 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
21867
21868 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
21869 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
21870
Jeff Johnsone7245742012-09-05 17:12:55 -070021871 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070021872 pwdiConfigBSS->ucShortSlotTimeSupported;
21873 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
21874 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
21875 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
21876 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
21877 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070021878 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 pwdiConfigBSS->ucTXOPProtectionFullSupport;
21880 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
21881 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
21882 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
21883 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
21884 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
21885 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
21886 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
21887 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
21888 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
21889 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
21890
Jeff Johnsone7245742012-09-05 17:12:55 -070021891 phalConfigBSS->htOperMode =
21892 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070021893
21894 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
21895 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
21896 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
21897 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
21898
21899#ifdef WLAN_FEATURE_VOWIFI
21900 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
21901#endif
21902
21903 /*! Used 32 as magic number because that is how the ssid is declared inside the
21904 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070021905 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070021906 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
21907 pwdiConfigBSS->wdiSSID.ucLength : 32;
21908 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070021909 pwdiConfigBSS->wdiSSID.sSSID,
21910 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070021911
21912 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
21913 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070021914
Jeff Johnson295189b2012-06-20 16:38:30 -070021915 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
21916 &pwdiConfigBSS->wdiRateSet);
21917
21918 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
21919
21920 if(phalConfigBSS->edcaParamsValid)
21921 {
21922 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
21923 &pwdiConfigBSS->wdiBEEDCAParams);
21924 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
21925 &pwdiConfigBSS->wdiBKEDCAParams);
21926 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
21927 &pwdiConfigBSS->wdiVIEDCAParams);
21928 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
21929 &pwdiConfigBSS->wdiVOEDCAParams);
21930 }
21931
Jeff Johnsone7245742012-09-05 17:12:55 -070021932 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070021933
21934 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
21935
21936#ifdef WLAN_FEATURE_VOWIFI_11R
21937
Jeff Johnsone7245742012-09-05 17:12:55 -070021938 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070021939 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070021940
Jeff Johnson295189b2012-06-20 16:38:30 -070021941 if( phalConfigBSS->extSetStaKeyParamValid )
21942 {
21943 /*-----------------------------------------------------------------------
21944 Copy the STA Key parameters into the HAL message
21945 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021946 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
21948
Jeff Johnsone7245742012-09-05 17:12:55 -070021949 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021950 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
21951
21952 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
21953
21954 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
21955
21956 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
21957
21958#ifdef WLAN_SOFTAP_FEATURE
21959 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
21960 keyIndex++)
21961 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
21964 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
21965 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
21966 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
21967 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
21968 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021969 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021970 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021972 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021973 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021974 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
21975 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021976 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021977 WDI_MAX_KEY_LENGTH);
21978 }
21979#else
Jeff Johnsone7245742012-09-05 17:12:55 -070021980 phalConfigBSS->extSetStaKeyParam.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021981 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyId;
21982 phalConfigBSS->extSetStaKeyParam.key.unicast =
21983 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].unicast;
21984 phalConfigBSS->extSetStaKeyParam.key.keyDirection =
21985 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyDirection;
21986 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021987 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021989 phalConfigBSS->extSetStaKeyParam.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021991 phalConfigBSS->extSetStaKeyParam.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021992 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyLength;
21993 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 WDI_MAX_KEY_LENGTH);
21996#endif
21997 }
21998 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
21999 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022000 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022001 sizeof(phalConfigBSS->extSetStaKeyParam) );
22002 }
22003
22004#endif /*WLAN_FEATURE_VOWIFI_11R*/
22005
Jeff Johnsone7245742012-09-05 17:12:55 -070022006#ifdef WLAN_FEATURE_11AC
22007 if(phalConfigBSS_V1 != NULL)
22008 {
22009 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22010 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22011 }
22012#endif
22013
Jeff Johnson295189b2012-06-20 16:38:30 -070022014}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22015
22016
Jeff Johnsone7245742012-09-05 17:12:55 -070022017/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022018 pointed to by user data */
22019WPT_STATIC WPT_INLINE void
22020WDI_ExtractRequestCBFromEvent
22021(
22022 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022023 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022024 void** ppUserData
22025)
22026{
22027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22028 switch ( pEvent->wdiRequest )
22029 {
22030 case WDI_START_REQ:
22031 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22032 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22033 break;
22034 case WDI_STOP_REQ:
22035 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22036 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22037 break;
22038 case WDI_INIT_SCAN_REQ:
22039 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22040 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22041 break;
22042 case WDI_START_SCAN_REQ:
22043 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22044 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22045 break;
22046 case WDI_END_SCAN_REQ:
22047 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22048 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22049 break;
22050 case WDI_FINISH_SCAN_REQ:
22051 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22052 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22053 break;
22054 case WDI_JOIN_REQ:
22055 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22056 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22057 break;
22058 case WDI_CONFIG_BSS_REQ:
22059 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22060 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22061 break;
22062 case WDI_DEL_BSS_REQ:
22063 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22064 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22065 break;
22066 case WDI_POST_ASSOC_REQ:
22067 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22068 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22069 break;
22070 case WDI_DEL_STA_REQ:
22071 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22072 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22073 break;
22074 case WDI_DEL_STA_SELF_REQ:
22075 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22076 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22077 break;
22078
22079 case WDI_SET_BSS_KEY_REQ:
22080 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22081 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22082 break;
22083 case WDI_RMV_BSS_KEY_REQ:
22084 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22085 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22086 break;
22087 case WDI_SET_STA_KEY_REQ:
22088 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22089 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22090 break;
22091 case WDI_RMV_STA_KEY_REQ:
22092 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22093 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22094 break;
22095 case WDI_ADD_TS_REQ:
22096 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22097 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22098 break;
22099 case WDI_DEL_TS_REQ:
22100 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22101 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22102 break;
22103 case WDI_UPD_EDCA_PRMS_REQ:
22104 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22105 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22106 break;
22107 case WDI_ADD_BA_SESSION_REQ:
22108 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22109 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22110 break;
22111 case WDI_DEL_BA_REQ:
22112 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22113 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22114 break;
22115#ifdef FEATURE_WLAN_CCX
22116 case WDI_TSM_STATS_REQ:
22117 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22118 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22119 break;
22120#endif
22121 case WDI_CH_SWITCH_REQ:
22122 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22123 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22124 break;
22125 case WDI_CONFIG_STA_REQ:
22126 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22127 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22128 break;
22129 case WDI_SET_LINK_ST_REQ:
22130 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22131 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22132 break;
22133 case WDI_GET_STATS_REQ:
22134 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22135 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22136 break;
22137 case WDI_UPDATE_CFG_REQ:
22138 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22139 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22140 break;
22141 case WDI_ADD_BA_REQ:
22142 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22143 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22144 break;
22145 case WDI_TRIGGER_BA_REQ:
22146 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22147 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22148 break;
22149 case WDI_UPD_BCON_PRMS_REQ:
22150 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22151 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22152 break;
22153 case WDI_SND_BCON_REQ:
22154 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22155 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22156 break;
22157 case WDI_ENTER_BMPS_REQ:
22158 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22159 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22160 break;
22161 case WDI_EXIT_BMPS_REQ:
22162 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22163 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22164 break;
22165 case WDI_ENTER_UAPSD_REQ:
22166 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22167 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22168 break;
22169 case WDI_UPDATE_UAPSD_PARAM_REQ:
22170 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22171 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22172 break;
22173 case WDI_CONFIGURE_RXP_FILTER_REQ:
22174 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22175 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22176 break;
22177 case WDI_SET_BEACON_FILTER_REQ:
22178 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22179 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22180 break;
22181 case WDI_REM_BEACON_FILTER_REQ:
22182 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22183 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 case WDI_SET_RSSI_THRESHOLDS_REQ:
22186 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22187 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22188 break;
22189 case WDI_HOST_OFFLOAD_REQ:
22190 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22191 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22192 break;
22193 case WDI_WOWL_ADD_BC_PTRN_REQ:
22194 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22195 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22196 break;
22197 case WDI_WOWL_DEL_BC_PTRN_REQ:
22198 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22199 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22200 break;
22201 case WDI_WOWL_ENTER_REQ:
22202 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22203 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22204 break;
22205 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22206 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22207 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22208 break;
22209 case WDI_FLUSH_AC_REQ:
22210 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22211 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22212 break;
22213 case WDI_BTAMP_EVENT_REQ:
22214 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22215 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22216 break;
22217 case WDI_KEEP_ALIVE_REQ:
22218 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22219 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22220 break;
22221 case WDI_SET_TX_PER_TRACKING_REQ:
22222 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22223 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
22224 default:
22225 *ppfnReqCB = NULL;
22226 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022227 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022228 }
22229}/*WDI_ExtractRequestCBFromEvent*/
22230
22231
22232/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022233 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022234 frame xtl is enabled for a particular STA.
22235
22236 WDI_PostAssocReq must have been called.
22237
Jeff Johnsone7245742012-09-05 17:12:55 -070022238 @param uSTAIdx: STA index
22239
Jeff Johnson295189b2012-06-20 16:38:30 -070022240 @see WDI_PostAssocReq
22241 @return Result of the function call
22242*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022243wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022244WDI_IsHwFrameTxTranslationCapable
22245(
22246 wpt_uint8 uSTAIdx
22247)
22248{
Jeff Johnsone7245742012-09-05 17:12:55 -070022249 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 uma value*/
22251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022252 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022253 ------------------------------------------------------------------------*/
22254 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22255 {
22256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22257 "WDI API call before module is initialized - Fail request");
22258
Jeff Johnsone7245742012-09-05 17:12:55 -070022259 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022260 }
22261
Gopichand Nakkala976e3252013-01-03 15:45:56 -080022262#ifdef WLAN_SOFTAP_VSTA_FEATURE
22263 if (IS_VSTA_IDX(uSTAIdx))
22264 {
22265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22266 "STA %d is a Virtual STA, "
22267 "HW frame translation disabled", uSTAIdx);
22268 return eWLAN_PAL_FALSE;
22269 }
22270#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070022271
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 return gWDICb.bFrameTransEnabled;
22273}/*WDI_IsHwFrameTxTranslationCapable*/
22274
22275#ifdef FEATURE_WLAN_SCAN_PNO
22276/**
22277 @brief WDI_SetPreferredNetworkList
22278
Jeff Johnsone7245742012-09-05 17:12:55 -070022279 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022280 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022281
Jeff Johnson295189b2012-06-20 16:38:30 -070022282 wdiPNOScanCb: callback for passing back the response
22283 of the Set PNO operation received from the
22284 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022285
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022287 callback
22288
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 @return Result of the function call
22290*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022291WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022292WDI_SetPreferredNetworkReq
22293(
22294 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22295 WDI_PNOScanCb wdiPNOScanCb,
22296 void* pUserData
22297)
22298{
22299 WDI_EventInfoType wdiEventData = {{0}};
22300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22301
22302 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022303 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022304 ------------------------------------------------------------------------*/
22305 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22306 {
22307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22308 "WDI API call before module is initialized - Fail request");
22309
Jeff Johnsone7245742012-09-05 17:12:55 -070022310 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 }
22312
22313 /*------------------------------------------------------------------------
22314 Fill in Event data and post to the Main FSM
22315 ------------------------------------------------------------------------*/
22316 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022317 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022318 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022319 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022320 wdiEventData.pUserData = pUserData;
22321
22322 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22323}
22324
22325
22326/**
22327 @brief WDI_SetRssiFilterReq
22328
Jeff Johnsone7245742012-09-05 17:12:55 -070022329 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022330 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022331
Jeff Johnson295189b2012-06-20 16:38:30 -070022332 wdiRssiFilterCb: callback for passing back the response
22333 of the Set RSSI Filter operation received from the
22334 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022335
Jeff Johnson295189b2012-06-20 16:38:30 -070022336 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022337 callback
22338
Jeff Johnson295189b2012-06-20 16:38:30 -070022339 @return Result of the function call
22340*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022341WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022342WDI_SetRssiFilterReq
22343(
22344 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22345 WDI_RssiFilterCb wdiRssiFilterCb,
22346 void* pUserData
22347)
22348{
22349 WDI_EventInfoType wdiEventData = {{0}};
22350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22351
22352 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022353 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 ------------------------------------------------------------------------*/
22355 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22356 {
22357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22358 "WDI API call before module is initialized - Fail request");
22359
Jeff Johnsone7245742012-09-05 17:12:55 -070022360 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022361 }
22362
22363 /*------------------------------------------------------------------------
22364 Fill in Event data and post to the Main FSM
22365 ------------------------------------------------------------------------*/
22366 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022367 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022368 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022369 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022370 wdiEventData.pUserData = pUserData;
22371
22372 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22373}/*WDI_SetRssiFilterReq*/
22374
22375/**
22376 @brief WDI_UpdateScanParamsReq
22377
Jeff Johnsone7245742012-09-05 17:12:55 -070022378 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022379 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022380
Jeff Johnson295189b2012-06-20 16:38:30 -070022381 wdiUpdateScanParamsCb: callback for passing back the response
22382 of the Set PNO operation received from the
22383 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022384
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022386 callback
22387
Jeff Johnson295189b2012-06-20 16:38:30 -070022388 @return Result of the function call
22389*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022390WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022391WDI_UpdateScanParamsReq
22392(
22393 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22394 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22395 void* pUserData
22396)
22397{
22398 WDI_EventInfoType wdiEventData = {{0}};
22399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22400
22401 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022402 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022403 ------------------------------------------------------------------------*/
22404 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22405 {
22406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22407 "WDI API call before module is initialized - Fail request");
22408
Jeff Johnsone7245742012-09-05 17:12:55 -070022409 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022410 }
22411
22412 /*------------------------------------------------------------------------
22413 Fill in Event data and post to the Main FSM
22414 ------------------------------------------------------------------------*/
22415 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022416 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070022418 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022419 wdiEventData.pUserData = pUserData;
22420
22421 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22422}
22423
22424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022425 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022426 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022427
22428 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022429 pwdiPNOScanReqParams: pointer to the info received
22430 from upper layers
22431 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 and its size
22433
Jeff Johnson295189b2012-06-20 16:38:30 -070022434 @return Result of the function call
22435*/
22436
22437WDI_Status
22438WDI_PackPreferredNetworkList
22439(
22440 WDI_ControlBlockType* pWDICtx,
22441 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22442 wpt_uint8** ppSendBuffer,
22443 wpt_uint16* pSize
22444)
22445{
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 wpt_uint16 usDataOffset = 0;
22448 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022449 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022451 /*-----------------------------------------------------------------------
22452 Get message buffer
22453 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022455 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022457 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 {
22459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22460 "Unable to get send buffer in Set PNO req %x ",
22461 pwdiPNOScanReqParams);
22462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 }
22465
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022466 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
22467
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 /*-------------------------------------------------------------------------
22469 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22470 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022471 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022473 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22475
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022476 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22481
22482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22485 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22486 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22487
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022488 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022489 {
22490 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022491 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22493
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022494 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022495 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022496 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022497
22498 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022499 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022500 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022501
22502 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022503 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022505
Jeff Johnsone7245742012-09-05 17:12:55 -070022506 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022508 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070022509 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
22510 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22511 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
22512 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022513
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022514 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022515 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022516 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022517
22518 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022519 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022520 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22521
22522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022523 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022524 pPrefNetwListParams->aNetworks[i].ssId.length,
22525 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022526 }
22527
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022528 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022529 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022530 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22531 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22532 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22533
22534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022535 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022536 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22538 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22539
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022540 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022541 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022542 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022544 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22546 }
22547
22548 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022549 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022550 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22551 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22552 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022553 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022554
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022555 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022556 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022557 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022558
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022559 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022560 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22561 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22562 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022563 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022564
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022565 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022567 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022568
22569 /*Set the output values*/
22570 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022571 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022572
22573 return WDI_STATUS_SUCCESS;
22574}/*WDI_PackPreferredNetworkList*/
22575
22576/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022577 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022578 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022579
22580 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022581 pwdiPNOScanReqParams: pointer to the info received
22582 from upper layers
22583 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022584 and its size
22585
Jeff Johnson295189b2012-06-20 16:38:30 -070022586 @return Result of the function call
22587*/
22588
22589WDI_Status
22590WDI_PackPreferredNetworkListNew
22591(
22592 WDI_ControlBlockType* pWDICtx,
22593 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22594 wpt_uint8** ppSendBuffer,
22595 wpt_uint16* pSize
22596)
22597{
Jeff Johnsone7245742012-09-05 17:12:55 -070022598 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 wpt_uint16 usDataOffset = 0;
22600 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022601 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022603
22604 /*-----------------------------------------------------------------------
22605 Get message buffer
22606 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022608 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022610 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022611 {
22612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22613 "Unable to get send buffer in Set PNO req %x ",
22614 pwdiPNOScanReqParams);
22615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022617 }
22618
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022619 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
22620
Jeff Johnson295189b2012-06-20 16:38:30 -070022621 /*-------------------------------------------------------------------------
22622 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22623 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022624 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022625 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022626 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022627 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22628
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022629 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022632 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022633 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22634
22635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022636 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22638 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22639 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22640
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022641 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022642 {
22643 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022644 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022645 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22646
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022647 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022649 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022650
22651 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022652 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022654
22655 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022656 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022657 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022658
22659 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022660 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070022661 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022662
Jeff Johnsone7245742012-09-05 17:12:55 -070022663 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022664 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022665 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
22667
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022668 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022669 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022670 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022671
22672 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022673 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22675
22676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022677 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022678 pPrefNetwListParams->aNetworks[i].ssId.length,
22679 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 }
22681
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022682 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022683 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022684 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22685 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22686 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22687
22688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022689 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022690 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022691 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22692 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22693
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022694 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022696 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022698 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022699 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22700 }
22701
22702 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022703 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022704 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22705 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22706 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022707 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022708
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022709 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022710 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022711 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022712
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022713 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022714 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22715 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22716 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022717 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022718
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022719 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022720 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022721 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022722
Jeff Johnson295189b2012-06-20 16:38:30 -070022723
22724 /*Set the output values*/
22725 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022726 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022727
22728 return WDI_STATUS_SUCCESS;
22729}/*WDI_PackPreferredNetworkListNew*/
22730
22731/**
22732 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022733
22734 @param pWDICtx: pointer to the WLAN DAL context
22735 pEventData: pointer to the event information structure
22736
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 @return Result of the function call
22738*/
22739WDI_Status
22740WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022741(
Jeff Johnson295189b2012-06-20 16:38:30 -070022742 WDI_ControlBlockType* pWDICtx,
22743 WDI_EventInfoType* pEventData
22744)
22745{
22746 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
22747 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022749 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022750 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022751
22752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 -------------------------------------------------------------------------*/
22755 if (( NULL == pEventData ) ||
22756 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
22757 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
22758 {
22759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022763 }
22764
22765 /*-------------------------------------------------------------------------
22766 Pack the PNO request structure based on version
22767 -------------------------------------------------------------------------*/
22768 if ( pWDICtx->wdiPNOVersion > 0 )
22769 {
22770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022771 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 pWDICtx->wdiPNOVersion);
22773
22774 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
22775 &pSendBuffer, &usSendSize);
22776 }
22777 else
22778 {
22779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022780 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022781 pWDICtx->wdiPNOVersion);
22782
22783 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
22784 &pSendBuffer, &usSendSize);
22785 }
22786
22787 if (( WDI_STATUS_SUCCESS != wdiStatus )||
22788 ( NULL == pSendBuffer )||( 0 == usSendSize ))
22789 {
22790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022791 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022793 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022794 }
22795
22796 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022797 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022798
22799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022800 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022801 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022802 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22803 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022804}
22805
22806/**
22807 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022808
22809 @param pWDICtx: pointer to the WLAN DAL context
22810 pEventData: pointer to the event information structure
22811
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 @see
22813 @return Result of the function call
22814*/
22815WDI_Status
22816WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022817(
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 WDI_ControlBlockType* pWDICtx,
22819 WDI_EventInfoType* pEventData
22820)
22821{
22822 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
22823 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022824 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022825 wpt_uint16 usDataOffset = 0;
22826 wpt_uint16 usSendSize = 0;
22827 wpt_uint8 ucRssiThreshold;
22828
22829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022831 -------------------------------------------------------------------------*/
22832 if (( NULL == pEventData ) ||
22833 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
22834 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
22835 {
22836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022837 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022840 }
22841
22842 /*-----------------------------------------------------------------------
22843 Get message buffer
22844 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022845 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022846 sizeof(ucRssiThreshold),
22847 &pSendBuffer, &usDataOffset, &usSendSize))||
22848 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
22849 {
22850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22851 "Unable to get send buffer in Set PNO req %x %x %x",
22852 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
22853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022855 }
22856
22857 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
22858
Jeff Johnsone7245742012-09-05 17:12:55 -070022859 wpalMemoryCopy( pSendBuffer+usDataOffset,
22860 &ucRssiThreshold,
22861 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070022862
22863 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022864 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022865
22866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022867 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022868 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022869 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22870 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022871}
22872
22873
22874/**
22875 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070022876
22877 @param pWDICtx: pointer to the WLAN DAL context
22878 pEventData: pointer to the event information structure
22879
Jeff Johnson295189b2012-06-20 16:38:30 -070022880 @see
22881 @return Result of the function call
22882*/
22883WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053022884WDI_PackUpdateScanParamsReq
22885(
22886 WDI_ControlBlockType* pWDICtx,
22887 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
22888 wpt_uint8** ppSendBuffer,
22889 wpt_uint16* pSize
22890)
22891{
22892 wpt_uint8* pSendBuffer = NULL;
22893 wpt_uint16 usDataOffset = 0;
22894 wpt_uint16 usSendSize = 0;
22895 tUpdateScanParams updateScanParams = {0};
22896
22897
22898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22899 "Begin WDI Update Scan Parameters Old Style Params");
22900 /*-----------------------------------------------------------------------
22901 Get message buffer
22902 -----------------------------------------------------------------------*/
22903 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
22904 sizeof(updateScanParams),
22905 &pSendBuffer, &usDataOffset, &usSendSize))||
22906 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22907 {
22908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22909 "Unable to get send buffer in Update Scan Params req %x",
22910 pwdiUpdateScanParams);
22911 WDI_ASSERT(0);
22912 return WDI_STATUS_E_FAILURE;
22913 }
22914
22915 //
22916 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22917 //
22918
22919 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
22920 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
22921
22922 updateScanParams.ucChannelCount =
22923 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
22924 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22925 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
22926 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
22927
22928 wpalMemoryCopy( updateScanParams.aChannels,
22929 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
22930 updateScanParams.ucChannelCount);
22931
22932
22933 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
22934 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
22935 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
22936 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
22937 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
22938
22939 wpalMemoryCopy( pSendBuffer+usDataOffset,
22940 &updateScanParams,
22941 sizeof(updateScanParams));
22942
22943 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
22944 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
22945
22946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22947 "End Update Scan Parameters Old Style");
22948
22949 /*Set the output values*/
22950 *ppSendBuffer = pSendBuffer;
22951 *pSize = usSendSize;
22952
22953 return WDI_STATUS_SUCCESS;
22954}
22955
22956/**
22957 @brief Process Update Scan Params function
22958
22959 @param pWDICtx: pointer to the WLAN DAL context
22960 pEventData: pointer to the event information structure
22961
22962 @see
22963 @return Result of the function call
22964*/
22965WDI_Status
22966WDI_PackUpdateScanParamsReqEx
22967(
22968 WDI_ControlBlockType* pWDICtx,
22969 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
22970 wpt_uint8** ppSendBuffer,
22971 wpt_uint16* pSize
22972)
22973{
22974 wpt_uint8* pSendBuffer = NULL;
22975 wpt_uint16 usDataOffset = 0;
22976 wpt_uint16 usSendSize = 0;
22977 tUpdateScanParamsEx updateScanParams = {0};
22978
22979
22980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22981 "Begin WDI Update Scan Parameters New Style Params");
22982 /*-----------------------------------------------------------------------
22983 Get message buffer
22984 -----------------------------------------------------------------------*/
22985 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
22986 sizeof(updateScanParams),
22987 &pSendBuffer, &usDataOffset, &usSendSize))||
22988 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22989 {
22990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22991 "Unable to get send buffer in Update Scan Params Ex req %x",
22992 pwdiUpdateScanParams);
22993 WDI_ASSERT(0);
22994 return WDI_STATUS_E_FAILURE;
22995 }
22996
22997 //
22998 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22999 //
23000
23001 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23002 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23003
23004 updateScanParams.ucChannelCount =
23005 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23006 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23007 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23008 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23009
23010 wpalMemoryCopy( updateScanParams.aChannels,
23011 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23012 updateScanParams.ucChannelCount);
23013
23014
23015 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23016 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23017 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23018 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23019 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23020
23021 wpalMemoryCopy( pSendBuffer+usDataOffset,
23022 &updateScanParams,
23023 sizeof(updateScanParams));
23024
23025 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23026 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23027
23028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23029 "End Update Scan Parameters New Style");
23030
23031 /*Set the output values*/
23032 *ppSendBuffer = pSendBuffer;
23033 *pSize = usSendSize;
23034
23035 return WDI_STATUS_SUCCESS;
23036}
23037
23038/**
23039 @brief Process Update Scan Params function
23040
23041 @param pWDICtx: pointer to the WLAN DAL context
23042 pEventData: pointer to the event information structure
23043
23044 @see
23045 @return Result of the function call
23046*/
23047WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023048WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023049(
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 WDI_ControlBlockType* pWDICtx,
23051 WDI_EventInfoType* pEventData
23052)
23053{
23054 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23055 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023056 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023057 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080023058 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023059
23060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023062 -------------------------------------------------------------------------*/
23063 if (( NULL == pEventData ) ||
23064 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23065 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23066 {
23067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023071 }
23072
23073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23074 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023075
23076 //
23077 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23078 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023079 if ( pWDICtx->wlanVersion.revision < 1 )
23080 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080023081 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023082 &pSendBuffer, &usSendSize);
23083 }
23084 else
23085 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080023086 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23087 &pSendBuffer, &usSendSize);
23088 }
23089
23090 if(WDI_STATUS_SUCCESS != wdiStatus)
23091 {
23092 //memory allocation failed
23093 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023094 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023095
Jeff Johnson295189b2012-06-20 16:38:30 -070023096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023097 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023099 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023100 wdiUpdateScanParamsCb, pEventData->pUserData,
23101 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023102}
23103
23104/**
23105 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023106
23107 @param pWDICtx: pointer to the WLAN DAL context
23108 pEventData: pointer to the event information structure
23109
Jeff Johnson295189b2012-06-20 16:38:30 -070023110 @see
23111 @return Result of the function call
23112*/
23113WDI_Status
23114WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023115(
Jeff Johnson295189b2012-06-20 16:38:30 -070023116 WDI_ControlBlockType* pWDICtx,
23117 WDI_EventInfoType* pEventData
23118)
23119{
23120 WDI_LowLevelIndType wdiInd;
23121 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23122
23123
23124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023125 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023126 -------------------------------------------------------------------------*/
23127 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23128 ( NULL == pEventData->pEventData ))
23129 {
23130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023131 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023132 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023133 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023134 }
23135
23136 /*-------------------------------------------------------------------------
23137 Extract indication and send it to UMAC
23138 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023139 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23140 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023141 sizeof(tPrefNetwFoundParams));
23142
23143 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023144 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023145
23146 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23147
Jeff Johnsone7245742012-09-05 17:12:55 -070023148 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023149 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023150 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023151
Jeff Johnsone7245742012-09-05 17:12:55 -070023152 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23153 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023154 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23155
23156 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23157 prefNetwFoundInd.prefNetwFoundParams.rssi;
23158
23159 // DEBUG
23160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23161 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23162 wdiInd.wdiIndicationType,
23163 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23164 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23165
23166 /*Notify UMAC*/
23167 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070023168
23169 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023170}
23171
23172/**
23173 @brief Process PNO Rsp function (called when a
23174 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023175
23176 @param pWDICtx: pointer to the WLAN DAL context
23177 pEventData: pointer to the event information structure
23178
Jeff Johnson295189b2012-06-20 16:38:30 -070023179 @see
23180 @return Result of the function call
23181*/
23182WDI_Status
23183WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023184(
Jeff Johnson295189b2012-06-20 16:38:30 -070023185 WDI_ControlBlockType* pWDICtx,
23186 WDI_EventInfoType* pEventData
23187)
23188{
23189 WDI_Status wdiStatus;
23190 eHalStatus halStatus;
23191 WDI_PNOScanCb wdiPNOScanCb = NULL;
23192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23193
23194 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023195 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 -------------------------------------------------------------------------*/
23197 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23198 ( NULL == pEventData->pEventData ))
23199 {
23200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023204 }
23205
23206
Jeff Johnsone7245742012-09-05 17:12:55 -070023207 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023208
23209 /*-------------------------------------------------------------------------
23210 Extract response and send it to UMAC
23211 -------------------------------------------------------------------------*/
23212 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023213 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023214
23215 /*Notify UMAC*/
23216 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23217
Jeff Johnsone7245742012-09-05 17:12:55 -070023218 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023219}/*WDI_ProcessSetPreferredNetworkRsp*/
23220
23221/**
23222 @brief Process RSSI Filter Rsp function (called when a
23223 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023224
23225 @param pWDICtx: pointer to the WLAN DAL context
23226 pEventData: pointer to the event information structure
23227
Jeff Johnson295189b2012-06-20 16:38:30 -070023228 @see
23229 @return Result of the function call
23230*/
23231WDI_Status
23232WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023233(
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 WDI_ControlBlockType* pWDICtx,
23235 WDI_EventInfoType* pEventData
23236)
23237{
23238 WDI_Status wdiStatus;
23239 eHalStatus halStatus;
23240 WDI_RssiFilterCb wdiRssiFilterCb;
23241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23242
23243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023245 -------------------------------------------------------------------------*/
23246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23247 ( NULL == pEventData->pEventData ))
23248 {
23249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023253 }
23254
Jeff Johnsone7245742012-09-05 17:12:55 -070023255 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023256
23257 /*-------------------------------------------------------------------------
23258 Extract response and send it to UMAC
23259 -------------------------------------------------------------------------*/
23260 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023261 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023262
23263 /*Notify UMAC*/
23264 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23265
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023267}/*WDI_ProcessSetRssiFilterRsp*/
23268
23269/**
23270 @brief Process Update Scan Params Rsp function (called when a
23271 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023272
23273 @param pWDICtx: pointer to the WLAN DAL context
23274 pEventData: pointer to the event information structure
23275
Jeff Johnson295189b2012-06-20 16:38:30 -070023276 @see
23277 @return Result of the function call
23278*/
23279WDI_Status
23280WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023281(
Jeff Johnson295189b2012-06-20 16:38:30 -070023282 WDI_ControlBlockType* pWDICtx,
23283 WDI_EventInfoType* pEventData
23284)
23285{
23286 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023287 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023288 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023289 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23291
23292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023294 -------------------------------------------------------------------------*/
23295 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23296 ( NULL == pEventData->pEventData ))
23297 {
23298 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 }
23303
23304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023305 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023306
Jeff Johnsone7245742012-09-05 17:12:55 -070023307 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023308
23309 /*-------------------------------------------------------------------------
23310 Extract response and send it to UMAC
23311 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023312 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23313 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023314 sizeof(halUpdScanParams.status));
23315
23316 uStatus = halUpdScanParams.status;
23317
23318 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023320
23321 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023322 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023323
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023325
23326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023327 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023328 halUpdScanParams.status);
23329
23330 /*Notify UMAC*/
23331 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23332
Jeff Johnsone7245742012-09-05 17:12:55 -070023333 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023334}
23335#endif // FEATURE_WLAN_SCAN_PNO
23336
23337#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023338WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023339WDI_8023MulticastListReq
23340(
23341 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23342 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23343 void* pUserData
23344)
23345{
23346 WDI_EventInfoType wdiEventData;
23347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23348
23349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023350 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023351
23352 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 ------------------------------------------------------------------------*/
23355 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23356 {
23357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23358 "WDI API call before module is initialized - Fail request");
23359
Jeff Johnsone7245742012-09-05 17:12:55 -070023360 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023361 }
23362
23363 /*------------------------------------------------------------------------
23364 Fill in Event data and post to the Main FSM
23365 ------------------------------------------------------------------------*/
23366 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023367 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023369 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023370 wdiEventData.pUserData = pUserData;
23371
23372 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23373}
23374
Jeff Johnsone7245742012-09-05 17:12:55 -070023375WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023376WDI_ReceiveFilterSetFilterReq
23377(
23378 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23379 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23380 void* pUserData
23381)
23382{
23383 WDI_EventInfoType wdiEventData;
23384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23385
23386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023387 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023388
23389 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023390 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023391 ------------------------------------------------------------------------*/
23392 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23393 {
23394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23395 "WDI API call before module is initialized - Fail request");
23396
Jeff Johnsone7245742012-09-05 17:12:55 -070023397 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 }
23399
23400 /*------------------------------------------------------------------------
23401 Fill in Event data and post to the Main FSM
23402 ------------------------------------------------------------------------*/
23403 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023404 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23405 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
23406 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams
Jeff Johnson295189b2012-06-20 16:38:30 -070023407 * sizeof(WDI_RcvPktFilterFieldParams) - 1);
Jeff Johnsone7245742012-09-05 17:12:55 -070023408 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023409 wdiEventData.pUserData = pUserData;
23410
23411
23412 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23413}
23414
Jeff Johnsone7245742012-09-05 17:12:55 -070023415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023416WDI_FilterMatchCountReq
23417(
23418 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
23419 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
23420 void* pUserData
23421)
23422{
23423 WDI_EventInfoType wdiEventData;
23424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23425
23426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023427 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023428
23429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 ------------------------------------------------------------------------*/
23432 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23433 {
23434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23435 "WDI API call before module is initialized - Fail request");
23436
Jeff Johnsone7245742012-09-05 17:12:55 -070023437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023438 }
23439
23440 /*------------------------------------------------------------------------
23441 Fill in Event data and post to the Main FSM
23442 ------------------------------------------------------------------------*/
23443 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023444 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023445 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 wdiEventData.pUserData = pUserData;
23448
23449
23450 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23451}
23452
Jeff Johnsone7245742012-09-05 17:12:55 -070023453WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023454WDI_ReceiveFilterClearFilterReq
23455(
23456 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
23457 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
23458 void* pUserData
23459)
23460{
23461 WDI_EventInfoType wdiEventData;
23462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23463
23464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023465 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023466
23467 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023468 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023469 ------------------------------------------------------------------------*/
23470 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23471 {
23472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23473 "WDI API call before module is initialized - Fail request");
23474
Jeff Johnsone7245742012-09-05 17:12:55 -070023475 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023476 }
23477
23478 /*------------------------------------------------------------------------
23479 Fill in Event data and post to the Main FSM
23480 ------------------------------------------------------------------------*/
23481 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023482 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023483 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023484 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023485 wdiEventData.pUserData = pUserData;
23486
23487
23488 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23489}
23490
23491/**
23492 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023493
23494 @param pWDICtx: pointer to the WLAN DAL context
23495 pEventData: pointer to the event information structure
23496
Jeff Johnson295189b2012-06-20 16:38:30 -070023497 @see
23498 @return Result of the function call
23499*/
23500WDI_Status
23501WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023502(
Jeff Johnson295189b2012-06-20 16:38:30 -070023503 WDI_ControlBlockType* pWDICtx,
23504 WDI_EventInfoType* pEventData
23505)
23506{
23507 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
23508 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023509 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023510 wpt_uint16 usDataOffset = 0;
23511 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023512 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023513 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023514 wpt_uint8 ucCurrentBSSSesIdx = 0;
23515 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023516
23517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023518 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023519
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023520 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
23521 if( NULL == pRcvFltMcAddrListType )
23522 {
23523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23524 "Failed to alloc in WDI_Process8023MulticastListReq");
23525 return WDI_STATUS_E_FAILURE;
23526 }
23527
Jeff Johnson295189b2012-06-20 16:38:30 -070023528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023530 -------------------------------------------------------------------------*/
23531 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023532 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023533 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023534 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023535 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
23536 {
23537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023538 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023539 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023541 return WDI_STATUS_E_FAILURE;
23542 }
23543
23544 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23545 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
23546 &pBSSSes);
23547 if ( NULL == pBSSSes )
23548 {
23549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023550 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023551 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023553 }
23554
23555 /*-----------------------------------------------------------------------
23556 Get message buffer
23557 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023558 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23559 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023560 sizeof(tHalRcvFltMcAddrListType),
23561 &pSendBuffer, &usDataOffset, &usSendSize))||
23562 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
23563 {
23564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23565 "Unable to get send buffer in "
23566 "WDI_Process8023MulticastListReq() %x %x %x",
23567 pEventData, pwdiFltPktSetMcListReqParamsType,
23568 wdi8023MulticastListCb);
23569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023571 }
23572
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023573 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070023574 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023575 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023577 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
23579 sizeof(tSirMacAddr));
23580 }
23581
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023582 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023583 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023584 pRcvFltMcAddrListType,
23585 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070023586
23587 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023588 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023589
23590
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023591 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023593 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023594 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023595 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023596 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023597 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023598}
23599
23600/**
23601 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023602
23603 @param pWDICtx: pointer to the WLAN DAL context
23604 pEventData: pointer to the event information structure
23605
Jeff Johnson295189b2012-06-20 16:38:30 -070023606 @see
23607 @return Result of the function call
23608*/
23609WDI_Status
23610WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023611(
Jeff Johnson295189b2012-06-20 16:38:30 -070023612 WDI_ControlBlockType* pWDICtx,
23613 WDI_EventInfoType* pEventData
23614)
23615{
23616 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
23617 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023618 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023619 wpt_uint16 usDataOffset = 0;
23620 wpt_uint16 usSendSize = 0;
23621 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023622 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023623 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023624 wpt_uint8 ucCurrentBSSSesIdx = 0;
23625 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023626 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
23627 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023628
23629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023630 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023631
23632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023634 -------------------------------------------------------------------------*/
23635 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023636 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070023637 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023638 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023639 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
23640 {
23641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023644 return WDI_STATUS_E_FAILURE;
23645 }
23646
23647 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23648 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
23649 &pBSSSes);
23650 if ( NULL == pBSSSes )
23651 {
23652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023653 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023655 }
23656
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023657 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
23658 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023659
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023660 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
23661 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23662 * sizeof(tHalSessionizedRcvPktFilterCfgType));
23663
23664 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
23665 usSessRcvPktFilterCfgSize);
23666
23667 if(NULL == pSessRcvPktFilterCfg)
23668 {
23669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23670 "%s: Failed to allocate memory for "
23671 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023672 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023673 WDI_ASSERT(0);
23674 return WDI_STATUS_E_FAILURE;
23675 }
23676
23677 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
23678
23679 /*-----------------------------------------------------------------------
23680 Get message buffer
23681 -----------------------------------------------------------------------*/
23682
23683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
23684 usSessRcvPktFilterCfgSize,
23685 &pSendBuffer, &usDataOffset, &usSendSize))||
23686 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
23687 {
23688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23689 "Unable to get send buffer in "
23690 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23691 pEventData, pwdiSetRcvPktFilterReqInfo,
23692 wdiReceiveFilterSetFilterCb);
23693 WDI_ASSERT(0);
23694 wpalMemoryFree(pSessRcvPktFilterCfg);
23695 return WDI_STATUS_E_FAILURE;
23696 }
23697
23698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23699 "UsData Off %d UsSend %d cfg %d",usDataOffset,
23700 usSendSize,pSessRcvPktFilterCfg);
23701
23702 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23703 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23704 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23705 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
23706
23707 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
23708
23709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23710 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
23711 pSessRcvPktFilterCfg->filterType);
23712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23713 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
23714 pSessRcvPktFilterCfg->coleasceTime);
23715
23716 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
23717 {
23718 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
23719 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23720 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
23721 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23722 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
23723 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23724 pSessRcvPktFilterCfg->paramsData[i].dataLength =
23725 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
23726
23727 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
23728 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23729 8);
23730 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
23731 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23732 8);
23733
23734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23735 "Out:Proto %d Comp Flag %d \n",
23736 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
23737 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
23738
23739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23740 "Data Offset %d Data Len %d\n",
23741 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
23742 pSessRcvPktFilterCfg->paramsData[i].dataLength);
23743
23744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23745 "CData: %d:%d:%d:%d:%d:%d\n",
23746 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
23747 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
23748 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
23749 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
23750 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
23751 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
23752
23753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23754 "MData: %d:%d:%d:%d:%d:%d\n",
23755 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
23756 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
23757 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
23758 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
23759 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
23760 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
23761 }
23762
23763 wpalMemoryCopy( pSendBuffer+usDataOffset,
23764 pSessRcvPktFilterCfg,
23765 usSessRcvPktFilterCfgSize);
23766
23767
23768 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23769 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
23770
23771 wpalMemoryFree(pSessRcvPktFilterCfg);
23772
23773 }
23774 /*If SLM_SESSIONIZATION is not supported then do this */
23775 else
23776 {
23777 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
23778 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23779 * sizeof(tHalRcvPktFilterParams));
23780
23781 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070023782 usRcvPktFilterCfgSize);
23783
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023784 if(NULL == pRcvPktFilterCfg)
23785 {
23786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23787 "%s: Failed to allocate memory for "
23788 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023789 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023790 WDI_ASSERT(0);
23791 return WDI_STATUS_E_FAILURE;
23792 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023793
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023794 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023795
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023796 /*-----------------------------------------------------------------------
23797 Get message buffer
23798 -----------------------------------------------------------------------*/
23799 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 usRcvPktFilterCfgSize,
23801 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023802 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
23803 {
23804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070023805 "Unable to get send buffer in "
23806 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23807 pEventData, pwdiSetRcvPktFilterReqInfo,
23808 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023809 WDI_ASSERT(0);
23810 wpalMemoryFree(pRcvPktFilterCfg);
23811 return WDI_STATUS_E_FAILURE;
23812 }
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,
Jeff Johnsone7245742012-09-05 17:12:55 -070023815 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070023816 usSendSize,usRcvPktFilterCfgSize);
23817
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023818 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23819 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23820 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23821 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
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_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023827 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070023828 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070023829
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023830 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
23831 {
23832 pRcvPktFilterCfg->paramsData[i].protocolLayer =
23833 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23834 pRcvPktFilterCfg->paramsData[i].cmpFlag =
23835 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23836 pRcvPktFilterCfg->paramsData[i].dataOffset =
23837 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23838 pRcvPktFilterCfg->paramsData[i].dataLength =
23839 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070023840
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023841 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023842 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23843 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023844 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23846 8);
23847
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070023850 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070023851 pRcvPktFilterCfg->paramsData[i].cmpFlag);
23852
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23854 "Data Offset %d Data Len %d\n",
23855 pRcvPktFilterCfg->paramsData[i].dataOffset,
23856 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070023857
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23859 "CData: %d:%d:%d:%d:%d:%d\n",
23860 pRcvPktFilterCfg->paramsData[i].compareData[0],
23861 pRcvPktFilterCfg->paramsData[i].compareData[1],
23862 pRcvPktFilterCfg->paramsData[i].compareData[2],
23863 pRcvPktFilterCfg->paramsData[i].compareData[3],
23864 pRcvPktFilterCfg->paramsData[i].compareData[4],
23865 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070023866
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23868 "MData: %d:%d:%d:%d:%d:%d\n",
23869 pRcvPktFilterCfg->paramsData[i].dataMask[0],
23870 pRcvPktFilterCfg->paramsData[i].dataMask[1],
23871 pRcvPktFilterCfg->paramsData[i].dataMask[2],
23872 pRcvPktFilterCfg->paramsData[i].dataMask[3],
23873 pRcvPktFilterCfg->paramsData[i].dataMask[4],
23874 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
23875 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023876
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023877 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 pRcvPktFilterCfg,
23879 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023880
23881
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023882 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23883 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023884
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023886 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023887 wpalMemoryFree(pRcvPktFilterCfg);
23888 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023890 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023894 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023895}
23896
23897/**
23898 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023899
23900 @param pWDICtx: pointer to the WLAN DAL context
23901 pEventData: pointer to the event information structure
23902
Jeff Johnson295189b2012-06-20 16:38:30 -070023903 @see
23904 @return Result of the function call
23905*/
23906WDI_Status
23907WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023908(
Jeff Johnson295189b2012-06-20 16:38:30 -070023909 WDI_ControlBlockType* pWDICtx,
23910 WDI_EventInfoType* pEventData
23911)
23912{
23913 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
23914 NULL;
23915 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
23916 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023917 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023918 wpt_uint16 usDataOffset = 0;
23919 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023920 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
23921 wpt_uint8 ucCurrentBSSSesIdx = 0;
23922 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023923
23924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023925 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023926
23927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023929 -------------------------------------------------------------------------*/
23930 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
23935 {
23936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 }
23941
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023942 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23943 pwdiRcvFltPktMatchCntReqParamsType->bssId,
23944 &pBSSSes);
23945 if ( NULL == pBSSSes )
23946 {
23947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023948 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023949 return WDI_STATUS_E_FAILURE;
23950 }
23951
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 /*-----------------------------------------------------------------------
23953 Get message buffer
23954 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23956 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023957 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023959 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 {
23961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23962 "Unable to get send buffer in "
23963 "WDI_ProcessFilterMatchCountReq() %x %x %x",
23964 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
23965 wdiFilterMatchCountCb);
23966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023968 }
23969
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023970 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
23971 wpalMemoryCopy( pSendBuffer+usDataOffset,
23972 &rcvFltPktMatchCntReqParam,
23973 sizeof(rcvFltPktMatchCntReqParam));
23974
Jeff Johnson295189b2012-06-20 16:38:30 -070023975 //
23976 // Don't need to fill send buffer other than header
23977 //
23978 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023979 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023980
23981
23982 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023983 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023984 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023985 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23986 wdiFilterMatchCountCb,
23987 pEventData->pUserData,
23988 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023989}
23990
23991/**
23992 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023993
23994 @param pWDICtx: pointer to the WLAN DAL context
23995 pEventData: pointer to the event information structure
23996
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 @see
23998 @return Result of the function call
23999*/
24000WDI_Status
24001WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024002(
Jeff Johnson295189b2012-06-20 16:38:30 -070024003 WDI_ControlBlockType* pWDICtx,
24004 WDI_EventInfoType* pEventData
24005)
Jeff Johnsone7245742012-09-05 17:12:55 -070024006{
Jeff Johnson295189b2012-06-20 16:38:30 -070024007 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24008 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024009 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024010 wpt_uint16 usDataOffset = 0;
24011 wpt_uint16 usSendSize = 0;
24012 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024013 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024014 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024015
24016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024017 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024018
24019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 -------------------------------------------------------------------------*/
24022 if (( NULL == pEventData ) ||
24023 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24024 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24027 {
24028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024031 return WDI_STATUS_E_FAILURE;
24032 }
24033
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024034 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024035 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24036 &pBSSSes);
24037 if ( NULL == pBSSSes )
24038 {
24039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024040 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024042 }
24043
24044 /*-----------------------------------------------------------------------
24045 Get message buffer
24046 -----------------------------------------------------------------------*/
24047 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024048 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024049 sizeof(tHalRcvFltPktClearParam),
24050 &pSendBuffer, &usDataOffset, &usSendSize))||
24051 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24052 {
24053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24054 "Unable to get send buffer in "
24055 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24056 pEventData, pwdiRcvFltPktClearReqParamsType,
24057 wdiRcvFltPktClearFilterCb);
24058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024060 }
24061
24062
24063 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024064 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024065 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024066 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024067
Jeff Johnsone7245742012-09-05 17:12:55 -070024068 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24069 wpalMemoryCopy( pSendBuffer+usDataOffset,
24070 &rcvFltPktClearParam,
24071 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024072
24073 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024074 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024075
24076
24077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024078 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024079 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024080 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024081 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024082 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024083}
24084
24085/**
24086 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024087
24088 @param pWDICtx: pointer to the WLAN DAL context
24089 pEventData: pointer to the event information structure
24090
Jeff Johnson295189b2012-06-20 16:38:30 -070024091 @see
24092 @return Result of the function call
24093*/
24094WDI_Status
24095WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024096(
Jeff Johnson295189b2012-06-20 16:38:30 -070024097 WDI_ControlBlockType* pWDICtx,
24098 WDI_EventInfoType* pEventData
24099)
24100{
Jeff Johnson295189b2012-06-20 16:38:30 -070024101 eHalStatus halStatus;
24102 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024103 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24104 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24106
24107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024108 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024109
24110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024111 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024112 -------------------------------------------------------------------------*/
24113 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24114 ( NULL == pEventData->pEventData ))
24115 {
24116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024117 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024120 }
24121
Jeff Johnsone7245742012-09-05 17:12:55 -070024122 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024123
24124 /*-------------------------------------------------------------------------
24125 Extract response and send it to UMAC
24126 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024127 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24128 {
24129 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24130 pEventData->pEventData,
24131 sizeof(halRcvFltPktSetMcListRsp));
24132
24133 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24134 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24135 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24136 halRcvFltPktSetMcListRsp.bssIdx;
24137 }
24138 else
24139 {
24140 halStatus = *((eHalStatus*)pEventData->pEventData);
24141 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24142 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024143
24144 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024145 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024146
Jeff Johnsone7245742012-09-05 17:12:55 -070024147 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024148}
24149
24150/**
24151 @brief Process Set Rsp function (called when a
24152 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024153
24154 @param pWDICtx: pointer to the WLAN DAL context
24155 pEventData: pointer to the event information structure
24156
Jeff Johnson295189b2012-06-20 16:38:30 -070024157 @see
24158 @return Result of the function call
24159*/
24160WDI_Status
24161WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024162(
Jeff Johnson295189b2012-06-20 16:38:30 -070024163 WDI_ControlBlockType* pWDICtx,
24164 WDI_EventInfoType* pEventData
24165)
24166{
Jeff Johnson295189b2012-06-20 16:38:30 -070024167 eHalStatus halStatus;
24168 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024169 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24170 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24172
24173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024174 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024175
24176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024177 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 -------------------------------------------------------------------------*/
24179 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24180 ( NULL == pEventData->pEventData ))
24181 {
24182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024183 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024186 }
24187
24188 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024189 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024190
24191 /*-------------------------------------------------------------------------
24192 Extract response and send it to UMAC
24193 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024194 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24195 {
24196 wpalMemoryCopy( &halSetPktFilterRspParams,
24197 pEventData->pEventData,
24198 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024199
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024200 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24201 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24202 }
24203 else
24204 {
24205 halStatus = *((eHalStatus*)pEventData->pEventData);
24206 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24207 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024208 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024209 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024210
Jeff Johnsone7245742012-09-05 17:12:55 -070024211 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024212}
24213
24214/**
24215 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024216
24217 @param pWDICtx: pointer to the WLAN DAL context
24218 pEventData: pointer to the event information structure
24219
Jeff Johnson295189b2012-06-20 16:38:30 -070024220 @see
24221 @return Result of the function call
24222*/
24223WDI_Status
24224WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024225(
Jeff Johnson295189b2012-06-20 16:38:30 -070024226 WDI_ControlBlockType* pWDICtx,
24227 WDI_EventInfoType* pEventData
24228)
24229{
Jeff Johnson295189b2012-06-20 16:38:30 -070024230 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024231 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024232 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24233 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024234
24235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24236
24237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024238 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024239
24240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 -------------------------------------------------------------------------*/
24243 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24244 ( NULL == pEventData->pEventData ))
24245 {
24246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 }
24251
Jeff Johnsone7245742012-09-05 17:12:55 -070024252 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024253
24254 /*-------------------------------------------------------------------------
24255 Extract response and send it to UMAC
24256 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024257 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24258 {
24259 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24260 pEventData->pEventData,
24261 sizeof(halRcvFltrPktMatachRsp));
24262
24263 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24264 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24265 }
24266 else
24267 {
24268 halStatus = *((eHalStatus*)pEventData->pEventData);
24269 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24270 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024271
24272 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024273 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024274
Jeff Johnsone7245742012-09-05 17:12:55 -070024275 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024276}
24277
24278/**
24279 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024280
24281 @param pWDICtx: pointer to the WLAN DAL context
24282 pEventData: pointer to the event information structure
24283
Jeff Johnson295189b2012-06-20 16:38:30 -070024284 @see
24285 @return Result of the function call
24286*/
24287WDI_Status
24288WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024289(
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 WDI_ControlBlockType* pWDICtx,
24291 WDI_EventInfoType* pEventData
24292)
24293{
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 eHalStatus halStatus;
24295 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024296 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24297 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24299
24300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024301 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024302
24303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 -------------------------------------------------------------------------*/
24306 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24307 ( NULL == pEventData->pEventData ))
24308 {
24309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 }
24314
24315 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024316 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024317
24318 /*-------------------------------------------------------------------------
24319 Extract response and send it to UMAC
24320 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024321 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24322 {
24323 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24324 pEventData->pEventData,
24325 sizeof(halRcvFltPktClearRspMsg));
24326
24327 wdiRcvFltPktClearRspParamsType.wdiStatus =
24328 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24329 wdiRcvFltPktClearRspParamsType.bssIdx =
24330 halRcvFltPktClearRspMsg.bssIdx;
24331 }
24332 else
24333 {
24334 halStatus = *((eHalStatus*)pEventData->pEventData);
24335 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24336 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024337
24338 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024339 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024340
Jeff Johnsone7245742012-09-05 17:12:55 -070024341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024342}
24343#endif // WLAN_FEATURE_PACKET_FILTERING
24344
24345/**
24346 @brief Process Shutdown Rsp function
24347 There is no shutdown response comming from HAL
24348 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024349
Jeff Johnson295189b2012-06-20 16:38:30 -070024350 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024351 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024352
24353 @see
24354 @return Result of the function call
24355*/
24356WDI_Status
24357WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024358(
Jeff Johnson295189b2012-06-20 16:38:30 -070024359 WDI_ControlBlockType* pWDICtx,
24360 WDI_EventInfoType* pEventData
24361)
24362{
24363 /*There is no shutdown response comming from HAL - function just kept for
24364 simmetry */
24365 WDI_ASSERT(0);
24366 return WDI_STATUS_SUCCESS;
24367}/*WDI_ProcessShutdownRsp*/
24368
24369/**
24370 @brief WDI_SetPowerParamsReq
24371
Jeff Johnsone7245742012-09-05 17:12:55 -070024372 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024373 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024374
Jeff Johnson295189b2012-06-20 16:38:30 -070024375 wdiPowerParamsCb: callback for passing back the response
24376 of the Set Power Params operation received from the
24377 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024378
Jeff Johnson295189b2012-06-20 16:38:30 -070024379 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024380 callback
24381
Jeff Johnson295189b2012-06-20 16:38:30 -070024382 @return Result of the function call
24383*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024384WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024385WDI_SetPowerParamsReq
24386(
24387 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24388 WDI_SetPowerParamsCb wdiPowerParamsCb,
24389 void* pUserData
24390)
24391{
24392 WDI_EventInfoType wdiEventData;
24393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24394
24395 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024396 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024397 ------------------------------------------------------------------------*/
24398 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24399 {
24400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24401 "WDI API call before module is initialized - Fail request");
24402
Jeff Johnsone7245742012-09-05 17:12:55 -070024403 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024404 }
24405
24406 /*------------------------------------------------------------------------
24407 Fill in Event data and post to the Main FSM
24408 ------------------------------------------------------------------------*/
24409 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024410 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024411 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024412 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 wdiEventData.pUserData = pUserData;
24414
24415 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24416}/*WDI_SetPowerParamsReq*/
24417
24418/**
24419 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024420
24421 @param pWDICtx: pointer to the WLAN DAL context
24422 pEventData: pointer to the event information structure
24423
Jeff Johnson295189b2012-06-20 16:38:30 -070024424 @see
24425 @return Result of the function call
24426*/
24427WDI_Status
24428WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024429(
Jeff Johnson295189b2012-06-20 16:38:30 -070024430 WDI_ControlBlockType* pWDICtx,
24431 WDI_EventInfoType* pEventData
24432)
24433{
24434 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
24435 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024436 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024437 wpt_uint16 usDataOffset = 0;
24438 wpt_uint16 usSendSize = 0;
24439 tSetPowerParamsType powerParams;
24440
24441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 -------------------------------------------------------------------------*/
24444 if (( NULL == pEventData ) ||
24445 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
24446 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
24447 {
24448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024452 }
24453
24454 /*-----------------------------------------------------------------------
24455 Get message buffer
24456 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024457 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024458 sizeof(powerParams),
24459 &pSendBuffer, &usDataOffset, &usSendSize))||
24460 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
24461 {
24462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24463 "Unable to get send buffer in Set PNO req %x %x %x",
24464 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
24465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024467 }
24468
24469 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070024470 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070024471 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
24472
24473 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024474 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
24476
24477 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024478 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070024479 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
24480
24481 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070024482 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070024483 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
24484
24485 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070024486 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070024487 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
24488
24489 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024490 powerParams.uBETInterval =
24491 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070024492
Jeff Johnsone7245742012-09-05 17:12:55 -070024493
24494 wpalMemoryCopy( pSendBuffer+usDataOffset,
24495 &powerParams,
24496 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024497
24498 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024499 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024500
24501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024502 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24505 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024506}
24507
24508/**
24509 @brief Process Power Params Rsp function (called when a
24510 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024511
24512 @param pWDICtx: pointer to the WLAN DAL context
24513 pEventData: pointer to the event information structure
24514
Jeff Johnson295189b2012-06-20 16:38:30 -070024515 @see
24516 @return Result of the function call
24517*/
24518WDI_Status
24519WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024520(
Jeff Johnson295189b2012-06-20 16:38:30 -070024521 WDI_ControlBlockType* pWDICtx,
24522 WDI_EventInfoType* pEventData
24523)
24524{
24525 WDI_Status wdiStatus;
24526 eHalStatus halStatus;
24527 WDI_SetPowerParamsCb wdiPowerParamsCb;
24528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24529
24530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024531 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024532 -------------------------------------------------------------------------*/
24533 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24534 ( NULL == pEventData->pEventData ))
24535 {
24536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024540 }
24541
Jeff Johnsone7245742012-09-05 17:12:55 -070024542 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024543
24544 /*-------------------------------------------------------------------------
24545 Extract response and send it to UMAC
24546 -------------------------------------------------------------------------*/
24547 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024548 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024549
24550 /*Notify UMAC*/
24551 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24552
Jeff Johnsone7245742012-09-05 17:12:55 -070024553 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024554}/*WDI_ProcessSetPowerParamsRsp*/
24555
24556#ifdef WLAN_FEATURE_GTK_OFFLOAD
24557/**
24558 @brief WDI_GTKOffloadReq will be called when the upper MAC
24559 wants to set GTK Rekey Counter while in power save. Upon
24560 the call of this API the WLAN DAL will pack and send a
24561 HAL GTK offload request message to the lower RIVA
24562 sub-system if DAL is in state STARTED.
24563
24564 In state BUSY this request will be queued. Request won't
24565 be allowed in any other state.
24566
24567 WDI_PostAssocReq must have been called.
24568
24569 @param pwdiGtkOffloadParams: the GTK offload as specified
24570 by the Device Interface
24571
24572 wdiGtkOffloadCb: callback for passing back the response
24573 of the GTK offload operation received from the device
24574
24575 pUserData: user data will be passed back with the
24576 callback
24577
24578 @see WDI_PostAssocReq
24579 @return Result of the function call
24580*/
24581WDI_Status
24582WDI_GTKOffloadReq
24583(
24584 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
24585 WDI_GtkOffloadCb wdiGtkOffloadCb,
24586 void* pUserData
24587)
24588{
24589 WDI_EventInfoType wdiEventData = {0};
24590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24591
24592 /*------------------------------------------------------------------------
24593 Sanity Check
24594 ------------------------------------------------------------------------*/
24595 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24596 {
24597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24598 "WDI API call before module is initialized - Fail request");
24599
24600 return WDI_STATUS_E_NOT_ALLOWED;
24601 }
24602
24603 /*------------------------------------------------------------------------
24604 Fill in Event data and post to the Main FSM
24605 ------------------------------------------------------------------------*/
24606 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
24607 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070024608 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070024609 wdiEventData.pCBfnc = wdiGtkOffloadCb;
24610 wdiEventData.pUserData = pUserData;
24611
24612 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24613}
24614
24615
24616/**
24617 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
24618 MAC wants to get GTK Rekey Counter while in power save.
24619 Upon the call of this API the WLAN DAL will pack and
24620 send a HAL GTK offload request message to the lower RIVA
24621 sub-system if DAL is in state STARTED.
24622
24623 In state BUSY this request will be queued. Request won't
24624 be allowed in any other state.
24625
24626 WDI_PostAssocReq must have been called.
24627
24628 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
24629 Information Message as specified by the
24630 Device Interface
24631
24632 wdiGtkOffloadGetInfoCb: callback for passing back the
24633 response of the GTK offload operation received from the
24634 device
24635
24636 pUserData: user data will be passed back with the
24637 callback
24638
24639 @see WDI_PostAssocReq
24640 @return Result of the function call
24641*/
24642WDI_Status
24643WDI_GTKOffloadGetInfoReq
24644(
24645 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
24646 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
24647 void* pUserData
24648)
24649{
24650 WDI_EventInfoType wdiEventData = {0};
24651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24652
24653 /*------------------------------------------------------------------------
24654 Sanity Check
24655 ------------------------------------------------------------------------*/
24656 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24657 {
24658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24659 "WDI API call before module is initialized - Fail request");
24660
24661 return WDI_STATUS_E_NOT_ALLOWED;
24662 }
24663
24664 /*------------------------------------------------------------------------
24665 Fill in Event data and post to the Main FSM
24666 ------------------------------------------------------------------------*/
24667 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
24668 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
24669 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
24670 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
24671 wdiEventData.pUserData = pUserData;
24672
24673 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24674}
24675
24676
24677/**
24678 @brief Process set GTK Offload Request function
24679
24680 @param pWDICtx: pointer to the WLAN DAL context
24681 pEventData: pointer to the event information structure
24682
24683 @see
24684 @return Result of the function call
24685*/
24686WDI_Status
24687WDI_ProcessGTKOffloadReq
24688(
24689 WDI_ControlBlockType* pWDICtx,
24690 WDI_EventInfoType* pEventData
24691)
24692{
24693 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
24694 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
24695 wpt_uint8* pSendBuffer = NULL;
24696 wpt_uint16 usDataOffset = 0;
24697 wpt_uint16 usSendSize = 0;
24698 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024699 wpt_uint8 ucCurrentSessionId = 0;
24700 WDI_BSSSessionType* pBSSSes = NULL;
24701
Jeff Johnson295189b2012-06-20 16:38:30 -070024702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24703
24704 /*-------------------------------------------------------------------------
24705 Sanity check
24706 -------------------------------------------------------------------------*/
24707 if (( NULL == pEventData ) ||
24708 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
24709 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
24710 {
24711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024712 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024713 WDI_ASSERT(0);
24714 return WDI_STATUS_E_FAILURE;
24715 }
24716
24717 /*-----------------------------------------------------------------------
24718 Get message buffer
24719 -----------------------------------------------------------------------*/
24720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
24721 sizeof(gtkOffloadReqParams),
24722 &pSendBuffer, &usDataOffset, &usSendSize))||
24723 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
24724 {
24725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24726 "Unable to get send buffer in GTK offload req %x %x %x",
24727 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
24728 WDI_ASSERT(0);
24729 return WDI_STATUS_E_FAILURE;
24730 }
24731
24732 //
24733 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
24734 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024735 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24736 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
24737 &pBSSSes);
24738 if ( NULL == pBSSSes )
24739 {
24740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024741 " %s : Association for this BSSID does not exist", __func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024742 return WDI_STATUS_E_FAILURE;
24743 }
24744
24745 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
24746
Jeff Johnson295189b2012-06-20 16:38:30 -070024747 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
24748 // Copy KCK
24749 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
24750 // Copy KEK
24751 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
24752 // Copy KeyReplayCounter
24753 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
24754
24755 wpalMemoryCopy( pSendBuffer+usDataOffset,
24756 &gtkOffloadReqParams,
24757 sizeof(gtkOffloadReqParams));
24758
24759 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
24760 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
24761
24762 /*-------------------------------------------------------------------------
24763 Send Get STA Request to HAL
24764 -------------------------------------------------------------------------*/
24765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24766 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
24767}
24768
24769
24770/**
24771 @brief Process GTK Offload Get Information Request function
24772
24773 @param pWDICtx: pointer to the WLAN DAL context
24774 pEventData: pointer to the event information structure
24775
24776 @see
24777 @return Result of the function call
24778*/
24779WDI_Status
24780WDI_ProcessGTKOffloadGetInfoReq
24781(
24782 WDI_ControlBlockType* pWDICtx,
24783 WDI_EventInfoType* pEventData
24784)
24785{
24786 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
24787 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
24788 wpt_uint8* pSendBuffer = NULL;
24789 wpt_uint16 usDataOffset = 0;
24790 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024791 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
24792 wpt_uint8 ucCurrentSessionId = 0;
24793 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024794
24795 /*-------------------------------------------------------------------------
24796 Sanity check
24797 -------------------------------------------------------------------------*/
24798 if (( NULL == pEventData ) ||
24799 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
24800 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
24801 {
24802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024804 WDI_ASSERT(0);
24805 return WDI_STATUS_E_FAILURE;
24806 }
24807
24808 /*-----------------------------------------------------------------------
24809 Get message buffer
24810 -----------------------------------------------------------------------*/
24811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024812 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024813 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024814 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070024815 {
24816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24817 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
24818 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
24819 WDI_ASSERT(0);
24820 return WDI_STATUS_E_FAILURE;
24821 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024822 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24823 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
24824 &pBSSSes);
24825 if ( NULL == pBSSSes )
24826 {
24827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024828 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024829 return WDI_STATUS_E_FAILURE;
24830 }
24831 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024832
24833 //
24834 // Don't need to fill send buffer other than header
24835 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024836 wpalMemoryCopy( pSendBuffer+usDataOffset,
24837 &halGtkOffloadGetInfoReqParams,
24838 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024839
24840 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
24841 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
24842
24843 /*-------------------------------------------------------------------------
24844 Send Get STA Request to HAL
24845 -------------------------------------------------------------------------*/
24846 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24847 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
24848}
24849
24850/**
24851 @brief Process host offload Rsp function (called when a
24852 response is being received over the bus from HAL)
24853
24854 @param pWDICtx: pointer to the WLAN DAL context
24855 pEventData: pointer to the event information structure
24856
24857 @see
24858 @return Result of the function call
24859*/
24860WDI_Status
24861WDI_ProcessGtkOffloadRsp
24862(
24863 WDI_ControlBlockType* pWDICtx,
24864 WDI_EventInfoType* pEventData
24865)
24866{
Jeff Johnson295189b2012-06-20 16:38:30 -070024867 eHalStatus halStatus;
24868 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024869 tHalGtkOffloadRspParams halGtkOffloadRspParams;
24870 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24872
24873 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
24874
24875 /*-------------------------------------------------------------------------
24876 Sanity check
24877 -------------------------------------------------------------------------*/
24878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24879 ( NULL == pEventData->pEventData))
24880 {
24881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024883 WDI_ASSERT(0);
24884 return WDI_STATUS_E_FAILURE;
24885 }
24886
24887 /*-------------------------------------------------------------------------
24888 Extract response and send it to UMAC
24889 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024890 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24891 {
24892 wpalMemoryCopy( &halGtkOffloadRspParams,
24893 pEventData->pEventData,
24894 sizeof(halGtkOffloadRspParams));
24895
24896 wdiGtkOffloadRsparams.ulStatus =
24897 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
24898 wdiGtkOffloadRsparams.bssIdx =
24899 halGtkOffloadRspParams.bssIdx;
24900 }
24901 else
24902 {
24903 halStatus = *((eHalStatus*)pEventData->pEventData);
24904 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24905 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024906
24907 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024908 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024909
24910 return WDI_STATUS_SUCCESS;
24911}
24912
24913/**
24914 @brief Process GTK Offload Get Information Response function
24915
24916 @param pWDICtx: pointer to the WLAN DAL context
24917 pEventData: pointer to the event information structure
24918
24919 @see
24920 @return Result of the function call
24921*/
24922WDI_Status
24923WDI_ProcessGTKOffloadGetInfoRsp
24924(
24925 WDI_ControlBlockType* pWDICtx,
24926 WDI_EventInfoType* pEventData
24927)
24928{
Jeff Johnson295189b2012-06-20 16:38:30 -070024929 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024930 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024931 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
24932 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024933
24934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24935
24936 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
24937
24938 /*-------------------------------------------------------------------------
24939 Sanity check
24940 -------------------------------------------------------------------------*/
24941 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24942 ( NULL == pEventData->pEventData ))
24943 {
24944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024946 WDI_ASSERT(0);
24947 return WDI_STATUS_E_FAILURE;
24948 }
24949
24950 /*-------------------------------------------------------------------------
24951 Extract response and send it to UMAC
24952 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024953 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24954 {
24955 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
24956 pEventData->pEventData,
24957 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024958
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024959 wdiGtkOffloadGetInfoRsparams.ulStatus =
24960 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
24961 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
24962 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
24963 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
24964 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
24965 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
24966 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
24967 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
24968 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
24969 wdiGtkOffloadGetInfoRsparams.bssIdx =
24970 halGtkOffloadGetInfoRspParams.bssIdx;
24971 }
24972 else
24973 {
24974 halStatus = *((eHalStatus*)pEventData->pEventData);
24975 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24976 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024977 /*Notify UMAC*/
24978 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24979 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024980 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024981
24982 return WDI_STATUS_SUCCESS;
24983}
24984#endif // WLAN_FEATURE_GTK_OFFLOAD
24985
24986#ifdef WLAN_WAKEUP_EVENTS
24987WDI_Status
24988WDI_ProcessWakeReasonInd
24989(
24990 WDI_ControlBlockType* pWDICtx,
24991 WDI_EventInfoType* pEventData
24992)
24993{
24994 WDI_LowLevelIndType *pWdiInd;
24995 tpWakeReasonParams pWakeReasonParams;
24996 wpt_uint32 allocSize = 0;
24997
24998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024999 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025000
25001 /*-------------------------------------------------------------------------
25002 Sanity check
25003 -------------------------------------------------------------------------*/
25004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25005 ( NULL == pEventData->pEventData ))
25006 {
25007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025008 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025009 WDI_ASSERT( 0 );
25010 return WDI_STATUS_E_FAILURE;
25011 }
25012
25013 /*-------------------------------------------------------------------------
25014 Extract indication and send it to UMAC
25015 -------------------------------------------------------------------------*/
25016 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25017
25018 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25019
25020 //Allocate memory for WDI_WakeReasonIndType structure
25021 pWdiInd = wpalMemoryAllocate(allocSize) ;
25022
25023 if(NULL == pWdiInd)
25024 {
25025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25026 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025027 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025028 WDI_ASSERT(0);
25029 return WDI_STATUS_E_FAILURE;
25030 }
25031
25032 wpalMemoryZero(pWdiInd, allocSize);
25033
25034 /* Fill in the indication parameters*/
25035 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25036 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25037 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25038 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25039 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25040 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25041 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25042 &(pWakeReasonParams->aDataStart[0]),
25043 pWakeReasonParams->ulStoredDataLen);
25044
25045 /*Notify UMAC*/
25046 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25047
25048 //Free memory allocated for WDI_WakeReasonIndType structure
25049 wpalMemoryFree(pWdiInd);
25050
25051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025052 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025053
25054 return WDI_STATUS_SUCCESS;
25055}
25056#endif // WLAN_WAKEUP_EVENTS
25057
25058void WDI_GetWcnssCompiledApiVersion
25059(
25060 WDI_WlanVersionType *pWcnssApiVersion
25061)
25062{
25063 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25064 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25065 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25066 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25067}
25068
25069/**
25070 @brief Process Set TM Level Rsp function (called when a
25071 response is being received over the bus from HAL)
25072
25073 @param pWDICtx: pointer to the WLAN DAL context
25074 pEventData: pointer to the event information structure
25075
25076 @see
25077 @return Result of the function call
25078*/
25079WDI_Status
25080WDI_ProcessSetTmLevelRsp
25081(
25082 WDI_ControlBlockType* pWDICtx,
25083 WDI_EventInfoType* pEventData
25084)
25085{
25086 WDI_Status wdiStatus;
25087 eHalStatus halStatus;
25088 WDI_SetTmLevelCb wdiSetTmLevelCb;
25089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25090
25091 /*-------------------------------------------------------------------------
25092 Sanity check
25093 -------------------------------------------------------------------------*/
25094 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25095 ( NULL == pEventData->pEventData ))
25096 {
25097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025099 WDI_ASSERT(0);
25100 return WDI_STATUS_E_FAILURE;
25101 }
25102
25103 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25104
25105 /*-------------------------------------------------------------------------
25106 Extract response and send it to UMAC
25107 -------------------------------------------------------------------------*/
25108 halStatus = *((eHalStatus*)pEventData->pEventData);
25109 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25110
25111 /*Notify UMAC*/
25112 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25113
25114 return WDI_STATUS_SUCCESS;
25115}/*WDI_ProcessSetTmLevelRsp*/
25116
25117/**
25118 @brief Process Set Thermal Mitigation level Changed request
25119
25120 @param pWDICtx: pointer to the WLAN DAL context
25121 pEventData: pointer to the event information structure
25122
25123 @see
25124 @return Result of the function call
25125*/
25126WDI_Status
25127WDI_ProcessSetTmLevelReq
25128(
25129 WDI_ControlBlockType* pWDICtx,
25130 WDI_EventInfoType* pEventData
25131)
25132{
25133 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25134 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25135 wpt_uint8* pSendBuffer = NULL;
25136 wpt_uint16 usDataOffset = 0;
25137 wpt_uint16 usSendSize = 0;
25138 tSetThermalMitgationType halTmMsg;
25139
25140 /*-------------------------------------------------------------------------
25141 Sanity check
25142 -------------------------------------------------------------------------*/
25143 if (( NULL == pEventData ) ||
25144 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25145 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25146 {
25147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025148 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025149 WDI_ASSERT(0);
25150 return WDI_STATUS_E_FAILURE;
25151 }
25152
25153 /*-----------------------------------------------------------------------
25154 Get message buffer
25155 -----------------------------------------------------------------------*/
25156 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25157 sizeof(halTmMsg),
25158 &pSendBuffer, &usDataOffset, &usSendSize))||
25159 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25160 {
25161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25162 "Unable to get send buffer in Set PNO req %x %x %x",
25163 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25164 WDI_ASSERT(0);
25165 return WDI_STATUS_E_FAILURE;
25166 }
25167
25168 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25169 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25170
25171 wpalMemoryCopy( pSendBuffer+usDataOffset,
25172 &halTmMsg,
25173 sizeof(halTmMsg));
25174
25175 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25176 pWDICtx->pfncRspCB = NULL;
25177 /*-------------------------------------------------------------------------
25178 Send Get STA Request to HAL
25179 -------------------------------------------------------------------------*/
25180 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25181 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25182}
25183
25184/* Fill the value from the global features enabled array to the global capabilities
25185 * bitmap struct
25186 */
25187static void
25188FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25189{
25190 wpt_int8 i;
25191 for (i=0; i<len; i++)
25192 {
25193 setFeatCaps(fCaps, enabledFeat[i]);
25194 }
25195}
25196
25197/**
25198 @brief WDI_featureCapsExchangeReq
25199 Post feature capability bitmap exchange event.
25200 Host will send its own capability to FW in this req and
25201 expect FW to send its capability back as a bitmap in Response
25202
25203 @param
25204
25205 wdiFeatureCapsExchangeCb: callback called on getting the response.
25206 It is kept to mantain similarity between WDI reqs and if needed, can
25207 be used in future. Currently, It is set to NULL
25208
25209 pUserData: user data will be passed back with the
25210 callback
25211
25212 @see
25213 @return Result of the function call
25214*/
25215WDI_Status
25216WDI_featureCapsExchangeReq
25217(
25218 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25219 void* pUserData
25220)
25221{
25222 WDI_EventInfoType wdiEventData;
25223 wpt_int32 fCapsStructSize;
25224
25225 /*------------------------------------------------------------------------
25226 Sanity Check
25227 ------------------------------------------------------------------------*/
25228 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25229 {
25230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25231 "WDI API call before module is initialized - Fail request");
25232
25233 return WDI_STATUS_E_NOT_ALLOWED;
25234 }
25235
25236 /* Allocate memory separately for global variable carrying FW caps */
25237 fCapsStructSize = sizeof(tWlanFeatCaps);
25238 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25239 if ( NULL == gpHostWlanFeatCaps )
25240 {
25241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25242 "Cannot allocate memory for host capability info\n");
25243 WDI_ASSERT(0);
25244 return WDI_STATUS_MEM_FAILURE;
25245 }
25246
25247 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25248
25249 /*------------------------------------------------------------------------
25250 Fill in Event data and post to the Main FSM
25251 ------------------------------------------------------------------------*/
25252 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25253 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25255 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025256 gpHostWlanFeatCaps->featCaps[0],
25257 gpHostWlanFeatCaps->featCaps[1],
25258 gpHostWlanFeatCaps->featCaps[2],
25259 gpHostWlanFeatCaps->featCaps[3]
25260 );
25261
25262 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25263 wdiEventData.pEventData = gpHostWlanFeatCaps;
25264 wdiEventData.uEventDataSize = fCapsStructSize;
25265 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25266 wdiEventData.pUserData = pUserData;
25267
25268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25269}
25270
25271/**
Yathish9f22e662012-12-10 14:21:35 -080025272 @brief Disable Active mode offload in Host
25273
25274 @param void
25275 @see
25276 @return void
25277*/
25278void
25279WDI_disableCapablityFeature(wpt_uint8 feature_index)
25280{
25281 supportEnabledFeatures[feature_index] = 0;
25282 return;
25283}
25284
25285/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025286 @brief Process Host-FW Capability Exchange Request function
25287
25288 @param pWDICtx: pointer to the WLAN DAL context
25289 pEventData: pointer to the event information structure
25290
25291 @see
25292 @return Result of the function call
25293*/
25294WDI_Status
25295WDI_ProcessFeatureCapsExchangeReq
25296(
25297 WDI_ControlBlockType* pWDICtx,
25298 WDI_EventInfoType* pEventData
25299)
25300{
25301 wpt_uint8* pSendBuffer = NULL;
25302 wpt_uint16 usDataOffset = 0;
25303 wpt_uint16 usSendSize = 0;
25304 wpt_uint16 usLen = 0;
25305
25306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25307
25308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025309 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025310
25311 /*-------------------------------------------------------------------------
25312 Sanity check
25313 -------------------------------------------------------------------------*/
25314 /* Call back function is NULL since not required for cap exchange req */
25315 if (( NULL == pEventData ) ||
25316 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25317 {
25318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025320 WDI_ASSERT(0);
25321 return WDI_STATUS_E_FAILURE;
25322 }
25323
25324 /*-----------------------------------------------------------------------
25325 Get message buffer
25326 -----------------------------------------------------------------------*/
25327 usLen = sizeof(tWlanFeatCaps);
25328
25329 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25330 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25331 usLen,
25332 &pSendBuffer, &usDataOffset, &usSendSize))||
25333 ( usSendSize < (usDataOffset + usLen )))
25334 {
25335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25336 "Unable to get send buffer in feat caps exchange req %x %x",
25337 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25338 WDI_ASSERT(0);
25339 return WDI_STATUS_E_FAILURE;
25340 }
25341
25342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025343 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025344 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25345 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25346 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25347 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25348 );
25349
25350 /* Copy host caps after the offset in the send buffer */
25351 wpalMemoryCopy( pSendBuffer+usDataOffset,
25352 (tWlanFeatCaps *)pEventData->pEventData,
25353 usLen);
25354
25355 /*-------------------------------------------------------------------------
25356 Send Start Request to HAL
25357 -------------------------------------------------------------------------*/
25358 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25359 (WDI_StartRspCb)pEventData->pCBfnc,
25360 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25361
25362}/*WDI_ProcessFeatureCapsExchangeReq*/
25363
25364/**
25365 @brief Process Host-FW Capability Exchange Response function
25366
25367 @param pWDICtx: pointer to the WLAN DAL context
25368 pEventData: pointer to the event information structure
25369
25370 @see
25371 @return Result of the function call
25372*/
25373WDI_Status
25374WDI_ProcessFeatureCapsExchangeRsp
25375(
25376 WDI_ControlBlockType* pWDICtx,
25377 WDI_EventInfoType* pEventData
25378)
25379{
25380 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25381 wpt_int32 fCapsStructSize;
25382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25383
25384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025385 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025386
25387 /*-------------------------------------------------------------------------
25388 Sanity check
25389 -------------------------------------------------------------------------*/
25390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25391 ( NULL == pEventData->pEventData ))
25392 {
25393 /* It will go here when riva is old (doesn't understand this msg) and host is new */
25394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025396 WDI_ASSERT(0);
25397 return WDI_STATUS_E_FAILURE;
25398 }
25399
25400 /* Allocate memory separately for global variable carrying FW caps */
25401 fCapsStructSize = sizeof(tWlanFeatCaps);
25402 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25403 if ( NULL == gpFwWlanFeatCaps )
25404 {
25405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25406 "Cannot allocate memory for host capability info\n");
25407 WDI_ASSERT(0);
25408 return WDI_STATUS_MEM_FAILURE;
25409 }
25410
25411 /*-------------------------------------------------------------------------
25412 Unpack HAL Response Message - the header was already extracted by the
25413 main Response Handling procedure
25414 -------------------------------------------------------------------------*/
25415 /*-------------------------------------------------------------------------
25416 Extract response and send it to UMAC
25417 -------------------------------------------------------------------------*/
25418
25419 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
25420 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070025421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25422 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025423 gpFwWlanFeatCaps->featCaps[0],
25424 gpFwWlanFeatCaps->featCaps[1],
25425 gpFwWlanFeatCaps->featCaps[2],
25426 gpFwWlanFeatCaps->featCaps[3]
25427 );
Jeff Johnson295189b2012-06-20 16:38:30 -070025428 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
25429
25430 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
25431 if (wdiFeatureCapsExchangeCb != NULL)
25432 wdiFeatureCapsExchangeCb(NULL, NULL);
25433
25434 return WDI_STATUS_SUCCESS;
25435}
25436
Mohit Khanna4a70d262012-09-11 16:30:12 -070025437#ifdef WLAN_FEATURE_11AC
25438WDI_Status
25439WDI_ProcessUpdateVHTOpModeRsp
25440(
25441 WDI_ControlBlockType* pWDICtx,
25442 WDI_EventInfoType* pEventData
25443)
25444{
25445 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25446 WDI_Status wdiStatus;
25447 eHalStatus halStatus;
25448
25449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25450
25451 /*-------------------------------------------------------------------------
25452 Sanity check
25453 -------------------------------------------------------------------------*/
25454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25455 ( NULL == pEventData->pEventData))
25456 {
25457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025458 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025459 WDI_ASSERT(0);
25460 return WDI_STATUS_E_FAILURE;
25461 }
25462 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
25463
25464 /*-------------------------------------------------------------------------
25465 Extract response and send it to UMAC
25466 -------------------------------------------------------------------------*/
25467 halStatus = *((eHalStatus*)pEventData->pEventData);
25468 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25469
25470 /*Notify UMAC*/
25471 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
25472
25473 return WDI_STATUS_SUCCESS;
25474}
25475#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025476/**
25477 @brief WDI_getHostWlanFeatCaps
25478 WDI API that returns whether the feature passed to it as enum value in
25479 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
25480 variable storing host capability bitmap to find this. This can be used by
25481 other moduels to decide certain things like call different APIs based on
25482 whether a particular feature is supported.
25483
25484 @param
25485
25486 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
25487
25488 @see
25489 @return
25490 0 - if the feature is NOT supported in host
25491 any non-zero value - if the feature is SUPPORTED in host.
25492*/
25493wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
25494{
25495 wpt_uint8 featSupported = 0;
25496 if (gpHostWlanFeatCaps != NULL)
25497 {
25498 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
25499 }
25500 else
25501 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025503 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025504 }
25505 return featSupported;
25506}
25507
25508/**
25509 @brief WDI_getFwWlanFeatCaps
25510 WDI API that returns whether the feature passed to it as enum value in
25511 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
25512 variable storing host capability bitmap to find this. This can be used by
25513 other moduels to decide certain things like call different APIs based on
25514 whether a particular feature is supported.
25515
25516 @param
25517
25518 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
25519 in wlan_hal_msg.h.
25520
25521 @see
25522 @return
25523 0 - if the feature is NOT supported in FW
25524 any non-zero value - if the feature is SUPPORTED in FW.
25525*/
25526wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
25527{
25528 wpt_uint8 featSupported = 0;
25529 if (gpFwWlanFeatCaps != NULL)
25530 {
25531 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
25532 }
25533 else
25534 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025536 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025537 }
25538 return featSupported;
25539}
Mohit Khanna4a70d262012-09-11 16:30:12 -070025540
25541#ifdef WLAN_FEATURE_11AC
25542WDI_Status
25543WDI_ProcessUpdateVHTOpModeReq
25544(
25545 WDI_ControlBlockType* pWDICtx,
25546 WDI_EventInfoType* pEventData
25547)
25548{
25549 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
25550 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25551 wpt_uint8* pSendBuffer = NULL;
25552 wpt_uint16 usDataOffset = 0;
25553 wpt_uint16 usSendSize = 0;
25554
25555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25556
25557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025558 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025559
25560 /*-------------------------------------------------------------------------
25561 Sanity check
25562 -------------------------------------------------------------------------*/
25563 if (( NULL == pEventData ) ||
25564 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
25565 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
25566 {
25567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025568 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025569 WDI_ASSERT(0);
25570 return WDI_STATUS_E_FAILURE;
25571 }
25572
25573 /*-----------------------------------------------------------------------
25574 Get message buffer
25575 -----------------------------------------------------------------------*/
25576 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
25577 sizeof(WDI_UpdateVHTOpMode),
25578 &pSendBuffer, &usDataOffset, &usSendSize))||
25579 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
25580 {
25581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25582 "Unable to get send buffer in update vht opMode req");
25583 WDI_ASSERT(0);
25584 return WDI_STATUS_E_FAILURE;
25585 }
25586
25587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25588 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
25589
25590 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
25591 sizeof(WDI_UpdateVHTOpMode));
25592
25593 /*-------------------------------------------------------------------------
25594 Send Start Request to HAL
25595 -------------------------------------------------------------------------*/
25596 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25597 wdiVHTOpModeCb,
25598 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
25599
25600}
25601
25602WDI_Status
25603WDI_UpdateVHTOpModeReq
25604(
25605 WDI_UpdateVHTOpMode *pData,
25606 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
25607 void* pUserData
25608)
25609{
25610 WDI_EventInfoType wdiEventData;
25611
25612 /*------------------------------------------------------------------------
25613 Sanity Check
25614 ------------------------------------------------------------------------*/
25615 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25616 {
25617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25618 "WDI API call before module is initialized - Fail request");
25619
25620 return WDI_STATUS_E_NOT_ALLOWED;
25621 }
25622
25623 /*------------------------------------------------------------------------
25624 Fill in Event data and post to the Main FSM
25625 ------------------------------------------------------------------------*/
25626 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
25627 wdiEventData.pEventData = pData;
25628 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
25629 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
25630 wdiEventData.pUserData = pUserData;
25631
25632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25633 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
25634
25635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25636
25637}
25638#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025639
25640/**
25641 @brief WDI_TransportChannelDebug -
25642 Display DXE Channel debugging information
25643 User may request to display DXE channel snapshot
25644 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025645
Jeff Johnsonb88db982012-12-10 13:34:59 -080025646 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025647 @param enableStallDetect : Enable stall detect feature
25648 This feature will take effect to data performance
25649 Not integrate till fully verification
25650 @see
25651 @return none
25652*/
25653void WDI_TransportChannelDebug
25654(
25655 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025656 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025657)
25658{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025659 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025660 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070025661}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025662/**
25663 @brief WDI_SsrTimerCB
25664 Callback function for SSR timer, if this is called then the graceful
25665 shutdown for Riva did not happen.
25666
25667 @param pUserData : user data to timer
25668
25669 @see
25670 @return none
25671*/
25672void
25673WDI_SsrTimerCB
25674(
25675 void *pUserData
25676)
25677{
25678 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
25679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25680
25681 if (NULL == pWDICtx )
25682 {
25683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025684 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025685 WDI_ASSERT(0);
25686 return;
25687 }
25688 wpalRivaSubystemRestart();
25689
25690 return;
25691
25692}/*WDI_SsrTimerCB*/