blob: 838d2d84edca97fd9ab8fff0cff20ad0c3379684 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
105#ifdef ANI_MANF_DIAG
106#include "pttMsgApi.h"
107#endif /* ANI_MANF_DIAG */
108
109/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700110 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700111 ===========================================================================*/
112#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
113
Jeff Johnsone7245742012-09-05 17:12:55 -0700114#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
115#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
116
Yathishd8713192012-12-10 14:21:35 -0800117#define FEATURE_NOT_SUPPORTED 128
Jeff Johnson295189b2012-06-20 16:38:30 -0700118
119#ifdef FEATURE_WLAN_SCAN_PNO
120#define WDI_PNO_VERSION_MASK 0x8000
121#endif
122
123/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700126static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700127/* array of features supported. Need to add a new feature
128 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
129 */
130static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800131 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800132#ifdef WLAN_SOFTAP_VSTA_FEATURE
133 ,SAP32STA
134#else
135 ,FEATURE_NOT_SUPPORTED
136#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800137#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800138 ,TDLS
139#else
140 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800141#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800142 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800143#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
144 ,WLANACTIVE_OFFLOAD
145#else
146 ,FEATURE_NOT_SUPPORTED
147#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800148 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700149
150/*--------------------------------------------------------------------------
151 WLAN DAL State Machine
152 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700153WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700154{
155 /*WDI_INIT_ST*/
156 {{
157 WDI_MainStart, /*WDI_START_EVENT*/
158 NULL, /*WDI_STOP_EVENT*/
159 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
160 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
161 WDI_MainClose, /*WDI_CLOSE_EVENT*/
162 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
163 }},
164
165 /*WDI_STARTED_ST*/
166 {{
167 WDI_MainStartStarted, /*WDI_START_EVENT*/
168 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
169 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
170 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
171 NULL, /*WDI_CLOSE_EVENT*/
172 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
173 }},
174
175 /*WDI_STOPPED_ST*/
176 {{
177 WDI_MainStart, /*WDI_START_EVENT*/
178 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
179 NULL, /*WDI_REQUEST_EVENT*/
180 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
181 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700182 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700183 }},
184
185 /*WDI_BUSY_ST*/
186 {{
187 WDI_MainStartBusy, /*WDI_START_EVENT*/
188 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
189 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
190 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
191 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
192 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
193 }}
194};
195
Jeff Johnsone7245742012-09-05 17:12:55 -0700196/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700197 DAL Request Processing Array - the functions in this table will only be
198 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700199 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700200 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700201WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700202{
203 /*INIT*/
204 WDI_ProcessStartReq, /* WDI_START_REQ */
205 WDI_ProcessStopReq, /* WDI_STOP_REQ */
206 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
207
208 /*SCAN*/
209 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
210 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
211 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
212 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
213
214 /*ASSOCIATION*/
215 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
216 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
217 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
218 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
219 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
220
221 /* Security */
222 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
223 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
224 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
225 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
226
227 /* QoS and BA APIs */
228 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
229 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
230 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
231 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
232 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
233
234 /* Miscellaneous Control APIs */
235 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
236 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
237 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
238 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
239 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
240
241 /*BA APIs*/
242 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
243 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
244
245 /*Beacon processing APIs*/
246 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
247 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
248
249 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
250 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
251 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
252 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
253#ifdef WLAN_FEATURE_P2P
254 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
255#else
256 NULL,
257#endif
258 /* PowerSave APIs */
259 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
260 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
261 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
262 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
263 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
264 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
265 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
266 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
267 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
268 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
269 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
270 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
271 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
272 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
273 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
274 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
275 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
276 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
277 /*NV Download APIs*/
278 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
279 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
280 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
281#ifdef WLAN_FEATURE_VOWIFI_11R
282 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
283#else
284 NULL,
285#endif /* WLAN_FEATURE_VOWIFI_11R */
286 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
287 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
288#ifdef ANI_MANF_DIAG
289 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
290#else
291 NULL,
292#endif /* ANI_MANF_DIAG */
Jeff Johnsone7245742012-09-05 17:12:55 -0700293
294#ifdef FEATURE_OEM_DATA_SUPPORT
295 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
296#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700297 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700298#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700299 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700300
301 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700302
303#ifdef FEATURE_WLAN_SCAN_PNO
304 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
305 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
306 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
307#else
308 NULL,
309 NULL,
310 NULL,
311#endif /* FEATURE_WLAN_SCAN_PNO */
312
313 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700314
Jeff Johnson295189b2012-06-20 16:38:30 -0700315#ifdef WLAN_FEATURE_PACKET_FILTERING
316 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700317 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700318 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700319 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700320 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700321 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700322 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700323 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700324#else
325 NULL,
326 NULL,
327 NULL,
328 NULL,
329#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700330 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700331 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
332 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
333
334 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
335#ifdef FEATURE_WLAN_CCX
336 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
337#else
338 NULL,
339#endif
340
341#ifdef WLAN_FEATURE_GTK_OFFLOAD
342 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
343 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
344#else
345 NULL,
346 NULL,
347#endif // WLAN_FEATURE_GTK_OFFLOAD
348
349 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
350 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700351#ifdef WLAN_FEATURE_11AC
352 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
353#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700354 /*-------------------------------------------------------------------------
355 Indications
356 -------------------------------------------------------------------------*/
357 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800358 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700359};
360
361
Jeff Johnsone7245742012-09-05 17:12:55 -0700362/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700363 DAL Request Processing Array - the functions in this table will only be
364 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700365 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700366 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700367WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700368{
369 /*INIT*/
370 WDI_ProcessStartRsp, /* WDI_START_RESP */
371 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
372 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
373
374 /*SCAN*/
375 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
376 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
377 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
378 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
379
380 /* ASSOCIATION*/
381 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
382 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
383 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
384 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
385 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
386
387 /* Security */
388 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
389 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
390 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
391 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
392
393 /* QoS and BA APIs */
394 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
395 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
396 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
397 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
398 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
399
400 /* Miscellaneous Control APIs */
401 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
402 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
403 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
404 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
405 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
406
407 /* BA APIs*/
408 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
409 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700410
Jeff Johnson295189b2012-06-20 16:38:30 -0700411 /* IBSS APIs*/
412 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
413 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
414
415 /*Soft AP APIs*/
416 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
417 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
418 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
419 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
420
421 /* PowerSave APIs */
422 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
423 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
424 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
425 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
426 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
427 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
428 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
429 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
430 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
431 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
432 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
433 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
434 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
435 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
436 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
437 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
438 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
439 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700440
Jeff Johnson295189b2012-06-20 16:38:30 -0700441
442 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
443
444 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
445 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
446#ifdef WLAN_FEATURE_VOWIFI_11R
447 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
448#else
449 NULL,
450#endif /* WLAN_FEATURE_VOWIFI_11R */
451 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
452 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700453#ifdef FEATURE_OEM_DATA_SUPPORT
454 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
455#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700456 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700457#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700458 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
459
460#ifdef WLAN_FEATURE_P2P
461 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
462#else
463 NULL,
464#endif
465
466#ifdef ANI_MANF_DIAG
467 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
468#else
469 NULL,
470#endif /* ANI_MANF_DIAG */
471
Jeff Johnsone7245742012-09-05 17:12:55 -0700472 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
473
Jeff Johnson295189b2012-06-20 16:38:30 -0700474#ifdef FEATURE_WLAN_SCAN_PNO
475 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
476 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
477 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
478#else
479 NULL,
480 NULL,
481 NULL,
482#endif // FEATURE_WLAN_SCAN_PNO
483
484 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
485
486 /*---------------------------------------------------------------------
487 Indications
488 ---------------------------------------------------------------------*/
489#ifdef WLAN_FEATURE_PACKET_FILTERING
490 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700491 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700492 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700493 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700494 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700495 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700496 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700497 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700498#else
499 NULL,
500 NULL,
501 NULL,
502 NULL,
503#endif // WLAN_FEATURE_PACKET_FILTERING
504
505 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
506 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
507
508 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
509#ifdef FEATURE_WLAN_CCX
510 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
511#else
512 NULL,
513#endif
514
515#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700516 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
517 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700518#else
519 NULL,
520 NULL,
521#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700522 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
523 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700524#ifdef WLAN_FEATURE_11AC
525 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
526#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700527
528 /*---------------------------------------------------------------------
529 Indications
530 ---------------------------------------------------------------------*/
531 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
532 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
533 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
534 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
535 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
536 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
537
538 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
539
540 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
541
542#ifdef WLAN_FEATURE_P2P
543 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
544#else
545 NULL,
546#endif
547
548#ifdef FEATURE_WLAN_SCAN_PNO
549 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
550#else
551 NULL,
552#endif // FEATURE_WLAN_SCAN_PNO
553
554#ifdef WLAN_WAKEUP_EVENTS
555 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
556#else // WLAN_WAKEUP_EVENTS
557 NULL,
558#endif // WLAN_WAKEUP_EVENTS
559
560 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800561
562#ifdef WLAN_FEATURE_P2P
563 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
564#else
565 NULL,
566#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700567};
568
569
Jeff Johnsone7245742012-09-05 17:12:55 -0700570/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700571 WLAN DAL Global Control Block
572 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700573WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700574static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
575
Jeff Johnsone7245742012-09-05 17:12:55 -0700576const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700577
578/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700579WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700580void* WDI_GET_PAL_CTX( void )
581{
Jeff Johnsone7245742012-09-05 17:12:55 -0700582 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700583}/*WDI_GET_PAL_CTX*/
584
Jeff Johnsone7245742012-09-05 17:12:55 -0700585/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700586 Helper inline converters
587 ============================================================================*/
588/*Convert WDI driver type into HAL driver type*/
589WPT_STATIC WPT_INLINE WDI_Status
590WDI_HAL_2_WDI_STATUS
591(
592 eHalStatus halStatus
593);
594
595/*Convert WDI request type into HAL request type*/
596WPT_STATIC WPT_INLINE tHalHostMsgType
597WDI_2_HAL_REQ_TYPE
598(
599 WDI_RequestEnumType wdiReqType
600);
601
602/*Convert WDI response type into HAL response type*/
603WPT_STATIC WPT_INLINE WDI_ResponseEnumType
604HAL_2_WDI_RSP_TYPE
605(
606 tHalHostMsgType halMsg
607);
608
609/*Convert WDI driver type into HAL driver type*/
610WPT_STATIC WPT_INLINE tDriverType
611WDI_2_HAL_DRV_TYPE
612(
613 WDI_DriverType wdiDriverType
614);
615
616/*Convert WDI stop reason into HAL stop reason*/
617WPT_STATIC WPT_INLINE tHalStopType
618WDI_2_HAL_STOP_REASON
619(
620 WDI_StopType wdiStopType
621);
622
623/*Convert WDI scan mode type into HAL scan mode type*/
624WPT_STATIC WPT_INLINE eHalSysMode
625WDI_2_HAL_SCAN_MODE
626(
627 WDI_ScanMode wdiScanMode
628);
629
630/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700631WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700632WDI_2_HAL_SEC_CH_OFFSET
633(
634 WDI_HTSecondaryChannelOffset wdiSecChOffset
635);
636
637/*Convert WDI BSS type into HAL BSS type*/
638WPT_STATIC WPT_INLINE tSirBssType
639WDI_2_HAL_BSS_TYPE
640(
641 WDI_BssType wdiBSSType
642);
643
644/*Convert WDI NW type into HAL NW type*/
645WPT_STATIC WPT_INLINE tSirNwType
646WDI_2_HAL_NW_TYPE
647(
648 WDI_NwType wdiNWType
649);
650
651/*Convert WDI chanel bonding type into HAL cb type*/
652WPT_STATIC WPT_INLINE ePhyChanBondState
653WDI_2_HAL_CB_STATE
654(
655 WDI_PhyChanBondState wdiCbState
656);
657
658/*Convert WDI chanel bonding type into HAL cb type*/
659WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
660WDI_2_HAL_HT_OPER_MODE
661(
662 WDI_HTOperatingMode wdiHTOperMode
663);
664
665/*Convert WDI mimo PS type into HAL mimo PS type*/
666WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
667WDI_2_HAL_MIMO_PS
668(
669 WDI_HTMIMOPowerSaveState wdiHTOperMode
670);
671
672/*Convert WDI ENC type into HAL ENC type*/
673WPT_STATIC WPT_INLINE tAniEdType
674WDI_2_HAL_ENC_TYPE
675(
676 WDI_EncryptType wdiEncType
677);
678
679/*Convert WDI WEP type into HAL WEP type*/
680WPT_STATIC WPT_INLINE tAniWepType
681WDI_2_HAL_WEP_TYPE
682(
683 WDI_WepType wdiWEPType
684);
685
686/*Convert WDI Link State into HAL Link State*/
687WPT_STATIC WPT_INLINE tSirLinkState
688WDI_2_HAL_LINK_STATE
689(
690 WDI_LinkStateType wdiLinkState
691);
692
Jeff Johnsone7245742012-09-05 17:12:55 -0700693/*Translate a STA Context from WDI into HAL*/
694WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700695void
696WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700697(
Jeff Johnson295189b2012-06-20 16:38:30 -0700698 tConfigStaParams* phalConfigSta,
699 WDI_ConfigStaReqInfoType* pwdiConfigSta
700);
Jeff Johnsone7245742012-09-05 17:12:55 -0700701
702/*Translate a Rate set info from WDI into HAL*/
703WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700704WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700705(
Jeff Johnson295189b2012-06-20 16:38:30 -0700706 tSirMacRateSet* pHalRateSet,
707 WDI_RateSet* pwdiRateSet
708);
709
710/*Translate an EDCA Parameter Record from WDI into HAL*/
711WPT_STATIC WPT_INLINE void
712WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700713(
Jeff Johnson295189b2012-06-20 16:38:30 -0700714 tSirMacEdcaParamRecord* phalEdcaParam,
715 WDI_EdcaParamRecord* pWDIEdcaParam
716);
717
718/*Copy a management frame header from WDI fmt into HAL fmt*/
719WPT_STATIC WPT_INLINE void
720WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
721(
722 tSirMacMgmtHdr* pmacMgmtHdr,
723 WDI_MacMgmtHdr* pwdiMacMgmtHdr
724);
725
726/*Copy config bss parameters from WDI fmt into HAL fmt*/
727WPT_STATIC WPT_INLINE void
728WDI_CopyWDIConfigBSSToHALConfigBSS
729(
730 tConfigBssParams* phalConfigBSS,
731 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
732);
733
Jeff Johnsone7245742012-09-05 17:12:55 -0700734/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700735 pointed to by user data */
736WPT_STATIC WPT_INLINE void
737WDI_ExtractRequestCBFromEvent
738(
739 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700740 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700741 void** ppUserData
742);
743
744wpt_uint8
745WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700746(
Jeff Johnson295189b2012-06-20 16:38:30 -0700747 WDI_ControlBlockType* pWDICtx,
748 WDI_BSSSessionType** ppSession
749);
750
751void
752WDI_AddBcastSTAtoSTATable
753(
754 WDI_ControlBlockType* pWDICtx,
755 WDI_AddStaParams * staParams,
756 wpt_uint16 usBcastStaIdx
757);
758
759WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700760(
Jeff Johnson295189b2012-06-20 16:38:30 -0700761 WDI_ControlBlockType* pWDICtx,
762 WDI_EventInfoType* pEventData
763);
764
765void
766WDI_SetPowerStateCb
767(
768 wpt_status status,
769 unsigned int dxePhyAddr,
770 void *pContext
771);
772
773#define CASE_RETURN_STRING( str ) \
774 case ( ( str ) ): return( #str ); break \
775
776/**
777 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700778
779 @param wdiReqMsgId: WDI Message request Id
780
781 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700782 @return Result of the function call
783*/
784static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
785{
786 switch (wdiReqMsgId)
787 {
788 CASE_RETURN_STRING( WDI_START_REQ );
789 CASE_RETURN_STRING( WDI_STOP_REQ );
790 CASE_RETURN_STRING( WDI_CLOSE_REQ );
791 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
792 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
793 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
794 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
795 CASE_RETURN_STRING( WDI_JOIN_REQ );
796 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
797 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
798 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
799 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
800 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
801 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
802 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
803 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
804 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
805 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
806 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
807 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
808 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
809 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
810 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
811 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
812 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
813 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
814 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
815 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
816 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
817 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
818 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
819 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
820 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
821 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
822 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
823 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
824 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
825 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
826 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
827 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
828 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
829 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
830 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
831 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
832 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
833 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
834 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
835 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
836 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
837 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
838 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
839 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
840 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
841 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
842 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
843 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
844 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
845 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
846 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
847 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700848 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700849 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
850 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
851 #ifdef FEATURE_WLAN_SCAN_PNO
852 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
853 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
854 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
855 #endif
856 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
857 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
858 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
859 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
860 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
861 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
862 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
863 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
864 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800865 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Jeff Johnson295189b2012-06-20 16:38:30 -0700866 default:
867 return "Unknown WDI MessageId";
868 }
869}
870
871
872
873/**
874 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700875
876 @param wdiRespMsgId: WDI Message response Id
877
878 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700879 @return Result of the function call
880*/
881static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
882{
883 switch (wdiRespMsgId)
884 {
885 CASE_RETURN_STRING( WDI_START_RESP );
886 CASE_RETURN_STRING( WDI_STOP_RESP );
887 CASE_RETURN_STRING( WDI_CLOSE_RESP );
888 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
889 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
890 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
891 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
892 CASE_RETURN_STRING( WDI_JOIN_RESP );
893 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
894 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
895 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
896 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
897 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
898 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
899 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
900 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
901 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
902 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
903 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
904 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
905 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
906 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
907 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
908 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
909 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
910 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
911 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
912 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
913 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
914 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
915 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
916 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
917 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
918 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
919 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
920 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
921 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
922 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
923 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
924 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
925 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
926 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
927 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
928 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
929 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
930 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
931 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
932 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
933 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
934 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
935 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
936 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
937 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
938 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
939 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
940 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
941 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
942 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
943 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
944 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700945 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700946 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
947 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
948 #ifdef FEATURE_WLAN_SCAN_PNO
949 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
950 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
951 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
952 #endif
953 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
954 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
955 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
956 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
957 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
958 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
959 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
960 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
961 default:
962 return "Unknown WDI MessageId";
963 }
964}
965
966/**
967 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700968
969 @param halStatusId: HAL status Id
970
971 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700972 @return Result of the function call
973*/
974static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
975{
976 switch (halStatusId)
977 {
978 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
979 CASE_RETURN_STRING( PAL_STATUS_INVAL );
980 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
981 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
982 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
983 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
984 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
985 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
986 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
987 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
988 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
989 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
990 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
991 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
992 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
993 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
994 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
995 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
996 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
997 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
998 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
999 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1000 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1001 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1002 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1003 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1004 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1005 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1006 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1007 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1008 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1009 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1010 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1011 default:
1012 return "Unknown HAL status";
1013 }
1014}
1015
Jeff Johnsone7245742012-09-05 17:12:55 -07001016/*========================================================================
1017
Jeff Johnson295189b2012-06-20 16:38:30 -07001018 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001019
Jeff Johnson295189b2012-06-20 16:38:30 -07001020==========================================================================*/
1021
1022/**
1023 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001024
Jeff Johnson295189b2012-06-20 16:38:30 -07001025 DAL will allocate all the resources it needs. It will open PAL, it will also
1026 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001027 DXE/SMD or any other drivers that they need.
1028
Jeff Johnson295189b2012-06-20 16:38:30 -07001029 @param pOSContext: pointer to the OS context provided by the UMAC
1030 will be passed on to PAL on Open
1031 ppWDIGlobalCtx: output pointer of Global Context
1032 pWdiDevCapability: output pointer of device capability
1033
1034 @return Result of the function call
1035*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001036WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001037WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001038(
Jeff Johnson295189b2012-06-20 16:38:30 -07001039 void* pOSContext,
1040 void** ppWDIGlobalCtx,
1041 WDI_DeviceCapabilityType* pWdiDevCapability,
1042 unsigned int driverType
1043)
1044{
1045 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001046 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001047 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001048 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1050
1051 /*---------------------------------------------------------------------
1052 Sanity check
1053 ---------------------------------------------------------------------*/
1054 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1055 {
1056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1057 "Invalid input parameters in WDI_Init");
1058
Jeff Johnsone7245742012-09-05 17:12:55 -07001059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001060 }
1061
1062 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001063 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001064 ---------------------------------------------------------------------*/
1065 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1066 {
1067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1068 "WDI module already initialized - return");
1069
Jeff Johnsone7245742012-09-05 17:12:55 -07001070 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001071 }
1072
1073 /*Module is now initialized - this flag is to ensure the fact that multiple
1074 init will not happen on WDI
1075 !! - potential race does exist because read and set are not atomic,
1076 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001077 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001078
1079 /*Setup the control block */
1080 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001081 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001082
1083 /*Setup the STA Table*/
1084 wdiStatus = WDI_STATableInit(&gWDICb);
1085 if ( WDI_STATUS_SUCCESS != wdiStatus )
1086 {
1087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1088 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001089 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001090 goto fail_STATableInit;
1091 }
1092
1093 /*------------------------------------------------------------------------
1094 Open the PAL
1095 ------------------------------------------------------------------------*/
1096 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1097 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1098 {
1099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1100 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001101 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001102 goto fail_wpalOpen;
1103 }
1104
1105 /*Initialize main synchro mutex - it will be used to ensure integrity of
1106 the main WDI Control Block*/
1107 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1108 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1109 {
1110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1111 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001112 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001113 goto fail_mutex;
1114 }
1115
1116 /*Initialize the response timer - it will be used to time all messages
1117 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001118 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1119 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001120 &gWDICb);
1121 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1122 {
1123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1124 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001125 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001126 goto fail_timer;
1127 }
1128
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001129 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1130 WDI_SsrTimerCB,
1131 &gWDICb);
1132 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1133 {
1134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1135 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001136 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001137 goto fail_timer2;
1138 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001139 /* Initialize the WDI Pending Request Queue*/
1140 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1141 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1142 {
1143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1144 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001145 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001146 goto fail_pend_queue;
1147 }
1148
1149 /*Init WDI Pending Assoc Id Queue */
1150 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1151 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1152 {
1153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1154 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001155 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001156 goto fail_assoc_queue;
1157 }
1158
1159 /*Initialize the BSS sessions pending Queue */
1160 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1161 {
1162 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1163 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1164 {
1165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1166 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001167 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001168 goto fail_bss_queue;
1169 }
1170 }
1171
1172 /*Indicate the control block is sufficiently initialized for callbacks*/
1173 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1174
1175 /*------------------------------------------------------------------------
1176 Initialize the Data Path Utility Module
1177 ------------------------------------------------------------------------*/
1178 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1179 if ( WDI_STATUS_SUCCESS != wdiStatus )
1180 {
1181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1182 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001183 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001184 goto fail_dp_util_init;
1185 }
1186
1187 /* Init Set power state event */
1188 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001189 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001190 {
1191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1192 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001193 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001194 goto fail_power_event;
1195 }
1196
1197 /* Init WCTS action event */
1198 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001199 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001200 {
1201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1202 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001203 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001204 goto fail_wcts_event;
1205 }
1206
1207 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001208 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001209 ------------------------------------------------------------------------*/
1210 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1211 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001212 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001213 wctsCBs.wctsRxMsgCBData = &gWDICb;
1214
Jeff Johnsone7245742012-09-05 17:12:55 -07001215 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001216 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001217 WDI_CT_CHANNEL_SIZE,
1218 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001219
1220 if ( NULL == gWDICb.wctsHandle )
1221 {
1222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001223 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001224 goto fail_wcts_open;
1225 }
1226
1227 gWDICb.driverMode = (tDriverType)driverType;
1228 /* FTM mode not need to open Transport Driver */
1229 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001230 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001231 /*------------------------------------------------------------------------
1232 Open the Data Transport
1233 ------------------------------------------------------------------------*/
1234 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1235 {
1236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001237 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001238 goto fail_wdts_open;
1239 }
1240 }
1241
1242 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001243 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001244
1245 /*Send the context as a ptr to the global WDI Control Block*/
1246 *ppWDIGlobalCtx = &gWDICb;
1247
1248 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001249 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001250 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1251 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1252 return WDI_STATUS_SUCCESS;
1253
1254 /* ERROR handlers
1255 Undo everything that completed successfully */
1256
1257 fail_wdts_open:
1258 {
1259 wpt_status eventStatus;
1260
1261 /* Closing WCTS in this scenario is tricky since it has to close
1262 the SMD channel and then we get notified asynchronously when
1263 the channel has been closed. So we take some of the logic from
1264 the "normal" close procedure in WDI_Close()
1265 */
1266
1267 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001268 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001269 {
1270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001271 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001272 }
1273
1274 WCTS_CloseTransport(gWDICb.wctsHandle);
1275
1276 /* Wait for WCTS to close the control transport. If we were able
1277 to reset the event flag, then we'll wait for the event,
1278 otherwise we'll wait for a maximum amount of time required for
1279 the channel to be closed */
1280 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1281 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001282 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 WDI_WCTS_ACTION_TIMEOUT);
1284 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1285 {
1286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001287 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001288 }
1289 }
1290 else
1291 {
1292 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1293 }
1294 }
1295 fail_wcts_open:
1296 wpalEventDelete(&gWDICb.wctsActionEvent);
1297 fail_wcts_event:
1298 wpalEventDelete(&gWDICb.setPowerStateEvent);
1299 fail_power_event:
1300 WDI_DP_UtilsExit(&gWDICb);
1301 fail_dp_util_init:
1302 gWDICb.magic = 0;
1303 fail_bss_queue:
1304 /* entries 0 thru i-1 were successfully initialized */
1305 while (0 < i)
1306 {
1307 i--;
1308 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1309 }
1310 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1311 fail_assoc_queue:
1312 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1313 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001314 wpalTimerDelete(&gWDICb.ssrTimer);
1315 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001316 wpalTimerDelete(&gWDICb.wptResponseTimer);
1317 fail_timer:
1318 wpalMutexDelete(&gWDICb.wptMutex);
1319 fail_mutex:
1320 wpalClose(gWDICb.pPALContext);
1321 fail_wpalOpen:
1322 WDI_STATableClose(&gWDICb);
1323 fail_STATableInit:
1324 gWDIInitialized = eWLAN_PAL_FALSE;
1325
1326 return WDI_STATUS_E_FAILURE;
1327
1328}/*WDI_Init*/;
1329
1330/**
1331 @brief WDI_Start will be called when the upper MAC is ready to
1332 commence operation with the WLAN Device. Upon the call
1333 of this API the WLAN DAL will pack and send a HAL Start
1334 message to the lower RIVA sub-system if the SMD channel
1335 has been fully opened and the RIVA subsystem is up.
1336
1337 If the RIVA sub-system is not yet up and running DAL
1338 will queue the request for Open and will wait for the
1339 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001340 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001341
1342 WDI_Init must have been called.
1343
Jeff Johnsone7245742012-09-05 17:12:55 -07001344 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001345 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001346
Jeff Johnson295189b2012-06-20 16:38:30 -07001347 wdiStartRspCb: callback for passing back the response of
1348 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001349
Jeff Johnson295189b2012-06-20 16:38:30 -07001350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001351 callback
1352
Jeff Johnson295189b2012-06-20 16:38:30 -07001353 @see WDI_Start
1354 @return Result of the function call
1355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001357WDI_Start
1358(
1359 WDI_StartReqParamsType* pwdiStartParams,
1360 WDI_StartRspCb wdiStartRspCb,
1361 void* pUserData
1362)
1363{
1364 WDI_EventInfoType wdiEventData;
1365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1366
1367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001369 ------------------------------------------------------------------------*/
1370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1371 {
1372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1373 "WDI API call before module is initialized - Fail request");
1374
Jeff Johnsone7245742012-09-05 17:12:55 -07001375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001376 }
1377
1378 /*------------------------------------------------------------------------
1379 Fill in Event data and post to the Main FSM
1380 ------------------------------------------------------------------------*/
1381 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001382 wdiEventData.pEventData = pwdiStartParams;
1383 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1384 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001385 wdiEventData.pUserData = pUserData;
1386
1387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1388
1389}/*WDI_Start*/
1390
1391/**
1392 @brief WDI_Stop will be called when the upper MAC is ready to
1393 stop any operation with the WLAN Device. Upon the call
1394 of this API the WLAN DAL will pack and send a HAL Stop
1395 message to the lower RIVA sub-system if the DAL Core is
1396 in started state.
1397
1398 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001399
1400 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001401
1402 WDI_Start must have been called.
1403
Jeff Johnsone7245742012-09-05 17:12:55 -07001404 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001405 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001406
Jeff Johnson295189b2012-06-20 16:38:30 -07001407 wdiStopRspCb: callback for passing back the response of
1408 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001409
Jeff Johnson295189b2012-06-20 16:38:30 -07001410 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001411 callback
1412
Jeff Johnson295189b2012-06-20 16:38:30 -07001413 @see WDI_Start
1414 @return Result of the function call
1415*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001416WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001417WDI_Stop
1418(
1419 WDI_StopReqParamsType* pwdiStopParams,
1420 WDI_StopRspCb wdiStopRspCb,
1421 void* pUserData
1422)
1423{
1424 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001425 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1427
1428 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001430 ------------------------------------------------------------------------*/
1431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1432 {
1433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1434 "WDI API call before module is initialized - Fail request");
1435
Jeff Johnsone7245742012-09-05 17:12:55 -07001436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001437 }
1438
Jeff Johnson43971f52012-07-17 12:26:56 -07001439 /*Access to the global state must be locked before cleaning */
1440 wpalMutexAcquire(&pWDICtx->wptMutex);
1441
1442 /*Clear all pending request*/
1443 WDI_ClearPendingRequests(pWDICtx);
1444
1445 /*We have completed cleaning unlock now*/
1446 wpalMutexRelease(&pWDICtx->wptMutex);
1447
Jeff Johnson295189b2012-06-20 16:38:30 -07001448 /* Free the global variables */
1449 wpalMemoryFree(gpHostWlanFeatCaps);
1450 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001451 gpHostWlanFeatCaps = NULL;
1452 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001453
1454 /*------------------------------------------------------------------------
1455 Fill in Event data and post to the Main FSM
1456 ------------------------------------------------------------------------*/
1457 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001458 wdiEventData.pEventData = pwdiStopParams;
1459 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1460 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 wdiEventData.pUserData = pUserData;
1462
1463 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1464
1465}/*WDI_Stop*/
1466
1467
1468
1469/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001470 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001471 needs to interact with DAL. DAL will free its control
1472 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001473
1474 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001475
1476 WDI_Stop must have been called.
1477
1478 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001479
Jeff Johnson295189b2012-06-20 16:38:30 -07001480 @see WDI_Stop
1481 @return Result of the function call
1482*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001483WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001484WDI_Close
1485(
1486 void
1487)
1488{
1489 wpt_uint8 i;
1490 WDI_EventInfoType wdiEventData;
1491 wpt_status wptStatus;
1492 wpt_status eventStatus;
1493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1494
1495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001497 ------------------------------------------------------------------------*/
1498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1499 {
1500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1501 "WDI API call before module is initialized - Fail request");
1502
Jeff Johnsone7245742012-09-05 17:12:55 -07001503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 }
1505
1506 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1507 (the control transport will be closed by the FSM and we'll want
1508 to wait until that completes)*/
1509 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001510 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001511 {
1512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001513 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001514 /* fall through and try to finish closing via the FSM */
1515 }
1516
1517 /*------------------------------------------------------------------------
1518 Fill in Event data and post to the Main FSM
1519 ------------------------------------------------------------------------*/
1520 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001521 wdiEventData.pEventData = NULL;
1522 wdiEventData.uEventDataSize = 0;
1523 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001524 wdiEventData.pUserData = NULL;
1525
1526 gWDIInitialized = eWLAN_PAL_FALSE;
1527
1528 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1529
1530 /*Wait for WCTS to close the control transport
1531 (but only if we were able to reset the event flag*/
1532 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1533 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001534 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001535 WDI_WCTS_ACTION_TIMEOUT);
1536 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1537 {
1538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001539 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001540 }
1541 }
1542
1543 /* Destroy the WCTS action event */
1544 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1545 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1546 {
1547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1548 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001549 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 }
1551
1552 /* Destroy the Set Power State event */
1553 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1554 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1555 {
1556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1557 "WDI Close failed to destroy an event");
1558
Jeff Johnsone7245742012-09-05 17:12:55 -07001559 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001560 }
1561
1562 /*------------------------------------------------------------------------
1563 Closes the Data Path Utility Module
1564 ------------------------------------------------------------------------*/
1565 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1566 {
1567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1568 "WDI Init failed to close the DP Util Module");
1569
Jeff Johnsone7245742012-09-05 17:12:55 -07001570 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001571 }
1572
1573 /*destroy the BSS sessions pending Queue */
1574 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1575 {
1576 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1577 }
1578
1579 /* destroy the WDI Pending Assoc Id Request Queue*/
1580 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1581
1582 /* destroy the WDI Pending Request Queue*/
1583 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001584
Jeff Johnson295189b2012-06-20 16:38:30 -07001585 /*destroy the response timer */
1586 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1587
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001588 /*destroy the SSR timer */
1589 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1590
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 /*invalidate the main synchro mutex */
1592 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1593 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1594 {
1595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1596 "Failed to delete mutex %d", wptStatus);
1597 WDI_ASSERT(0);
1598 }
1599
1600 /*Clear control block. note that this will clear the "magic"
1601 which will inhibit all asynchronous callbacks*/
1602 WDI_CleanCB(&gWDICb);
1603
1604 return wptStatus;
1605
1606}/*WDI_Close*/
1607
1608/**
1609 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1610 This will do most of the WDI stop & close
1611 operations without doing any handshake with Riva
1612
1613 This will also make sure that the control transport
1614 will NOT be closed.
1615
1616 This request will not be queued.
1617
1618
1619 WDI_Start must have been called.
1620
1621 @param closeTransport: Close control channel if this is set
1622
1623 @return Result of the function call
1624*/
1625WDI_Status
1626WDI_Shutdown
1627(
1628 wpt_boolean closeTransport
1629)
1630{
1631 WDI_EventInfoType wdiEventData;
1632 wpt_status wptStatus;
1633 int i = 0;
1634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1635
1636 /*------------------------------------------------------------------------
1637 Sanity Check
1638 ------------------------------------------------------------------------*/
1639 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1640 {
1641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1642 "WDI API call before module is initialized - Fail request");
1643
1644 return WDI_STATUS_E_NOT_ALLOWED;
1645 }
1646
1647 /*------------------------------------------------------------------------
1648 Fill in Event data and post to the Main FSM
1649 ------------------------------------------------------------------------*/
1650 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1651 wdiEventData.pEventData = NULL;
1652 wdiEventData.uEventDataSize = 0;
1653
1654 /* Shutdown will not be queued, if the state is busy timer will be
1655 * stopped & this message will be processed.*/
1656 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1657 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1658 {
1659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001660 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 }
1662 /* Destroy the Set Power State event */
1663 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1664 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1665 {
1666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1667 "WDI Close failed to destroy an event");
1668
1669 WDI_ASSERT(0);
1670 }
1671 /*------------------------------------------------------------------------
1672 Closes the Data Path Utility Module
1673 ------------------------------------------------------------------------*/
1674 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1675 {
1676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1677 "WDI Init failed to close the DP Util Module");
1678
1679 WDI_ASSERT(0);
1680 }
1681 if ( closeTransport )
1682 {
1683 /* Close control transport, called from module unload */
1684 WCTS_CloseTransport(gWDICb.wctsHandle);
1685 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001686 else
1687 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001688 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001689 the pending messages in the transport queue */
1690 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1691 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001692 /*destroy the BSS sessions pending Queue */
1693 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1694 {
1695 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1696 }
1697
1698 /* destroy the WDI Pending Assoc Id Request Queue*/
1699 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1700 /* destroy the WDI Pending Request Queue*/
1701 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1702 /*destroy the response timer */
1703 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001704 /*destroy the SSR timer */
1705 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001706
1707 /*invalidate the main synchro mutex */
1708 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1709 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1710 {
1711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001712 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 WDI_ASSERT(0);
1714 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001715 /* Free the global variables */
1716 wpalMemoryFree(gpHostWlanFeatCaps);
1717 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001718 gpHostWlanFeatCaps = NULL;
1719 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001720 /*Clear control block. note that this will clear the "magic"
1721 which will inhibit all asynchronous callbacks*/
1722 WDI_CleanCB(&gWDICb);
1723 return wptStatus;
1724
1725}/*WDI_Shutdown*/
1726
1727
Jeff Johnsone7245742012-09-05 17:12:55 -07001728/*========================================================================
1729
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001731
Jeff Johnson295189b2012-06-20 16:38:30 -07001732==========================================================================*/
1733
1734/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001735 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001736 the WLAN Device to get ready for a scan procedure. Upon
1737 the call of this API the WLAN DAL will pack and send a
1738 HAL Init Scan request message to the lower RIVA
1739 sub-system if DAL is in state STARTED.
1740
1741 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001742 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001743
1744 WDI_Start must have been called.
1745
1746 @param wdiInitScanParams: the init scan parameters as specified
1747 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001748
Jeff Johnson295189b2012-06-20 16:38:30 -07001749 wdiInitScanRspCb: callback for passing back the response
1750 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001751
Jeff Johnson295189b2012-06-20 16:38:30 -07001752 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001753 callback
1754
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 @see WDI_Start
1756 @return Result of the function call
1757*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001758WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001759WDI_InitScanReq
1760(
1761 WDI_InitScanReqParamsType* pwdiInitScanParams,
1762 WDI_InitScanRspCb wdiInitScanRspCb,
1763 void* pUserData
1764)
1765{
1766 WDI_EventInfoType wdiEventData;
1767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1768
1769 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001770 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001771 ------------------------------------------------------------------------*/
1772 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1773 {
1774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1775 "WDI API call before module is initialized - Fail request");
1776
Jeff Johnsone7245742012-09-05 17:12:55 -07001777 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001778 }
1779
1780 /*------------------------------------------------------------------------
1781 Fill in Event data and post to the Main FSM
1782 ------------------------------------------------------------------------*/
1783 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 wdiEventData.pEventData = pwdiInitScanParams;
1785 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1786 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001787 wdiEventData.pUserData = pUserData;
1788
1789 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1790
1791}/*WDI_InitScanReq*/
1792
1793/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001794 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001795 wishes to change the Scan channel on the WLAN Device.
1796 Upon the call of this API the WLAN DAL will pack and
1797 send a HAL Start Scan request message to the lower RIVA
1798 sub-system if DAL is in state STARTED.
1799
1800 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001801 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001802
1803 WDI_InitScanReq must have been called.
1804
Jeff Johnsone7245742012-09-05 17:12:55 -07001805 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001806 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001807
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 wdiStartScanRspCb: callback for passing back the
1809 response of the start scan operation received from the
1810 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001811
Jeff Johnson295189b2012-06-20 16:38:30 -07001812 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001813 callback
1814
Jeff Johnson295189b2012-06-20 16:38:30 -07001815 @see WDI_InitScanReq
1816 @return Result of the function call
1817*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001818WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001819WDI_StartScanReq
1820(
1821 WDI_StartScanReqParamsType* pwdiStartScanParams,
1822 WDI_StartScanRspCb wdiStartScanRspCb,
1823 void* pUserData
1824)
1825{
1826 WDI_EventInfoType wdiEventData;
1827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1828
1829 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001830 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001831 ------------------------------------------------------------------------*/
1832 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1833 {
1834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1835 "WDI API call before module is initialized - Fail request");
1836
Jeff Johnsone7245742012-09-05 17:12:55 -07001837 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001838 }
1839
1840 /*------------------------------------------------------------------------
1841 Fill in Event data and post to the Main FSM
1842 ------------------------------------------------------------------------*/
1843 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001844 wdiEventData.pEventData = pwdiStartScanParams;
1845 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1846 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001847 wdiEventData.pUserData = pUserData;
1848
1849 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1850
1851}/*WDI_StartScanReq*/
1852
1853
1854/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001855 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001856 wants to end scanning for a particular channel that it
1857 had set before by calling Scan Start on the WLAN Device.
1858 Upon the call of this API the WLAN DAL will pack and
1859 send a HAL End Scan request message to the lower RIVA
1860 sub-system if DAL is in state STARTED.
1861
1862 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001863 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001864
1865 WDI_StartScanReq must have been called.
1866
Jeff Johnsone7245742012-09-05 17:12:55 -07001867 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001868 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001869
Jeff Johnson295189b2012-06-20 16:38:30 -07001870 wdiEndScanRspCb: callback for passing back the response
1871 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001872
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001874 callback
1875
Jeff Johnson295189b2012-06-20 16:38:30 -07001876 @see WDI_StartScanReq
1877 @return Result of the function call
1878*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001879WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001880WDI_EndScanReq
1881(
1882 WDI_EndScanReqParamsType* pwdiEndScanParams,
1883 WDI_EndScanRspCb wdiEndScanRspCb,
1884 void* pUserData
1885)
1886{
1887 WDI_EventInfoType wdiEventData;
1888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1889
1890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001891 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001892 ------------------------------------------------------------------------*/
1893 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1894 {
1895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1896 "WDI API call before module is initialized - Fail request");
1897
Jeff Johnsone7245742012-09-05 17:12:55 -07001898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001899 }
1900
1901 /*------------------------------------------------------------------------
1902 Fill in Event data and post to the Main FSM
1903 ------------------------------------------------------------------------*/
1904 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001905 wdiEventData.pEventData = pwdiEndScanParams;
1906 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1907 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001908 wdiEventData.pUserData = pUserData;
1909
1910 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1911
1912}/*WDI_EndScanReq*/
1913
1914
1915/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001916 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001917 completed the scan process on the WLAN Device. Upon the
1918 call of this API the WLAN DAL will pack and send a HAL
1919 Finish Scan Request request message to the lower RIVA
1920 sub-system if DAL is in state STARTED.
1921
1922 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001923 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001924
1925 WDI_InitScanReq must have been called.
1926
Jeff Johnsone7245742012-09-05 17:12:55 -07001927 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001928 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001929
Jeff Johnson295189b2012-06-20 16:38:30 -07001930 wdiFinishScanRspCb: callback for passing back the
1931 response of the finish scan operation received from the
1932 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001933
Jeff Johnson295189b2012-06-20 16:38:30 -07001934 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001935 callback
1936
Jeff Johnson295189b2012-06-20 16:38:30 -07001937 @see WDI_InitScanReq
1938 @return Result of the function call
1939*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001940WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001941WDI_FinishScanReq
1942(
1943 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1944 WDI_FinishScanRspCb wdiFinishScanRspCb,
1945 void* pUserData
1946)
1947{
1948 WDI_EventInfoType wdiEventData;
1949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1950
1951 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001952 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001953 ------------------------------------------------------------------------*/
1954 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1955 {
1956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1957 "WDI API call before module is initialized - Fail request");
1958
Jeff Johnsone7245742012-09-05 17:12:55 -07001959 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001960 }
1961
1962 /*------------------------------------------------------------------------
1963 Fill in Event data and post to the Main FSM
1964 ------------------------------------------------------------------------*/
1965 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001966 wdiEventData.pEventData = pwdiFinishScanParams;
1967 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1968 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001969 wdiEventData.pUserData = pUserData;
1970
1971 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1972
1973}/*WDI_FinishScanReq*/
1974
Jeff Johnsone7245742012-09-05 17:12:55 -07001975/*========================================================================
1976
Jeff Johnson295189b2012-06-20 16:38:30 -07001977 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001978
Jeff Johnson295189b2012-06-20 16:38:30 -07001979==========================================================================*/
1980
1981/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001982 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001983 to start an association procedure to a BSS. Upon the
1984 call of this API the WLAN DAL will pack and send a HAL
1985 Join request message to the lower RIVA sub-system if
1986 DAL is in state STARTED.
1987
1988 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001989 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001990
1991 WDI_Start must have been called.
1992
Jeff Johnsone7245742012-09-05 17:12:55 -07001993 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001995
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 wdiJoinRspCb: callback for passing back the response of
1997 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001998
Jeff Johnson295189b2012-06-20 16:38:30 -07001999 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002000 callback
2001
Jeff Johnson295189b2012-06-20 16:38:30 -07002002 @see WDI_Start
2003 @return Result of the function call
2004*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002005WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002006WDI_JoinReq
2007(
2008 WDI_JoinReqParamsType* pwdiJoinParams,
2009 WDI_JoinRspCb wdiJoinRspCb,
2010 void* pUserData
2011)
2012{
2013 WDI_EventInfoType wdiEventData;
2014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2015
2016 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002017 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002018 ------------------------------------------------------------------------*/
2019 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2020 {
2021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2022 "WDI API call before module is initialized - Fail request");
2023
Jeff Johnsone7245742012-09-05 17:12:55 -07002024 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 }
2026
2027 /*------------------------------------------------------------------------
2028 Fill in Event data and post to the Main FSM
2029 ------------------------------------------------------------------------*/
2030 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002031 wdiEventData.pEventData = pwdiJoinParams;
2032 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2033 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 wdiEventData.pUserData = pUserData;
2035
2036 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2037
2038}/*WDI_JoinReq*/
2039
2040/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 wishes to configure the newly acquired or in process of
2043 being acquired BSS to the HW . Upon the call of this API
2044 the WLAN DAL will pack and send a HAL Config BSS request
2045 message to the lower RIVA sub-system if DAL is in state
2046 STARTED.
2047
2048 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002049 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002050
2051 WDI_JoinReq must have been called.
2052
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002055
Jeff Johnson295189b2012-06-20 16:38:30 -07002056 wdiConfigBSSRspCb: callback for passing back the
2057 response of the config BSS operation received from the
2058 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002059
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002061 callback
2062
Jeff Johnson295189b2012-06-20 16:38:30 -07002063 @see WDI_JoinReq
2064 @return Result of the function call
2065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002067WDI_ConfigBSSReq
2068(
2069 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2070 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2071 void* pUserData
2072)
2073{
2074 WDI_EventInfoType wdiEventData;
2075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2076
2077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002079 ------------------------------------------------------------------------*/
2080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2081 {
2082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2083 "WDI API call before module is initialized - Fail request");
2084
Jeff Johnsone7245742012-09-05 17:12:55 -07002085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002086 }
2087
2088 /*------------------------------------------------------------------------
2089 Fill in Event data and post to the Main FSM
2090 ------------------------------------------------------------------------*/
2091 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002092 wdiEventData.pEventData = pwdiConfigBSSParams;
2093 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2094 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 wdiEventData.pUserData = pUserData;
2096
2097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2098
2099}/*WDI_ConfigBSSReq*/
2100
2101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002102 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002103 disassociating from the BSS and wishes to notify HW.
2104 Upon the call of this API the WLAN DAL will pack and
2105 send a HAL Del BSS request message to the lower RIVA
2106 sub-system if DAL is in state STARTED.
2107
2108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002110
2111 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2112
Jeff Johnsone7245742012-09-05 17:12:55 -07002113 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002115
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 wdiDelBSSRspCb: callback for passing back the response
2117 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002118
Jeff Johnson295189b2012-06-20 16:38:30 -07002119 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002120 callback
2121
2122 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 @return Result of the function call
2124*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002125WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002126WDI_DelBSSReq
2127(
2128 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2129 WDI_DelBSSRspCb wdiDelBSSRspCb,
2130 void* pUserData
2131)
2132{
2133 WDI_EventInfoType wdiEventData;
2134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2135
2136 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002137 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002138 ------------------------------------------------------------------------*/
2139 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2140 {
2141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2142 "WDI API call before module is initialized - Fail request");
2143
Jeff Johnsone7245742012-09-05 17:12:55 -07002144 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 }
2146
2147 /*------------------------------------------------------------------------
2148 Fill in Event data and post to the Main FSM
2149 ------------------------------------------------------------------------*/
2150 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002151 wdiEventData.pEventData = pwdiDelBSSParams;
2152 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2153 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002154 wdiEventData.pUserData = pUserData;
2155
2156 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2157
2158}/*WDI_DelBSSReq*/
2159
2160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002161 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002162 associated to a BSS and wishes to configure HW for
2163 associated state. Upon the call of this API the WLAN DAL
2164 will pack and send a HAL Post Assoc request message to
2165 the lower RIVA sub-system if DAL is in state STARTED.
2166
2167 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002169
2170 WDI_JoinReq must have been called.
2171
2172 @param wdiPostAssocReqParams: the assoc parameters as specified
2173 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002174
Jeff Johnson295189b2012-06-20 16:38:30 -07002175 wdiPostAssocRspCb: callback for passing back the
2176 response of the post assoc operation received from the
2177 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002178
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002180 callback
2181
Jeff Johnson295189b2012-06-20 16:38:30 -07002182 @see WDI_JoinReq
2183 @return Result of the function call
2184*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002185WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002186WDI_PostAssocReq
2187(
2188 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2189 WDI_PostAssocRspCb wdiPostAssocRspCb,
2190 void* pUserData
2191)
2192{
2193 WDI_EventInfoType wdiEventData;
2194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2195
2196 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002197 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002198 ------------------------------------------------------------------------*/
2199 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2200 {
2201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2202 "WDI API call before module is initialized - Fail request");
2203
Jeff Johnsone7245742012-09-05 17:12:55 -07002204 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002205 }
2206
2207 /*------------------------------------------------------------------------
2208 Fill in Event data and post to the Main FSM
2209 ------------------------------------------------------------------------*/
2210 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002211 wdiEventData.pEventData = pwdiPostAssocReqParams;
2212 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2213 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002214 wdiEventData.pUserData = pUserData;
2215
2216 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2217
2218}/*WDI_PostAssocReq*/
2219
2220/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002221 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002222 association with another STA has ended and the station
2223 must be deleted from HW. Upon the call of this API the
2224 WLAN DAL will pack and send a HAL Del STA request
2225 message to the lower RIVA sub-system if DAL is in state
2226 STARTED.
2227
2228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002230
2231 WDI_PostAssocReq must have been called.
2232
Jeff Johnsone7245742012-09-05 17:12:55 -07002233 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002235
Jeff Johnson295189b2012-06-20 16:38:30 -07002236 wdiDelSTARspCb: callback for passing back the response
2237 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002238
Jeff Johnson295189b2012-06-20 16:38:30 -07002239 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002240 callback
2241
Jeff Johnson295189b2012-06-20 16:38:30 -07002242 @see WDI_PostAssocReq
2243 @return Result of the function call
2244*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002246WDI_DelSTAReq
2247(
2248 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2249 WDI_DelSTARspCb wdiDelSTARspCb,
2250 void* pUserData
2251)
2252{
2253 WDI_EventInfoType wdiEventData;
2254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2255
2256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002258 ------------------------------------------------------------------------*/
2259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2260 {
2261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2262 "WDI API call before module is initialized - Fail request");
2263
Jeff Johnsone7245742012-09-05 17:12:55 -07002264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002265 }
2266
2267 /*------------------------------------------------------------------------
2268 Fill in Event data and post to the Main FSM
2269 ------------------------------------------------------------------------*/
2270 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002271 wdiEventData.pEventData = pwdiDelSTAParams;
2272 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2273 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002274 wdiEventData.pUserData = pUserData;
2275
2276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2277
2278}/*WDI_DelSTAReq*/
2279
Jeff Johnsone7245742012-09-05 17:12:55 -07002280/*========================================================================
2281
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002283
Jeff Johnson295189b2012-06-20 16:38:30 -07002284==========================================================================*/
2285
2286/**
2287 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2288 install a BSS encryption key on the HW. Upon the call of this
2289 API the WLAN DAL will pack and send a Set BSS Key request
2290 message to the lower RIVA sub-system if DAL is in state
2291 STARTED.
2292
2293 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002294 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002295
2296 WDI_PostAssocReq must have been called.
2297
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002299 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002300
Jeff Johnson295189b2012-06-20 16:38:30 -07002301 wdiSetBSSKeyRspCb: callback for passing back the
2302 response of the set BSS Key operation received from the
2303 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002304
Jeff Johnson295189b2012-06-20 16:38:30 -07002305 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002306 callback
2307
Jeff Johnson295189b2012-06-20 16:38:30 -07002308 @see WDI_PostAssocReq
2309 @return Result of the function call
2310*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002311WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002312WDI_SetBSSKeyReq
2313(
2314 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2315 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2316 void* pUserData
2317)
2318{
2319 WDI_EventInfoType wdiEventData;
2320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2321
2322 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002323 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002324 ------------------------------------------------------------------------*/
2325 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2326 {
2327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2328 "WDI API call before module is initialized - Fail request");
2329
Jeff Johnsone7245742012-09-05 17:12:55 -07002330 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002331 }
2332
2333 /*------------------------------------------------------------------------
2334 Fill in Event data and post to the Main FSM
2335 ------------------------------------------------------------------------*/
2336 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002337 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2338 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2339 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002340 wdiEventData.pUserData = pUserData;
2341
2342 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2343
2344}/*WDI_SetBSSKeyReq*/
2345
2346/**
2347 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2348 uninstall a BSS key from HW. Upon the call of this API the
2349 WLAN DAL will pack and send a HAL Remove BSS Key request
2350 message to the lower RIVA sub-system if DAL is in state
2351 STARTED.
2352
2353 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002354 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002355
2356 WDI_SetBSSKeyReq must have been called.
2357
Jeff Johnsone7245742012-09-05 17:12:55 -07002358 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002359 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002360
Jeff Johnson295189b2012-06-20 16:38:30 -07002361 wdiRemoveBSSKeyRspCb: callback for passing back the
2362 response of the remove BSS key operation received from
2363 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002364
Jeff Johnson295189b2012-06-20 16:38:30 -07002365 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002366 callback
2367
Jeff Johnson295189b2012-06-20 16:38:30 -07002368 @see WDI_SetBSSKeyReq
2369 @return Result of the function call
2370*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002371WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002372WDI_RemoveBSSKeyReq
2373(
2374 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2375 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2376 void* pUserData
2377)
2378{
2379 WDI_EventInfoType wdiEventData;
2380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2381
2382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002384 ------------------------------------------------------------------------*/
2385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2386 {
2387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2388 "WDI API call before module is initialized - Fail request");
2389
Jeff Johnsone7245742012-09-05 17:12:55 -07002390 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002391 }
2392
2393 /*------------------------------------------------------------------------
2394 Fill in Event data and post to the Main FSM
2395 ------------------------------------------------------------------------*/
2396 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002397 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2398 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2399 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002400 wdiEventData.pUserData = pUserData;
2401
2402 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2403
2404}/*WDI_RemoveBSSKeyReq*/
2405
2406
2407/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002409 ready to install a STA(ast) encryption key in HW. Upon
2410 the call of this API the WLAN DAL will pack and send a
2411 HAL Set STA Key request message to the lower RIVA
2412 sub-system if DAL is in state STARTED.
2413
2414 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002415 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002416
2417 WDI_PostAssocReq must have been called.
2418
Jeff Johnsone7245742012-09-05 17:12:55 -07002419 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002420 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002421
Jeff Johnson295189b2012-06-20 16:38:30 -07002422 wdiSetSTAKeyRspCb: callback for passing back the
2423 response of the set STA key operation received from the
2424 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002425
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 callback
2428
Jeff Johnson295189b2012-06-20 16:38:30 -07002429 @see WDI_PostAssocReq
2430 @return Result of the function call
2431*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002432WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002433WDI_SetSTAKeyReq
2434(
2435 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2436 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2437 void* pUserData
2438)
2439{
2440 WDI_EventInfoType wdiEventData;
2441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2442
2443 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002445 ------------------------------------------------------------------------*/
2446 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2447 {
2448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2449 "WDI API call before module is initialized - Fail request");
2450
Jeff Johnsone7245742012-09-05 17:12:55 -07002451 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002452 }
2453
2454 /*------------------------------------------------------------------------
2455 Fill in Event data and post to the Main FSM
2456 ------------------------------------------------------------------------*/
2457 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2459 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2460 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 wdiEventData.pUserData = pUserData;
2462
2463 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2464
2465}/*WDI_SetSTAKeyReq*/
2466
2467
2468/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002469 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002470 wants to uninstall a previously set STA key in HW. Upon
2471 the call of this API the WLAN DAL will pack and send a
2472 HAL Remove STA Key request message to the lower RIVA
2473 sub-system if DAL is in state STARTED.
2474
2475 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002476 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002477
2478 WDI_SetSTAKeyReq must have been called.
2479
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002482
Jeff Johnson295189b2012-06-20 16:38:30 -07002483 wdiRemoveSTAKeyRspCb: callback for passing back the
2484 response of the remove STA key operation received from
2485 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002486
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002488 callback
2489
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 @see WDI_SetSTAKeyReq
2491 @return Result of the function call
2492*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002494WDI_RemoveSTAKeyReq
2495(
2496 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2497 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2498 void* pUserData
2499)
2500{
2501 WDI_EventInfoType wdiEventData;
2502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2503
2504 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002506 ------------------------------------------------------------------------*/
2507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2508 {
2509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2510 "WDI API call before module is initialized - Fail request");
2511
Jeff Johnsone7245742012-09-05 17:12:55 -07002512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002513 }
2514
2515 /*------------------------------------------------------------------------
2516 Fill in Event data and post to the Main FSM
2517 ------------------------------------------------------------------------*/
2518 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002519 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2520 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2521 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 wdiEventData.pUserData = pUserData;
2523
2524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2525
2526}/*WDI_RemoveSTAKeyReq*/
2527
2528
2529/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002530 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 wants to install a STA Bcast encryption key on the HW.
2532 Upon the call of this API the WLAN DAL will pack and
2533 send a HAL Start request message to the lower RIVA
2534 sub-system if DAL is in state STARTED.
2535
2536 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002537 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002538
2539 WDI_PostAssocReq must have been called.
2540
Jeff Johnsone7245742012-09-05 17:12:55 -07002541 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002543
Jeff Johnson295189b2012-06-20 16:38:30 -07002544 wdiSetSTABcastKeyRspCb: callback for passing back the
2545 response of the set BSS Key operation received from the
2546 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002547
Jeff Johnson295189b2012-06-20 16:38:30 -07002548 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002549 callback
2550
Jeff Johnson295189b2012-06-20 16:38:30 -07002551 @see WDI_PostAssocReq
2552 @return Result of the function call
2553*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002554WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002555WDI_SetSTABcastKeyReq
2556(
2557 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2558 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2559 void* pUserData
2560)
2561
2562{
2563 WDI_EventInfoType wdiEventData;
2564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2565
2566 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002567 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002568 ------------------------------------------------------------------------*/
2569 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2570 {
2571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2572 "WDI API call before module is initialized - Fail request");
2573
Jeff Johnsone7245742012-09-05 17:12:55 -07002574 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002575 }
2576
2577 /*------------------------------------------------------------------------
2578 Fill in Event data and post to the Main FSM
2579 ------------------------------------------------------------------------*/
2580 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2582 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2583 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 wdiEventData.pUserData = pUserData;
2585
2586 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2587
2588}/*WDI_SetSTABcastKeyReq*/
2589
2590/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 MAC wants to uninstall a STA Bcast key from HW. Upon the
2593 call of this API the WLAN DAL will pack and send a HAL
2594 Remove STA Bcast Key request message to the lower RIVA
2595 sub-system if DAL is in state STARTED.
2596
2597 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002598 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002599
2600 WDI_SetSTABcastKeyReq must have been called.
2601
Jeff Johnsone7245742012-09-05 17:12:55 -07002602 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002603 parameters as specified by the Device
2604 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002605
Jeff Johnson295189b2012-06-20 16:38:30 -07002606 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2607 response of the remove STA Bcast key operation received
2608 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002609
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002611 callback
2612
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 @see WDI_SetSTABcastKeyReq
2614 @return Result of the function call
2615*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002616WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002617WDI_RemoveSTABcastKeyReq
2618(
2619 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2620 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2621 void* pUserData
2622)
2623{
2624 WDI_EventInfoType wdiEventData;
2625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2626
2627 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002628 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002629 ------------------------------------------------------------------------*/
2630 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2631 {
2632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2633 "WDI API call before module is initialized - Fail request");
2634
Jeff Johnsone7245742012-09-05 17:12:55 -07002635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002636 }
2637
2638 /*------------------------------------------------------------------------
2639 Fill in Event data and post to the Main FSM
2640 ------------------------------------------------------------------------*/
2641 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002642 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2643 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2644 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 wdiEventData.pUserData = pUserData;
2646
2647 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2648
2649}/*WDI_RemoveSTABcastKeyReq*/
2650
2651/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002652 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002653 MAC wants to set Max Tx Power to HW. Upon the
2654 call of this API the WLAN DAL will pack and send a HAL
2655 Remove STA Bcast Key request message to the lower RIVA
2656 sub-system if DAL is in state STARTED.
2657
2658 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002659 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002660
2661 WDI_SetSTABcastKeyReq must have been called.
2662
Jeff Johnsone7245742012-09-05 17:12:55 -07002663 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002664 parameters as specified by the Device
2665 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002666
Jeff Johnson295189b2012-06-20 16:38:30 -07002667 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2668 response of the remove STA Bcast key operation received
2669 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002670
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 callback
2673
Jeff Johnson295189b2012-06-20 16:38:30 -07002674 @see WDI_SetMaxTxPowerReq
2675 @return Result of the function call
2676*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002677WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002678WDI_SetMaxTxPowerReq
2679(
2680 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2681 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2682 void* pUserData
2683)
2684{
2685 WDI_EventInfoType wdiEventData;
2686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2687
2688 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002689 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002690 ------------------------------------------------------------------------*/
2691 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2692 {
2693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2694 "WDI API call before module is initialized - Fail request");
2695
Jeff Johnsone7245742012-09-05 17:12:55 -07002696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 }
2698
2699 /*------------------------------------------------------------------------
2700 Fill in Event data and post to the Main FSM
2701 ------------------------------------------------------------------------*/
2702 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002703 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2704 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2705 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 wdiEventData.pUserData = pUserData;
2707
2708 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2709}
2710
2711#ifdef FEATURE_WLAN_CCX
2712WDI_Status
2713WDI_TSMStatsReq
2714(
2715 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2716 WDI_TsmRspCb wdiReqStatusCb,
2717 void* pUserData
2718)
2719{
2720 WDI_EventInfoType wdiEventData;
2721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002722 /*------------------------------------------------------------------------
2723 Sanity Check
2724 ------------------------------------------------------------------------*/
2725 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2726 {
2727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2728 "WDI API call before module is initialized - Fail request");
2729
2730 return WDI_STATUS_E_NOT_ALLOWED;
2731 }
2732
2733 /*------------------------------------------------------------------------
2734 Fill in Event data and post to the Main FSM
2735 ------------------------------------------------------------------------*/
2736 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2737 wdiEventData.pEventData = pwdiTsmReqParams;
2738 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2739 wdiEventData.pCBfnc = wdiReqStatusCb;
2740 wdiEventData.pUserData = pUserData;
2741
2742 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2743
2744}
2745#endif
2746
2747/*========================================================================
2748
2749 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002750
Jeff Johnson295189b2012-06-20 16:38:30 -07002751==========================================================================*/
2752
2753/**
2754 @brief WDI_AddTSReq will be called when the upper MAC to inform
2755 the device of a successful add TSpec negotiation. HW
2756 needs to receive the TSpec Info from the UMAC in order
2757 to configure properly the QoS data traffic. Upon the
2758 call of this API the WLAN DAL will pack and send a HAL
2759 Add TS request message to the lower RIVA sub-system if
2760 DAL is in state STARTED.
2761
2762 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002764
2765 WDI_PostAssocReq must have been called.
2766
2767 @param wdiAddTsReqParams: the add TS parameters as specified by
2768 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002769
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 wdiAddTsRspCb: callback for passing back the response of
2771 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002772
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002774 callback
2775
Jeff Johnson295189b2012-06-20 16:38:30 -07002776 @see WDI_PostAssocReq
2777 @return Result of the function call
2778*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002779WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002780WDI_AddTSReq
2781(
2782 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2783 WDI_AddTsRspCb wdiAddTsRspCb,
2784 void* pUserData
2785)
2786{
2787 WDI_EventInfoType wdiEventData;
2788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2789
2790 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002791 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002792 ------------------------------------------------------------------------*/
2793 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2794 {
2795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2796 "WDI API call before module is initialized - Fail request");
2797
Jeff Johnsone7245742012-09-05 17:12:55 -07002798 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002799 }
2800
2801 /*------------------------------------------------------------------------
2802 Fill in Event data and post to the Main FSM
2803 ------------------------------------------------------------------------*/
2804 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002805 wdiEventData.pEventData = pwdiAddTsReqParams;
2806 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2807 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002808 wdiEventData.pUserData = pUserData;
2809
2810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2811
2812}/*WDI_AddTSReq*/
2813
2814
2815
2816/**
2817 @brief WDI_DelTSReq will be called when the upper MAC has ended
2818 admission on a specific AC. This is to inform HW that
2819 QoS traffic parameters must be rest. Upon the call of
2820 this API the WLAN DAL will pack and send a HAL Del TS
2821 request message to the lower RIVA sub-system if DAL is
2822 in state STARTED.
2823
2824 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002826
2827 WDI_AddTSReq must have been called.
2828
2829 @param wdiDelTsReqParams: the del TS parameters as specified by
2830 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002831
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 wdiDelTsRspCb: callback for passing back the response of
2833 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002834
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002836 callback
2837
Jeff Johnson295189b2012-06-20 16:38:30 -07002838 @see WDI_AddTSReq
2839 @return Result of the function call
2840*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002841WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002842WDI_DelTSReq
2843(
2844 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2845 WDI_DelTsRspCb wdiDelTsRspCb,
2846 void* pUserData
2847)
2848{
2849 WDI_EventInfoType wdiEventData;
2850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2851
2852 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002853 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002854 ------------------------------------------------------------------------*/
2855 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2856 {
2857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2858 "WDI API call before module is initialized - Fail request");
2859
Jeff Johnsone7245742012-09-05 17:12:55 -07002860 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002861 }
2862
2863 /*------------------------------------------------------------------------
2864 Fill in Event data and post to the Main FSM
2865 ------------------------------------------------------------------------*/
2866 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002867 wdiEventData.pEventData = pwdiDelTsReqParams;
2868 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2869 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 wdiEventData.pUserData = pUserData;
2871
2872 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2873
2874}/*WDI_DelTSReq*/
2875
2876
2877
2878/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002879 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002880 wishes to update the EDCA parameters used by HW for QoS
2881 data traffic. Upon the call of this API the WLAN DAL
2882 will pack and send a HAL Update EDCA Params request
2883 message to the lower RIVA sub-system if DAL is in state
2884 STARTED.
2885
2886 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002887 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002888
2889 WDI_PostAssocReq must have been called.
2890
Jeff Johnsone7245742012-09-05 17:12:55 -07002891 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002893
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 wdiUpdateEDCAParamsRspCb: callback for passing back the
2895 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002896
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002898 callback
2899
Jeff Johnson295189b2012-06-20 16:38:30 -07002900 @see WDI_PostAssocReq
2901 @return Result of the function call
2902*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002903WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002904WDI_UpdateEDCAParams
2905(
2906 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2907 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2908 void* pUserData
2909)
2910{
2911 WDI_EventInfoType wdiEventData;
2912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2913
2914 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002915 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002916 ------------------------------------------------------------------------*/
2917 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2918 {
2919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2920 "WDI API call before module is initialized - Fail request");
2921
Jeff Johnsone7245742012-09-05 17:12:55 -07002922 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002923 }
2924
2925 /*------------------------------------------------------------------------
2926 Fill in Event data and post to the Main FSM
2927 ------------------------------------------------------------------------*/
2928 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002929 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2930 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2931 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002932 wdiEventData.pUserData = pUserData;
2933
2934 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2935
2936}/*WDI_UpdateEDCAParams*/
2937
2938
2939/**
2940 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2941 successfully a BA session and needs to notify the HW for
2942 the appropriate settings to take place. Upon the call of
2943 this API the WLAN DAL will pack and send a HAL Add BA
2944 request message to the lower RIVA sub-system if DAL is
2945 in state STARTED.
2946
2947 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002948 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002949
2950 WDI_PostAssocReq must have been called.
2951
2952 @param wdiAddBAReqParams: the add BA parameters as specified by
2953 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002954
Jeff Johnson295189b2012-06-20 16:38:30 -07002955 wdiAddBARspCb: callback for passing back the response of
2956 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002957
Jeff Johnson295189b2012-06-20 16:38:30 -07002958 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002959 callback
2960
Jeff Johnson295189b2012-06-20 16:38:30 -07002961 @see WDI_PostAssocReq
2962 @return Result of the function call
2963*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002964WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002965WDI_AddBASessionReq
2966(
2967 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
2968 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
2969 void* pUserData
2970)
2971{
2972 WDI_EventInfoType wdiEventData;
2973 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2974
2975 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002976 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002977 ------------------------------------------------------------------------*/
2978 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2979 {
2980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2981 "WDI API call before module is initialized - Fail request");
2982
Jeff Johnsone7245742012-09-05 17:12:55 -07002983 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002984 }
2985
2986 /*------------------------------------------------------------------------
2987 Fill in Event data and post to the Main FSM
2988 ------------------------------------------------------------------------*/
2989 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002990 wdiEventData.pEventData = pwdiAddBASessionReqParams;
2991 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
2992 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002993 wdiEventData.pUserData = pUserData;
2994
2995 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2996
2997}/*WDI_AddBASessionReq*/
2998
2999/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003000 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003001 inform HW that it has deleted a previously created BA
3002 session. Upon the call of this API the WLAN DAL will
3003 pack and send a HAL Del BA request message to the lower
3004 RIVA sub-system if DAL is in state STARTED.
3005
3006 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003007 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003008
3009 WDI_AddBAReq must have been called.
3010
3011 @param wdiDelBAReqParams: the del BA parameters as specified by
3012 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003013
Jeff Johnson295189b2012-06-20 16:38:30 -07003014 wdiDelBARspCb: callback for passing back the response of
3015 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003016
Jeff Johnson295189b2012-06-20 16:38:30 -07003017 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003018 callback
3019
Jeff Johnson295189b2012-06-20 16:38:30 -07003020 @see WDI_AddBAReq
3021 @return Result of the function call
3022*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003023WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003024WDI_DelBAReq
3025(
3026 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3027 WDI_DelBARspCb wdiDelBARspCb,
3028 void* pUserData
3029)
3030{
3031 WDI_EventInfoType wdiEventData;
3032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3033
3034 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003035 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003036 ------------------------------------------------------------------------*/
3037 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3038 {
3039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3040 "WDI API call before module is initialized - Fail request");
3041
Jeff Johnsone7245742012-09-05 17:12:55 -07003042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003043 }
3044
3045 /*------------------------------------------------------------------------
3046 Fill in Event data and post to the Main FSM
3047 ------------------------------------------------------------------------*/
3048 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003049 wdiEventData.pEventData = pwdiDelBAReqParams;
3050 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3051 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003052 wdiEventData.pUserData = pUserData;
3053
3054 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3055
3056}/*WDI_DelBAReq*/
3057
Jeff Johnsone7245742012-09-05 17:12:55 -07003058/*========================================================================
3059
Jeff Johnson295189b2012-06-20 16:38:30 -07003060 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003061
Jeff Johnson295189b2012-06-20 16:38:30 -07003062==========================================================================*/
3063
3064/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003065 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003066 wants to set the power save related configurations of
3067 the WLAN Device. Upon the call of this API the WLAN DAL
3068 will pack and send a HAL Update CFG request message to
3069 the lower RIVA sub-system if DAL is in state STARTED.
3070
3071 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003072 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003073
3074 WDI_Start must have been called.
3075
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003077 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003078
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 wdiSetPwrSaveCfgCb: callback for passing back the
3080 response of the set power save cfg operation received
3081 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003082
Jeff Johnson295189b2012-06-20 16:38:30 -07003083 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003084 callback
3085
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003087 @return Result of the function call
3088*/
3089WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003090WDI_SetPwrSaveCfgReq
3091(
3092 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3093 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3094 void* pUserData
3095)
3096{
3097 WDI_EventInfoType wdiEventData;
3098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3099
3100 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003101 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003102 ------------------------------------------------------------------------*/
3103 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3104 {
3105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3106 "WDI API call before module is initialized - Fail request");
3107
Jeff Johnsone7245742012-09-05 17:12:55 -07003108 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 }
3110
3111 /*------------------------------------------------------------------------
3112 Fill in Event data and post to the Main FSM
3113 ------------------------------------------------------------------------*/
3114 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003115 wdiEventData.pEventData = pwdiPowerSaveCfg;
3116 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3117 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003118 wdiEventData.pUserData = pUserData;
3119
3120 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3121
3122}/*WDI_SetPwrSaveCfgReq*/
3123
3124/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003125 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 request the device to get into IMPS power state. Upon
3127 the call of this API the WLAN DAL will send a HAL Enter
3128 IMPS request message to the lower RIVA sub-system if DAL
3129 is in state STARTED.
3130
3131 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003132 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003133
Jeff Johnsone7245742012-09-05 17:12:55 -07003134
3135 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003136 response of the Enter IMPS operation received from the
3137 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003138
Jeff Johnson295189b2012-06-20 16:38:30 -07003139 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003140 callback
3141
Jeff Johnson295189b2012-06-20 16:38:30 -07003142 @see WDI_Start
3143 @return Result of the function call
3144*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003146WDI_EnterImpsReq
3147(
3148 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3149 void* pUserData
3150)
3151{
3152 WDI_EventInfoType wdiEventData;
3153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3154
3155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003156 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003157 ------------------------------------------------------------------------*/
3158 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3159 {
3160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3161 "WDI API call before module is initialized - Fail request");
3162
Jeff Johnsone7245742012-09-05 17:12:55 -07003163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003164 }
3165
3166 /*------------------------------------------------------------------------
3167 Fill in Event data and post to the Main FSM
3168 ------------------------------------------------------------------------*/
3169 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003170 wdiEventData.pEventData = NULL;
3171 wdiEventData.uEventDataSize = 0;
3172 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003173 wdiEventData.pUserData = pUserData;
3174
3175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3176
3177}/*WDI_EnterImpsReq*/
3178
3179/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003180 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003181 request the device to get out of IMPS power state. Upon
3182 the call of this API the WLAN DAL will send a HAL Exit
3183 IMPS request message to the lower RIVA sub-system if DAL
3184 is in state STARTED.
3185
3186 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003187 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003188
Jeff Johnson295189b2012-06-20 16:38:30 -07003189
Jeff Johnsone7245742012-09-05 17:12:55 -07003190
3191 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003192 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003193
Jeff Johnson295189b2012-06-20 16:38:30 -07003194 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003195 callback
3196
Jeff Johnson295189b2012-06-20 16:38:30 -07003197 @see WDI_Start
3198 @return Result of the function call
3199*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003200WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003201WDI_ExitImpsReq
3202(
3203 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3204 void* pUserData
3205)
3206{
3207 WDI_EventInfoType wdiEventData;
3208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3209
3210 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003211 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003212 ------------------------------------------------------------------------*/
3213 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3214 {
3215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3216 "WDI API call before module is initialized - Fail request");
3217
Jeff Johnsone7245742012-09-05 17:12:55 -07003218 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003219 }
3220
3221 /*------------------------------------------------------------------------
3222 Fill in Event data and post to the Main FSM
3223 ------------------------------------------------------------------------*/
3224 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003225 wdiEventData.pEventData = NULL;
3226 wdiEventData.uEventDataSize = 0;
3227 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 wdiEventData.pUserData = pUserData;
3229
3230 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3231
3232}/*WDI_ExitImpsReq*/
3233
3234/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003235 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003236 request the device to get into BMPS power state. Upon
3237 the call of this API the WLAN DAL will pack and send a
3238 HAL Enter BMPS request message to the lower RIVA
3239 sub-system if DAL is in state STARTED.
3240
3241 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003242 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003243
3244 WDI_PostAssocReq must have been called.
3245
Jeff Johnsone7245742012-09-05 17:12:55 -07003246 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003247 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003248
Jeff Johnson295189b2012-06-20 16:38:30 -07003249 wdiEnterBmpsRspCb: callback for passing back the
3250 response of the Enter BMPS operation received from the
3251 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003252
Jeff Johnson295189b2012-06-20 16:38:30 -07003253 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003254 callback
3255
Jeff Johnson295189b2012-06-20 16:38:30 -07003256 @see WDI_PostAssocReq
3257 @return Result of the function call
3258*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003259WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003260WDI_EnterBmpsReq
3261(
3262 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3263 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3264 void* pUserData
3265)
3266{
3267 WDI_EventInfoType wdiEventData;
3268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3269
3270 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003271 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003272 ------------------------------------------------------------------------*/
3273 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3274 {
3275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3276 "WDI API call before module is initialized - Fail request");
3277
Jeff Johnsone7245742012-09-05 17:12:55 -07003278 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003279 }
3280
3281 /*------------------------------------------------------------------------
3282 Fill in Event data and post to the Main FSM
3283 ------------------------------------------------------------------------*/
3284 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003285 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3286 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3287 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003288 wdiEventData.pUserData = pUserData;
3289
3290 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3291
3292}/*WDI_EnterBmpsReq*/
3293
3294/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003295 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003296 request the device to get out of BMPS power state. Upon
3297 the call of this API the WLAN DAL will pack and send a
3298 HAL Exit BMPS request message to the lower RIVA
3299 sub-system if DAL is in state STARTED.
3300
3301 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003302 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003303
3304 WDI_PostAssocReq must have been called.
3305
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003308
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 wdiExitBmpsRspCb: callback for passing back the response
3310 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003311
Jeff Johnson295189b2012-06-20 16:38:30 -07003312 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003313 callback
3314
Jeff Johnson295189b2012-06-20 16:38:30 -07003315 @see WDI_PostAssocReq
3316 @return Result of the function call
3317*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003318WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003319WDI_ExitBmpsReq
3320(
3321 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3322 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3323 void* pUserData
3324)
3325{
3326 WDI_EventInfoType wdiEventData;
3327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3328
3329 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003330 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003331 ------------------------------------------------------------------------*/
3332 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3333 {
3334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3335 "WDI API call before module is initialized - Fail request");
3336
Jeff Johnsone7245742012-09-05 17:12:55 -07003337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003338 }
3339
3340 /*------------------------------------------------------------------------
3341 Fill in Event data and post to the Main FSM
3342 ------------------------------------------------------------------------*/
3343 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003344 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3345 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3346 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003347 wdiEventData.pUserData = pUserData;
3348
3349 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3350
3351}/*WDI_ExitBmpsReq*/
3352
3353/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003354 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003355 request the device to get into UAPSD power state. Upon
3356 the call of this API the WLAN DAL will pack and send a
3357 HAL Enter UAPSD request message to the lower RIVA
3358 sub-system if DAL is in state STARTED.
3359
3360 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003361 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003362
3363 WDI_PostAssocReq must have been called.
3364 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003365
3366 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003367 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003368
Jeff Johnson295189b2012-06-20 16:38:30 -07003369 wdiEnterUapsdRspCb: callback for passing back the
3370 response of the Enter UAPSD operation received from the
3371 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003372
Jeff Johnson295189b2012-06-20 16:38:30 -07003373 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003374 callback
3375
Jeff Johnson295189b2012-06-20 16:38:30 -07003376 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3377 @return Result of the function call
3378*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003379WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003380WDI_EnterUapsdReq
3381(
3382 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3383 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3384 void* pUserData
3385)
3386{
3387 WDI_EventInfoType wdiEventData;
3388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3389
3390 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003391 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003392 ------------------------------------------------------------------------*/
3393 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3394 {
3395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3396 "WDI API call before module is initialized - Fail request");
3397
Jeff Johnsone7245742012-09-05 17:12:55 -07003398 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003399 }
3400
3401 /*------------------------------------------------------------------------
3402 Fill in Event data and post to the Main FSM
3403 ------------------------------------------------------------------------*/
3404 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003405 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3406 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3407 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 wdiEventData.pUserData = pUserData;
3409
3410 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3411
3412}/*WDI_EnterUapsdReq*/
3413
3414/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003415 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 request the device to get out of UAPSD power state. Upon
3417 the call of this API the WLAN DAL will send a HAL Exit
3418 UAPSD request message to the lower RIVA sub-system if
3419 DAL is in state STARTED.
3420
3421 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003422 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003423
3424 WDI_PostAssocReq must have been called.
3425
Jeff Johnsone7245742012-09-05 17:12:55 -07003426 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003427 response of the Exit UAPSD operation received from the
3428 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003429
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003431 callback
3432
Jeff Johnson295189b2012-06-20 16:38:30 -07003433 @see WDI_PostAssocReq
3434 @return Result of the function call
3435*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003436WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003437WDI_ExitUapsdReq
3438(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003439 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003440 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3441 void* pUserData
3442)
3443{
3444 WDI_EventInfoType wdiEventData;
3445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3446
3447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003448 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003449 ------------------------------------------------------------------------*/
3450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3451 {
3452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3453 "WDI API call before module is initialized - Fail request");
3454
Jeff Johnsone7245742012-09-05 17:12:55 -07003455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003456 }
3457
3458 /*------------------------------------------------------------------------
3459 Fill in Event data and post to the Main FSM
3460 ------------------------------------------------------------------------*/
3461 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003462 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3463 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003464 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003465 wdiEventData.pUserData = pUserData;
3466
3467 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3468
3469}/*WDI_ExitUapsdReq*/
3470
3471/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003472 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 MAC wants to set the UAPSD related configurations
3474 of an associated STA (while acting as an AP) to the WLAN
3475 Device. Upon the call of this API the WLAN DAL will pack
3476 and send a HAL Update UAPSD params request message to
3477 the lower RIVA sub-system if DAL is in state STARTED.
3478
3479 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003480 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003481
3482 WDI_ConfigBSSReq must have been called.
3483
Jeff Johnsone7245742012-09-05 17:12:55 -07003484 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003486
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 wdiUpdateUapsdParamsCb: callback for passing back the
3488 response of the update UAPSD params operation received
3489 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003490
Jeff Johnson295189b2012-06-20 16:38:30 -07003491 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003492 callback
3493
Jeff Johnson295189b2012-06-20 16:38:30 -07003494 @see WDI_ConfigBSSReq
3495 @return Result of the function call
3496*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003497WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003498WDI_UpdateUapsdParamsReq
3499(
3500 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3501 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3502 void* pUserData
3503)
3504{
3505 WDI_EventInfoType wdiEventData;
3506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3507
3508 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003509 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003510 ------------------------------------------------------------------------*/
3511 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3512 {
3513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3514 "WDI API call before module is initialized - Fail request");
3515
Jeff Johnsone7245742012-09-05 17:12:55 -07003516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003517 }
3518
3519 /*------------------------------------------------------------------------
3520 Fill in Event data and post to the Main FSM
3521 ------------------------------------------------------------------------*/
3522 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003523 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003524 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003525 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 wdiEventData.pUserData = pUserData;
3527
3528 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3529
3530}/*WDI_UpdateUapsdParamsReq*/
3531
3532/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003533 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003534 MAC wants to set the UAPSD related configurations before
3535 requesting for enter UAPSD power state to the WLAN
3536 Device. Upon the call of this API the WLAN DAL will pack
3537 and send a HAL Set UAPSD params request message to
3538 the lower RIVA sub-system if DAL is in state STARTED.
3539
3540 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003541 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003542
3543 WDI_PostAssocReq must have been called.
3544
3545 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3546 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003547
Jeff Johnson295189b2012-06-20 16:38:30 -07003548 wdiSetUapsdAcParamsCb: callback for passing back the
3549 response of the set UAPSD params operation received from
3550 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003551
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003553 callback
3554
Jeff Johnson295189b2012-06-20 16:38:30 -07003555 @see WDI_PostAssocReq
3556 @return Result of the function call
3557*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003558WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003559WDI_SetUapsdAcParamsReq
3560(
3561 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3562 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3563 void* pUserData
3564)
3565{
3566 WDI_EventInfoType wdiEventData;
3567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3568
3569 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003570 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003571 ------------------------------------------------------------------------*/
3572 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3573 {
3574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3575 "WDI API call before module is initialized - Fail request");
3576
Jeff Johnsone7245742012-09-05 17:12:55 -07003577 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 }
3579
3580 /*------------------------------------------------------------------------
3581 Fill in Event data and post to the Main FSM
3582 ------------------------------------------------------------------------*/
3583 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 wdiEventData.pEventData = pwdiUapsdInfo;
3585 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3586 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003587 wdiEventData.pUserData = pUserData;
3588
3589 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3590
3591}/*WDI_SetUapsdAcParamsReq*/
3592
3593/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003594 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 MAC wants to set/reset the RXP filters for received pkts
3596 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3597 and send a HAL configure RXP filter request message to
3598 the lower RIVA sub-system.
3599
3600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003602
Jeff Johnsone7245742012-09-05 17:12:55 -07003603
3604 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 filter as specified by the Device
3606 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003607
Jeff Johnson295189b2012-06-20 16:38:30 -07003608 wdiConfigureRxpFilterCb: callback for passing back the
3609 response of the configure RXP filter operation received
3610 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003611
Jeff Johnson295189b2012-06-20 16:38:30 -07003612 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003613 callback
3614
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 @return Result of the function call
3616*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003617WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003618WDI_ConfigureRxpFilterReq
3619(
3620 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3621 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3622 void* pUserData
3623)
3624{
3625 WDI_EventInfoType wdiEventData;
3626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3627
3628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003629 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 ------------------------------------------------------------------------*/
3631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3632 {
3633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3634 "WDI API call before module is initialized - Fail request");
3635
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 }
3638
3639 /*------------------------------------------------------------------------
3640 Fill in Event data and post to the Main FSM
3641 ------------------------------------------------------------------------*/
3642 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003643 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3644 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3645 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003646 wdiEventData.pUserData = pUserData;
3647
3648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3649}/*WDI_ConfigureRxpFilterReq*/
3650
3651/**
3652 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3653 wants to set the beacon filters while in power save.
3654 Upon the call of this API the WLAN DAL will pack and
3655 send a Beacon filter request message to the
3656 lower RIVA sub-system.
3657
3658 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003659 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003660
Jeff Johnsone7245742012-09-05 17:12:55 -07003661
3662 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 filter as specified by the Device
3664 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003665
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 wdiBeaconFilterCb: callback for passing back the
3667 response of the set beacon filter operation received
3668 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003669
Jeff Johnson295189b2012-06-20 16:38:30 -07003670 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003671 callback
3672
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 @return Result of the function call
3674*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003675WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003676WDI_SetBeaconFilterReq
3677(
3678 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3679 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3680 void* pUserData
3681)
3682{
3683 WDI_EventInfoType wdiEventData;
3684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3685
3686 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003687 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 ------------------------------------------------------------------------*/
3689 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3690 {
3691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3692 "WDI API call before module is initialized - Fail request");
3693
Jeff Johnsone7245742012-09-05 17:12:55 -07003694 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003695 }
3696
3697 /*------------------------------------------------------------------------
3698 Fill in Event data and post to the Main FSM
3699 ------------------------------------------------------------------------*/
3700 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003701 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003702 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003703 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003704 wdiEventData.pUserData = pUserData;
3705
3706 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3707}/*WDI_SetBeaconFilterReq*/
3708
3709/**
3710 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3711 wants to remove the beacon filter for particular IE
3712 while in power save. Upon the call of this API the WLAN
3713 DAL will pack and send a remove Beacon filter request
3714 message to the lower RIVA sub-system.
3715
3716 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003718
Jeff Johnsone7245742012-09-05 17:12:55 -07003719
3720 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 filter as specified by the Device
3722 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 wdiBeaconFilterCb: callback for passing back the
3725 response of the remove beacon filter operation received
3726 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003727
Jeff Johnson295189b2012-06-20 16:38:30 -07003728 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 callback
3730
Jeff Johnson295189b2012-06-20 16:38:30 -07003731 @return Result of the function call
3732*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003733WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003734WDI_RemBeaconFilterReq
3735(
3736 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3737 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3738 void* pUserData
3739)
3740{
3741 WDI_EventInfoType wdiEventData;
3742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3743
3744 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003745 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 ------------------------------------------------------------------------*/
3747 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3748 {
3749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3750 "WDI API call before module is initialized - Fail request");
3751
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003753 }
3754
3755 /*------------------------------------------------------------------------
3756 Fill in Event data and post to the Main FSM
3757 ------------------------------------------------------------------------*/
3758 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003759 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003760 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003761 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003762 wdiEventData.pUserData = pUserData;
3763
3764 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3765}/*WDI_RemBeaconFilterReq*/
3766
3767/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003768 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003769 MAC wants to set the RSSI thresholds related
3770 configurations while in power save. Upon the call of
3771 this API the WLAN DAL will pack and send a HAL Set RSSI
3772 thresholds request message to the lower RIVA
3773 sub-system if DAL is in state STARTED.
3774
3775 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003776 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003777
3778 WDI_PostAssocReq must have been called.
3779
3780 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3781 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003782
Jeff Johnson295189b2012-06-20 16:38:30 -07003783 wdiSetUapsdAcParamsCb: callback for passing back the
3784 response of the set UAPSD params operation received from
3785 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003786
Jeff Johnson295189b2012-06-20 16:38:30 -07003787 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 callback
3789
Jeff Johnson295189b2012-06-20 16:38:30 -07003790 @see WDI_PostAssocReq
3791 @return Result of the function call
3792*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003793WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003794WDI_SetRSSIThresholdsReq
3795(
3796 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3797 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3798 void* pUserData
3799)
3800{
3801 WDI_EventInfoType wdiEventData;
3802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3803
3804 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003805 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003806 ------------------------------------------------------------------------*/
3807 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3808 {
3809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3810 "WDI API call before module is initialized - Fail request");
3811
Jeff Johnsone7245742012-09-05 17:12:55 -07003812 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 }
3814
3815 /*------------------------------------------------------------------------
3816 Fill in Event data and post to the Main FSM
3817 ------------------------------------------------------------------------*/
3818 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003820 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003821 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003822 wdiEventData.pUserData = pUserData;
3823
3824 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3825}/* WDI_SetRSSIThresholdsReq*/
3826
3827/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003828 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 wants to set the filter to minimize unnecessary host
3830 wakeup due to broadcast traffic while in power save.
3831 Upon the call of this API the WLAN DAL will pack and
3832 send a HAL host offload request message to the
3833 lower RIVA sub-system if DAL is in state STARTED.
3834
3835 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003836 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003837
3838 WDI_PostAssocReq must have been called.
3839
Jeff Johnsone7245742012-09-05 17:12:55 -07003840 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003841 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003842
Jeff Johnson295189b2012-06-20 16:38:30 -07003843 wdiHostOffloadCb: callback for passing back the response
3844 of the host offload operation received from the
3845 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003846
Jeff Johnson295189b2012-06-20 16:38:30 -07003847 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003848 callback
3849
Jeff Johnson295189b2012-06-20 16:38:30 -07003850 @see WDI_PostAssocReq
3851 @return Result of the function call
3852*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003853WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003854WDI_HostOffloadReq
3855(
3856 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3857 WDI_HostOffloadCb wdiHostOffloadCb,
3858 void* pUserData
3859)
3860{
3861 WDI_EventInfoType wdiEventData;
3862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3863
3864 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003865 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003866 ------------------------------------------------------------------------*/
3867 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3868 {
3869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3870 "WDI API call before module is initialized - Fail request");
3871
Jeff Johnsone7245742012-09-05 17:12:55 -07003872 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003873 }
3874
3875 /*------------------------------------------------------------------------
3876 Fill in Event data and post to the Main FSM
3877 ------------------------------------------------------------------------*/
3878 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003880 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003881 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 wdiEventData.pUserData = pUserData;
3883
3884 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3885}/*WDI_HostOffloadReq*/
3886
3887/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003888 @brief WDI_KeepAliveReq will be called when the upper MAC
3889 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003890 and minimize unnecessary host wakeups due to while in power save.
3891 Upon the call of this API the WLAN DAL will pack and
3892 send a HAL Keep Alive request message to the
3893 lower RIVA sub-system if DAL is in state STARTED.
3894
3895 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003896 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003897
3898 WDI_PostAssocReq must have been called.
3899
Jeff Johnsone7245742012-09-05 17:12:55 -07003900 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003901 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003902
Jeff Johnson295189b2012-06-20 16:38:30 -07003903 wdiKeepAliveCb: callback for passing back the response
3904 of the Keep Alive operation received from the
3905 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003906
Jeff Johnson295189b2012-06-20 16:38:30 -07003907 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 callback
3909
Jeff Johnson295189b2012-06-20 16:38:30 -07003910 @see WDI_PostAssocReq
3911 @return Result of the function call
3912*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003913WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003914WDI_KeepAliveReq
3915(
3916 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3917 WDI_KeepAliveCb wdiKeepAliveCb,
3918 void* pUserData
3919)
3920{
3921 WDI_EventInfoType wdiEventData;
3922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3923
3924 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003925 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003926 ------------------------------------------------------------------------*/
3927 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3928 {
3929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3930 "WDI_KeepAliveReq: WDI API call before module "
3931 "is initialized - Fail request");
3932
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003934 }
3935
3936 /*------------------------------------------------------------------------
3937 Fill in Event data and post to the Main FSM
3938 ------------------------------------------------------------------------*/
3939 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003940 wdiEventData.pEventData = pwdiKeepAliveParams;
3941 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3942 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 wdiEventData.pUserData = pUserData;
3944
3945 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3946}/*WDI_KeepAliveReq*/
3947
3948/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003949 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 wants to set the Wowl Bcast ptrn to minimize unnecessary
3951 host wakeup due to broadcast traffic while in power
3952 save. Upon the call of this API the WLAN DAL will pack
3953 and send a HAL Wowl Bcast ptrn request message to the
3954 lower RIVA sub-system if DAL is in state STARTED.
3955
3956 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003957 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003958
3959 WDI_PostAssocReq must have been called.
3960
Jeff Johnsone7245742012-09-05 17:12:55 -07003961 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003962 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003963
Jeff Johnson295189b2012-06-20 16:38:30 -07003964 wdiWowlAddBcPtrnCb: callback for passing back the
3965 response of the add Wowl bcast ptrn operation received
3966 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003967
Jeff Johnson295189b2012-06-20 16:38:30 -07003968 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003969 callback
3970
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 @see WDI_PostAssocReq
3972 @return Result of the function call
3973*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003974WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003975WDI_WowlAddBcPtrnReq
3976(
3977 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
3978 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
3979 void* pUserData
3980)
3981{
3982 WDI_EventInfoType wdiEventData;
3983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3984
3985 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003986 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003987 ------------------------------------------------------------------------*/
3988 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3989 {
3990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3991 "WDI API call before module is initialized - Fail request");
3992
Jeff Johnsone7245742012-09-05 17:12:55 -07003993 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 }
3995
3996 /*------------------------------------------------------------------------
3997 Fill in Event data and post to the Main FSM
3998 ------------------------------------------------------------------------*/
3999 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004000 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004001 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004002 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004003 wdiEventData.pUserData = pUserData;
4004
4005 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4006}/*WDI_WowlAddBcPtrnReq*/
4007
4008/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004009 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004010 wants to clear the Wowl Bcast ptrn. Upon the call of
4011 this API the WLAN DAL will pack and send a HAL delete
4012 Wowl Bcast ptrn request message to the lower RIVA
4013 sub-system if DAL is in state STARTED.
4014
4015 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004016 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004017
4018 WDI_WowlAddBcPtrnReq must have been called.
4019
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004022
Jeff Johnson295189b2012-06-20 16:38:30 -07004023 wdiWowlDelBcPtrnCb: callback for passing back the
4024 response of the del Wowl bcast ptrn operation received
4025 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004026
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 callback
4029
Jeff Johnson295189b2012-06-20 16:38:30 -07004030 @see WDI_WowlAddBcPtrnReq
4031 @return Result of the function call
4032*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004033WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004034WDI_WowlDelBcPtrnReq
4035(
4036 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4037 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4038 void* pUserData
4039)
4040{
4041 WDI_EventInfoType wdiEventData;
4042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4043
4044 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 ------------------------------------------------------------------------*/
4047 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4048 {
4049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4050 "WDI API call before module is initialized - Fail request");
4051
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004053 }
4054
4055 /*------------------------------------------------------------------------
4056 Fill in Event data and post to the Main FSM
4057 ------------------------------------------------------------------------*/
4058 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004060 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004061 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004062 wdiEventData.pUserData = pUserData;
4063
4064 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4065}/*WDI_WowlDelBcPtrnReq*/
4066
4067/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004068 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004069 wants to enter the Wowl state to minimize unnecessary
4070 host wakeup while in power save. Upon the call of this
4071 API the WLAN DAL will pack and send a HAL Wowl enter
4072 request message to the lower RIVA sub-system if DAL is
4073 in state STARTED.
4074
4075 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004076 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004077
4078 WDI_PostAssocReq must have been called.
4079
Jeff Johnsone7245742012-09-05 17:12:55 -07004080 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004081 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004082
Jeff Johnson295189b2012-06-20 16:38:30 -07004083 wdiWowlEnterReqCb: callback for passing back the
4084 response of the enter Wowl operation received from the
4085 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004086
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 callback
4089
Jeff Johnson295189b2012-06-20 16:38:30 -07004090 @see WDI_PostAssocReq
4091 @return Result of the function call
4092*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004093WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004094WDI_WowlEnterReq
4095(
4096 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4097 WDI_WowlEnterReqCb wdiWowlEnterCb,
4098 void* pUserData
4099)
4100{
4101 WDI_EventInfoType wdiEventData;
4102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4103
4104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004105 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004106 ------------------------------------------------------------------------*/
4107 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4108 {
4109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4110 "WDI API call before module is initialized - Fail request");
4111
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 }
4114
4115 /*------------------------------------------------------------------------
4116 Fill in Event data and post to the Main FSM
4117 ------------------------------------------------------------------------*/
4118 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004120 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004122 wdiEventData.pUserData = pUserData;
4123
4124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4125}/*WDI_WowlEnterReq*/
4126
4127/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004128 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004129 wants to exit the Wowl state. Upon the call of this API
4130 the WLAN DAL will pack and send a HAL Wowl exit request
4131 message to the lower RIVA sub-system if DAL is in state
4132 STARTED.
4133
4134 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004135 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004136
4137 WDI_WowlEnterReq must have been called.
4138
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004140 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004141
Jeff Johnson295189b2012-06-20 16:38:30 -07004142 wdiWowlExitReqCb: callback for passing back the response
4143 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004144
Jeff Johnson295189b2012-06-20 16:38:30 -07004145 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 callback
4147
Jeff Johnson295189b2012-06-20 16:38:30 -07004148 @see WDI_WowlEnterReq
4149 @return Result of the function call
4150*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004151WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004152WDI_WowlExitReq
4153(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004154 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 WDI_WowlExitReqCb wdiWowlExitCb,
4156 void* pUserData
4157)
4158{
4159 WDI_EventInfoType wdiEventData;
4160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4161
4162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 ------------------------------------------------------------------------*/
4165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4166 {
4167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4168 "WDI API call before module is initialized - Fail request");
4169
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004171 }
4172
4173 /*------------------------------------------------------------------------
4174 Fill in Event data and post to the Main FSM
4175 ------------------------------------------------------------------------*/
4176 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004177 wdiEventData.pEventData = pwdiWowlExitParams;
4178 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004179 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 wdiEventData.pUserData = pUserData;
4181
4182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4183}/*WDI_WowlExitReq*/
4184
4185/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004186 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004187 the upper MAC wants to dynamically adjusts the listen
4188 interval based on the WLAN/MSM activity. Upon the call
4189 of this API the WLAN DAL will pack and send a HAL
4190 configure Apps Cpu Wakeup State request message to the
4191 lower RIVA sub-system.
4192
4193 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004194 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004195
Jeff Johnsone7245742012-09-05 17:12:55 -07004196
4197 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 Apps Cpu Wakeup State as specified by the
4199 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004200
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4202 back the response of the configure Apps Cpu Wakeup State
4203 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004204
Jeff Johnson295189b2012-06-20 16:38:30 -07004205 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 callback
4207
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 @return Result of the function call
4209*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004210WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004211WDI_ConfigureAppsCpuWakeupStateReq
4212(
4213 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4214 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4215 void* pUserData
4216)
4217{
4218 WDI_EventInfoType wdiEventData;
4219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4220
4221 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004222 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 ------------------------------------------------------------------------*/
4224 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4225 {
4226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4227 "WDI API call before module is initialized - Fail request");
4228
Jeff Johnsone7245742012-09-05 17:12:55 -07004229 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004230 }
4231
4232 /*------------------------------------------------------------------------
4233 Fill in Event data and post to the Main FSM
4234 ------------------------------------------------------------------------*/
4235 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004236 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4237 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4238 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004239 wdiEventData.pUserData = pUserData;
4240
4241 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4242}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4243/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004244 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004245 to to perform a flush operation on a given AC. Upon the
4246 call of this API the WLAN DAL will pack and send a HAL
4247 Flush AC request message to the lower RIVA sub-system if
4248 DAL is in state STARTED.
4249
4250 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004251 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004252
4253 WDI_AddBAReq must have been called.
4254
Jeff Johnsone7245742012-09-05 17:12:55 -07004255 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004256 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004257
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 wdiFlushAcRspCb: callback for passing back the response
4259 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004260
Jeff Johnson295189b2012-06-20 16:38:30 -07004261 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004262 callback
4263
Jeff Johnson295189b2012-06-20 16:38:30 -07004264 @see WDI_AddBAReq
4265 @return Result of the function call
4266*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004267WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004268WDI_FlushAcReq
4269(
4270 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4271 WDI_FlushAcRspCb wdiFlushAcRspCb,
4272 void* pUserData
4273)
4274{
4275 WDI_EventInfoType wdiEventData;
4276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4277
4278 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004279 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004280 ------------------------------------------------------------------------*/
4281 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4282 {
4283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4284 "WDI API call before module is initialized - Fail request");
4285
Jeff Johnsone7245742012-09-05 17:12:55 -07004286 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004287 }
4288
4289 /*------------------------------------------------------------------------
4290 Fill in Event data and post to the Main FSM
4291 ------------------------------------------------------------------------*/
4292 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 wdiEventData.pEventData = pwdiFlushAcReqParams;
4294 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4295 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004296 wdiEventData.pUserData = pUserData;
4297
4298 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4299
4300}/*WDI_FlushAcReq*/
4301
4302/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004303 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 wants to notify the lower mac on a BT AMP event. This is
4305 to inform BTC-SLM that some BT AMP event occurred. Upon
4306 the call of this API the WLAN DAL will pack and send a
4307 HAL BT AMP event request message to the lower RIVA
4308 sub-system if DAL is in state STARTED.
4309
4310 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004311 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004312
Jeff Johnsone7245742012-09-05 17:12:55 -07004313
4314 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004315 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004316
Jeff Johnson295189b2012-06-20 16:38:30 -07004317 wdiBtAmpEventRspCb: callback for passing back the
4318 response of the BT AMP event operation received from the
4319 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004320
Jeff Johnson295189b2012-06-20 16:38:30 -07004321 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 callback
4323
Jeff Johnson295189b2012-06-20 16:38:30 -07004324 @return Result of the function call
4325*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004326WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004327WDI_BtAmpEventReq
4328(
4329 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4330 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4331 void* pUserData
4332)
4333{
4334 WDI_EventInfoType wdiEventData;
4335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4336
4337 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004338 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004339 ------------------------------------------------------------------------*/
4340 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4341 {
4342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4343 "WDI API call before module is initialized - Fail request");
4344
Jeff Johnsone7245742012-09-05 17:12:55 -07004345 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004346 }
4347
4348 /*------------------------------------------------------------------------
4349 Fill in Event data and post to the Main FSM
4350 ------------------------------------------------------------------------*/
4351 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004352 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4353 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4354 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004355 wdiEventData.pUserData = pUserData;
4356
4357 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4358
4359}/*WDI_BtAmpEventReq*/
4360
Jeff Johnsone7245742012-09-05 17:12:55 -07004361#ifdef FEATURE_OEM_DATA_SUPPORT
4362/**
4363 @brief WDI_Start Oem Data Req will be called when the upper MAC
4364 wants to notify the lower mac on a oem data Req event.Upon
4365 the call of this API the WLAN DAL will pack and send a
4366 HAL OEM Data Req event request message to the lower RIVA
4367 sub-system if DAL is in state STARTED.
4368
4369 In state BUSY this request will be queued. Request won't
4370 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004371
4372
Jeff Johnsone7245742012-09-05 17:12:55 -07004373
4374 @param pwdiOemDataReqParams: the Oem Data Req as
4375 specified by the Device Interface
4376
4377 wdiStartOemDataRspCb: callback for passing back the
4378 response of the Oem Data Req received from the
4379 device
4380
4381 pUserData: user data will be passed back with the
4382 callback
4383
4384 @return Result of the function call
4385*/
4386WDI_Status
4387WDI_StartOemDataReq
4388(
4389 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4390 WDI_oemDataRspCb wdiOemDataRspCb,
4391 void* pUserData
4392)
4393{
4394 WDI_EventInfoType wdiEventData;
4395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4396
4397 /*------------------------------------------------------------------------
4398 Sanity Check
4399 ------------------------------------------------------------------------*/
4400 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4401 {
4402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4403 "WDI API call before module is initialized - Fail request");
4404
4405 return WDI_STATUS_E_NOT_ALLOWED;
4406 }
4407
4408 /*------------------------------------------------------------------------
4409 Fill in Event data and post to the Main FSM
4410 ------------------------------------------------------------------------*/
4411 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4412 wdiEventData.pEventData = pwdiOemDataReqParams;
4413 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4414 wdiEventData.pCBfnc = wdiOemDataRspCb;
4415 wdiEventData.pUserData = pUserData;
4416
4417 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4418
4419
4420}
4421
4422#endif
4423
4424
4425/*========================================================================
4426
Jeff Johnson295189b2012-06-20 16:38:30 -07004427 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004428
Jeff Johnson295189b2012-06-20 16:38:30 -07004429==========================================================================*/
4430/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004432 the WLAN HW to change the current channel of operation.
4433 Upon the call of this API the WLAN DAL will pack and
4434 send a HAL Start request message to the lower RIVA
4435 sub-system if DAL is in state STARTED.
4436
4437 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004438 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004439
4440 WDI_Start must have been called.
4441
Jeff Johnsone7245742012-09-05 17:12:55 -07004442 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004443 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004444
Jeff Johnson295189b2012-06-20 16:38:30 -07004445 wdiSwitchChRspCb: callback for passing back the response
4446 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004447
Jeff Johnson295189b2012-06-20 16:38:30 -07004448 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004449 callback
4450
Jeff Johnson295189b2012-06-20 16:38:30 -07004451 @see WDI_Start
4452 @return Result of the function call
4453*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004454WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004455WDI_SwitchChReq
4456(
4457 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4458 WDI_SwitchChRspCb wdiSwitchChRspCb,
4459 void* pUserData
4460)
4461{
4462 WDI_EventInfoType wdiEventData;
4463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4464
4465 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004466 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004467 ------------------------------------------------------------------------*/
4468 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4469 {
4470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4471 "WDI API call before module is initialized - Fail request");
4472
Jeff Johnsone7245742012-09-05 17:12:55 -07004473 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004474 }
4475
4476 /*------------------------------------------------------------------------
4477 Fill in Event data and post to the Main FSM
4478 ------------------------------------------------------------------------*/
4479 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004480 wdiEventData.pEventData = pwdiSwitchChReqParams;
4481 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4482 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004483 wdiEventData.pUserData = pUserData;
4484
4485 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4486
4487}/*WDI_SwitchChReq*/
4488
4489
4490/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004491 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004492 wishes to add or update a STA in HW. Upon the call of
4493 this API the WLAN DAL will pack and send a HAL Start
4494 message request message to the lower RIVA sub-system if
4495 DAL is in state STARTED.
4496
4497 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004498 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004499
4500 WDI_Start must have been called.
4501
Jeff Johnsone7245742012-09-05 17:12:55 -07004502 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004504
Jeff Johnson295189b2012-06-20 16:38:30 -07004505 wdiConfigSTARspCb: callback for passing back the
4506 response of the config STA operation received from the
4507 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004508
Jeff Johnson295189b2012-06-20 16:38:30 -07004509 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004510 callback
4511
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 @see WDI_Start
4513 @return Result of the function call
4514*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004515WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004516WDI_ConfigSTAReq
4517(
4518 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4519 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4520 void* pUserData
4521)
4522{
4523 WDI_EventInfoType wdiEventData;
4524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4525
4526 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004527 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004528 ------------------------------------------------------------------------*/
4529 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4530 {
4531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4532 "WDI API call before module is initialized - Fail request");
4533
Jeff Johnsone7245742012-09-05 17:12:55 -07004534 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004535 }
4536
4537 /*------------------------------------------------------------------------
4538 Fill in Event data and post to the Main FSM
4539 ------------------------------------------------------------------------*/
4540 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004541 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4542 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4543 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 wdiEventData.pUserData = pUserData;
4545
4546 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4547
4548}/*WDI_ConfigSTAReq*/
4549
4550/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004551 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004552 wants to change the state of an ongoing link. Upon the
4553 call of this API the WLAN DAL will pack and send a HAL
4554 Start message request message to the lower RIVA
4555 sub-system if DAL is in state STARTED.
4556
4557 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004558 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004559
4560 WDI_JoinStartReq must have been called.
4561
Jeff Johnsone7245742012-09-05 17:12:55 -07004562 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004564
Jeff Johnson295189b2012-06-20 16:38:30 -07004565 wdiSetLinkStateRspCb: callback for passing back the
4566 response of the set link state operation received from
4567 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004568
Jeff Johnson295189b2012-06-20 16:38:30 -07004569 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 callback
4571
Jeff Johnson295189b2012-06-20 16:38:30 -07004572 @see WDI_JoinStartReq
4573 @return Result of the function call
4574*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004575WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004576WDI_SetLinkStateReq
4577(
4578 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4579 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4580 void* pUserData
4581)
4582{
4583 WDI_EventInfoType wdiEventData;
4584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4585
4586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004587 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004588 ------------------------------------------------------------------------*/
4589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4590 {
4591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4592 "WDI API call before module is initialized - Fail request");
4593
Jeff Johnsone7245742012-09-05 17:12:55 -07004594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004595 }
4596
4597 /*------------------------------------------------------------------------
4598 Fill in Event data and post to the Main FSM
4599 ------------------------------------------------------------------------*/
4600 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004601 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4602 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4603 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 wdiEventData.pUserData = pUserData;
4605
4606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4607
4608}/*WDI_SetLinkStateReq*/
4609
4610
4611/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 to get statistics (MIB counters) from the device. Upon
4614 the call of this API the WLAN DAL will pack and send a
4615 HAL Start request message to the lower RIVA sub-system
4616 if DAL is in state STARTED.
4617
4618 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004620
4621 WDI_Start must have been called.
4622
Jeff Johnsone7245742012-09-05 17:12:55 -07004623 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004624 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004625
Jeff Johnson295189b2012-06-20 16:38:30 -07004626 wdiGetStatsRspCb: callback for passing back the response
4627 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004628
Jeff Johnson295189b2012-06-20 16:38:30 -07004629 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004630 callback
4631
Jeff Johnson295189b2012-06-20 16:38:30 -07004632 @see WDI_Start
4633 @return Result of the function call
4634*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004635WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004636WDI_GetStatsReq
4637(
4638 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4639 WDI_GetStatsRspCb wdiGetStatsRspCb,
4640 void* pUserData
4641)
4642{
4643 WDI_EventInfoType wdiEventData;
4644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4645
4646 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004647 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004648 ------------------------------------------------------------------------*/
4649 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4650 {
4651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4652 "WDI API call before module is initialized - Fail request");
4653
Jeff Johnsone7245742012-09-05 17:12:55 -07004654 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004655 }
4656
4657 /*------------------------------------------------------------------------
4658 Fill in Event data and post to the Main FSM
4659 ------------------------------------------------------------------------*/
4660 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004661 wdiEventData.pEventData = pwdiGetStatsReqParams;
4662 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4663 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 wdiEventData.pUserData = pUserData;
4665
4666 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4667
4668}/*WDI_GetStatsReq*/
4669
4670
4671/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 it wishes to change the configuration of the WLAN
4674 Device. Upon the call of this API the WLAN DAL will pack
4675 and send a HAL Update CFG request message to the lower
4676 RIVA sub-system if DAL is in state STARTED.
4677
4678 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004680
4681 WDI_Start must have been called.
4682
Jeff Johnsone7245742012-09-05 17:12:55 -07004683 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004684 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004685
Jeff Johnson295189b2012-06-20 16:38:30 -07004686 wdiUpdateCfgsRspCb: callback for passing back the
4687 response of the update cfg operation received from the
4688 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004689
Jeff Johnson295189b2012-06-20 16:38:30 -07004690 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004691 callback
4692
Jeff Johnson295189b2012-06-20 16:38:30 -07004693 @see WDI_Start
4694 @return Result of the function call
4695*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004696WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004697WDI_UpdateCfgReq
4698(
4699 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4700 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4701 void* pUserData
4702)
4703{
4704 WDI_EventInfoType wdiEventData;
4705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4706
4707 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004708 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004709 ------------------------------------------------------------------------*/
4710 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4711 {
4712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4713 "WDI API call before module is initialized - Fail request");
4714
Jeff Johnsone7245742012-09-05 17:12:55 -07004715 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004716 }
4717
4718 /*------------------------------------------------------------------------
4719 Fill in Event data and post to the Main FSM
4720 ------------------------------------------------------------------------*/
4721 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004722 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4723 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4724 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 wdiEventData.pUserData = pUserData;
4726
4727 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4728
4729}/*WDI_UpdateCfgReq*/
4730
4731
4732
4733/**
4734 @brief WDI_AddBAReq will be called when the upper MAC has setup
4735 successfully a BA session and needs to notify the HW for
4736 the appropriate settings to take place. Upon the call of
4737 this API the WLAN DAL will pack and send a HAL Add BA
4738 request message to the lower RIVA sub-system if DAL is
4739 in state STARTED.
4740
4741 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004742 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004743
4744 WDI_PostAssocReq must have been called.
4745
4746 @param wdiAddBAReqParams: the add BA parameters as specified by
4747 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004748
Jeff Johnson295189b2012-06-20 16:38:30 -07004749 wdiAddBARspCb: callback for passing back the response of
4750 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004751
Jeff Johnson295189b2012-06-20 16:38:30 -07004752 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004753 callback
4754
Jeff Johnson295189b2012-06-20 16:38:30 -07004755 @see WDI_PostAssocReq
4756 @return Result of the function call
4757*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004758WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004759WDI_AddBAReq
4760(
4761 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4762 WDI_AddBARspCb wdiAddBARspCb,
4763 void* pUserData
4764)
4765{
4766 WDI_EventInfoType wdiEventData;
4767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4768
4769 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004770 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004771 ------------------------------------------------------------------------*/
4772 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4773 {
4774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4775 "WDI API call before module is initialized - Fail request");
4776
Jeff Johnsone7245742012-09-05 17:12:55 -07004777 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 }
4779
4780 /*------------------------------------------------------------------------
4781 Fill in Event data and post to the Main FSM
4782 ------------------------------------------------------------------------*/
4783 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004784 wdiEventData.pEventData = pwdiAddBAReqParams;
4785 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4786 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004787 wdiEventData.pUserData = pUserData;
4788
4789 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4790
4791}/*WDI_AddBAReq*/
4792
4793
4794/**
4795 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4796 successfully a BA session and needs to notify the HW for
4797 the appropriate settings to take place. Upon the call of
4798 this API the WLAN DAL will pack and send a HAL Add BA
4799 request message to the lower RIVA sub-system if DAL is
4800 in state STARTED.
4801
4802 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004803 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004804
4805 WDI_PostAssocReq must have been called.
4806
4807 @param wdiAddBAReqParams: the add BA parameters as specified by
4808 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004809
Jeff Johnson295189b2012-06-20 16:38:30 -07004810 wdiAddBARspCb: callback for passing back the response of
4811 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004812
Jeff Johnson295189b2012-06-20 16:38:30 -07004813 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004814 callback
4815
Jeff Johnson295189b2012-06-20 16:38:30 -07004816 @see WDI_PostAssocReq
4817 @return Result of the function call
4818*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004819WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004820WDI_TriggerBAReq
4821(
4822 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4823 WDI_TriggerBARspCb wdiTriggerBARspCb,
4824 void* pUserData
4825)
4826{
4827 WDI_EventInfoType wdiEventData;
4828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4829
4830 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004832 ------------------------------------------------------------------------*/
4833 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4834 {
4835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4836 "WDI API call before module is initialized - Fail request");
4837
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004839 }
4840
4841 /*------------------------------------------------------------------------
4842 Fill in Event data and post to the Main FSM
4843 ------------------------------------------------------------------------*/
4844 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004845 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4846 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4847 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004848 wdiEventData.pUserData = pUserData;
4849
4850 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4851
4852}/*WDI_AddBAReq*/
4853
4854/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 wishes to update any of the Beacon parameters used by HW.
4857 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4858 message to the lower RIVA sub-system if DAL is in state
4859 STARTED.
4860
4861 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004862 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004863
4864 WDI_PostAssocReq must have been called.
4865
Jeff Johnsone7245742012-09-05 17:12:55 -07004866 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004867 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004868
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 wdiUpdateBeaconParamsRspCb: callback for passing back the
4870 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004871
Jeff Johnson295189b2012-06-20 16:38:30 -07004872 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004873 callback
4874
Jeff Johnson295189b2012-06-20 16:38:30 -07004875 @see WDI_PostAssocReq
4876 @return Result of the function call
4877*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004878WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004879WDI_UpdateBeaconParamsReq
4880(
4881 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4882 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4883 void* pUserData
4884)
4885{
4886 WDI_EventInfoType wdiEventData;
4887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4888
4889 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004890 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004891 ------------------------------------------------------------------------*/
4892 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4893 {
4894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4895 "WDI API call before module is initialized - Fail request");
4896
Jeff Johnsone7245742012-09-05 17:12:55 -07004897 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 }
4899
4900 /*------------------------------------------------------------------------
4901 Fill in Event data and post to the Main FSM
4902 ------------------------------------------------------------------------*/
4903 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004904 wdiEventData.pEventData = pwdiUpdateBeaconParams;
4905 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
4906 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004907 wdiEventData.pUserData = pUserData;
4908
4909 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4910
4911}/*WDI_UpdateBeaconParamsReq*/
4912
4913/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004914 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004915 wishes to update the Beacon template used by HW.
4916 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
4917 message to the lower RIVA sub-system if DAL is in state
4918 STARTED.
4919
4920 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004921 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004922
4923 WDI_PostAssocReq must have been called.
4924
Jeff Johnsone7245742012-09-05 17:12:55 -07004925 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004926 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004927
Jeff Johnson295189b2012-06-20 16:38:30 -07004928 wdiSendBeaconParamsRspCb: callback for passing back the
4929 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004930
Jeff Johnson295189b2012-06-20 16:38:30 -07004931 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004932 callback
4933
Jeff Johnson295189b2012-06-20 16:38:30 -07004934 @see WDI_PostAssocReq
4935 @return Result of the function call
4936*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004937WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004938WDI_SendBeaconParamsReq
4939(
4940 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
4941 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
4942 void* pUserData
4943)
4944{
4945 WDI_EventInfoType wdiEventData;
4946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4947
4948 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004949 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004950 ------------------------------------------------------------------------*/
4951 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4952 {
4953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4954 "WDI API call before module is initialized - Fail request");
4955
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004957 }
4958
4959 /*------------------------------------------------------------------------
4960 Fill in Event data and post to the Main FSM
4961 ------------------------------------------------------------------------*/
4962 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004963 wdiEventData.pEventData = pwdiSendBeaconParams;
4964 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
4965 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004966 wdiEventData.pUserData = pUserData;
4967
4968 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4969
4970}/*WDI_SendBeaconParamsReq*/
4971
4972/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004973 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07004974 upper MAC wants to update the probe response template to
4975 be transmitted as Soft AP
4976 Upon the call of this API the WLAN DAL will
4977 pack and send the probe rsp template message to the
4978 lower RIVA sub-system if DAL is in state STARTED.
4979
4980 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004981 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004982
4983
Jeff Johnsone7245742012-09-05 17:12:55 -07004984 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004985 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004986
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 wdiSendBeaconParamsRspCb: callback for passing back the
4988 response of the Send Beacon Params operation received
4989 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004990
Jeff Johnson295189b2012-06-20 16:38:30 -07004991 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004992 callback
4993
Jeff Johnson295189b2012-06-20 16:38:30 -07004994 @see WDI_AddBAReq
4995 @return Result of the function call
4996*/
4997
Jeff Johnsone7245742012-09-05 17:12:55 -07004998WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004999WDI_UpdateProbeRspTemplateReq
5000(
5001 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5002 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5003 void* pUserData
5004)
5005{
5006 WDI_EventInfoType wdiEventData;
5007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5008
5009 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005010 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005011 ------------------------------------------------------------------------*/
5012 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5013 {
5014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5015 "WDI API call before module is initialized - Fail request");
5016
Jeff Johnsone7245742012-09-05 17:12:55 -07005017 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005018 }
5019
5020 /*------------------------------------------------------------------------
5021 Fill in Event data and post to the Main FSM
5022 ------------------------------------------------------------------------*/
5023 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005024 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5025 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5026 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005027 wdiEventData.pUserData = pUserData;
5028
5029 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5030
5031}/*WDI_UpdateProbeRspTemplateReq*/
5032
5033/**
5034 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5035 to the NV memory.
5036
5037
5038 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5039 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005040
Jeff Johnson295189b2012-06-20 16:38:30 -07005041 wdiNvDownloadRspCb: callback for passing back the response of
5042 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005043
Jeff Johnson295189b2012-06-20 16:38:30 -07005044 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005045 callback
5046
Jeff Johnson295189b2012-06-20 16:38:30 -07005047 @see WDI_PostAssocReq
5048 @return Result of the function call
5049*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005050WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005051WDI_NvDownloadReq
5052(
5053 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5054 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5055 void* pUserData
5056)
5057{
5058 WDI_EventInfoType wdiEventData;
5059
5060 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005061 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005062 ------------------------------------------------------------------------*/
5063 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5064 {
5065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5066 "WDI API call before module is initialized - Fail request");
5067
Jeff Johnsone7245742012-09-05 17:12:55 -07005068 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005069 }
5070
5071 /*------------------------------------------------------------------------
5072 Fill in Event data and post to the Main FSM
5073 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5075 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5076 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5077 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005078 wdiEventData.pUserData = pUserData;
5079
5080 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5081
5082}/*WDI_NVDownloadReq*/
5083
5084#ifdef WLAN_FEATURE_P2P
5085/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005086 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 upper MAC wants to send Notice of Absence
5088 Upon the call of this API the WLAN DAL will
5089 pack and send the probe rsp template message to the
5090 lower RIVA sub-system if DAL is in state STARTED.
5091
5092 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005093 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005094
5095
Jeff Johnsone7245742012-09-05 17:12:55 -07005096 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005097 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005098
Jeff Johnson295189b2012-06-20 16:38:30 -07005099 wdiSendBeaconParamsRspCb: callback for passing back the
5100 response of the Send Beacon Params operation received
5101 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005102
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005104 callback
5105
Jeff Johnson295189b2012-06-20 16:38:30 -07005106 @see WDI_AddBAReq
5107 @return Result of the function call
5108*/
5109WDI_Status
5110WDI_SetP2PGONOAReq
5111(
5112 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5113 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5114 void* pUserData
5115)
5116{
5117 WDI_EventInfoType wdiEventData;
5118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5119
5120 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005121 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 ------------------------------------------------------------------------*/
5123 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5124 {
5125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5126 "WDI API call before module is initialized - Fail request");
5127
Jeff Johnsone7245742012-09-05 17:12:55 -07005128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005129 }
5130
5131 /*------------------------------------------------------------------------
5132 Fill in Event data and post to the Main FSM
5133 ------------------------------------------------------------------------*/
5134 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005135 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5136 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5137 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005138 wdiEventData.pUserData = pUserData;
5139
5140 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5141
5142}/*WDI_SetP2PGONOAReq*/
5143#endif
5144
5145/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005146 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005147 UMAC wanted to add STA self while opening any new session
5148 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005149 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005150
5151
Jeff Johnsone7245742012-09-05 17:12:55 -07005152 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005153 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005154
Jeff Johnson295189b2012-06-20 16:38:30 -07005155 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005156 callback
5157
5158 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005159 @return Result of the function call
5160*/
5161WDI_Status
5162WDI_AddSTASelfReq
5163(
5164 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5165 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5166 void* pUserData
5167)
5168{
5169 WDI_EventInfoType wdiEventData;
5170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5171
5172 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005173 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005174 ------------------------------------------------------------------------*/
5175 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5176 {
5177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5178 "WDI API call before module is initialized - Fail request");
5179
Jeff Johnsone7245742012-09-05 17:12:55 -07005180 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005181 }
5182
5183 /*------------------------------------------------------------------------
5184 Fill in Event data and post to the Main FSM
5185 ------------------------------------------------------------------------*/
5186 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005187 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5188 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5189 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005190 wdiEventData.pUserData = pUserData;
5191
5192 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5193
5194}/*WDI_AddSTASelfReq*/
5195
5196
Jeff Johnsone7245742012-09-05 17:12:55 -07005197#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005198/**
5199 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5200 the device of a successful add TSpec negotiation. HW
5201 needs to receive the TSpec Info from the UMAC in order
5202 to configure properly the QoS data traffic. Upon the
5203 call of this API the WLAN DAL will pack and send a HAL
5204 Add TS request message to the lower RIVA sub-system if
5205 DAL is in state STARTED.
5206
5207 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005208 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005209
5210 WDI_PostAssocReq must have been called.
5211
5212 @param wdiAddTsReqParams: the add TS parameters as specified by
5213 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005214
Jeff Johnson295189b2012-06-20 16:38:30 -07005215 wdiAddTsRspCb: callback for passing back the response of
5216 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005217
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005219 callback
5220
Jeff Johnson295189b2012-06-20 16:38:30 -07005221 @see WDI_PostAssocReq
5222 @return Result of the function call
5223*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005224WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005225WDI_AggrAddTSReq
5226(
5227 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5228 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5229 void* pUserData
5230)
5231{
5232 WDI_EventInfoType wdiEventData;
5233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5234
5235 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005236 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005237 ------------------------------------------------------------------------*/
5238 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5239 {
5240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5241 "WDI API call before module is initialized - Fail request");
5242
Jeff Johnsone7245742012-09-05 17:12:55 -07005243 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005244 }
5245
5246 /*------------------------------------------------------------------------
5247 Fill in Event data and post to the Main FSM
5248 ------------------------------------------------------------------------*/
5249 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005250 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5251 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5252 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005253 wdiEventData.pUserData = pUserData;
5254
5255 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5256
5257}/*WDI_AggrAddTSReq*/
5258
5259#endif /* WLAN_FEATURE_VOWIFI_11R */
5260
5261#ifdef ANI_MANF_DIAG
5262/**
5263 @brief WDI_FTMCommandReq
5264 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005265
5266 @param ftmCommandReq: FTM Command Body
5267 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005269
Jeff Johnson295189b2012-06-20 16:38:30 -07005270 @see
5271 @return Result of the function call
5272*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005273WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005274WDI_FTMCommandReq
5275(
5276 WDI_FTMCommandReqType *ftmCommandReq,
5277 WDI_FTMCommandRspCb ftmCommandRspCb,
5278 void *pUserData
5279)
5280{
5281 WDI_EventInfoType wdiEventData;
5282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5283
5284 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005285 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005286 ------------------------------------------------------------------------*/
5287 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5288 {
5289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5290 "WDI API call before module is initialized - Fail request");
5291
Jeff Johnsone7245742012-09-05 17:12:55 -07005292 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005293 }
5294
5295 /*------------------------------------------------------------------------
5296 Fill in Event data and post to the Main FSM
5297 ------------------------------------------------------------------------*/
5298 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5299 wdiEventData.pEventData = (void *)ftmCommandReq;
5300 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5301 wdiEventData.pCBfnc = ftmCommandRspCb;
5302 wdiEventData.pUserData = pUserData;
5303
5304 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5305}
Jeff Johnsone7245742012-09-05 17:12:55 -07005306#endif /* ANI_MANF_DIAG */
Jeff Johnson295189b2012-06-20 16:38:30 -07005307/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005308 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005309
5310 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005311 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005312
5313
5314 @param pwdiResumeReqParams: as specified by
5315 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005316
Jeff Johnson295189b2012-06-20 16:38:30 -07005317 wdiResumeReqRspCb: callback for passing back the response of
5318 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005319
Jeff Johnson295189b2012-06-20 16:38:30 -07005320 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005321 callback
5322
5323 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 @return Result of the function call
5325*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005326WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005327WDI_HostResumeReq
5328(
5329 WDI_ResumeParamsType* pwdiResumeReqParams,
5330 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5331 void* pUserData
5332)
5333{
5334 WDI_EventInfoType wdiEventData;
5335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5336
5337 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005338 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005339 ------------------------------------------------------------------------*/
5340 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5341 {
5342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5343 "WDI API call before module is initialized - Fail request");
5344
Jeff Johnsone7245742012-09-05 17:12:55 -07005345 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005346 }
5347
5348 /*------------------------------------------------------------------------
5349 Fill in Event data and post to the Main FSM
5350 ------------------------------------------------------------------------*/
5351 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005352 wdiEventData.pEventData = pwdiResumeReqParams;
5353 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5354 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005355 wdiEventData.pUserData = pUserData;
5356
5357 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5358
5359}/*WDI_HostResumeReq*/
5360
5361/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005362 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005363
5364 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005365 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005366
5367
5368 @param pwdiDelStaSelfReqParams: as specified by
5369 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005370
Jeff Johnson295189b2012-06-20 16:38:30 -07005371 wdiDelStaSelfRspCb: callback for passing back the response of
5372 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005373
Jeff Johnson295189b2012-06-20 16:38:30 -07005374 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005375 callback
5376
Jeff Johnson295189b2012-06-20 16:38:30 -07005377 @see WDI_PostAssocReq
5378 @return Result of the function call
5379*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005380WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005381WDI_DelSTASelfReq
5382(
5383 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5384 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5385 void* pUserData
5386)
5387{
5388 WDI_EventInfoType wdiEventData;
5389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5390
5391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 ------------------------------------------------------------------------*/
5394 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5395 {
5396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5397 "WDI API call before module is initialized - Fail request");
5398
Jeff Johnsone7245742012-09-05 17:12:55 -07005399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005400 }
5401
5402 /*------------------------------------------------------------------------
5403 Fill in Event data and post to the Main FSM
5404 ------------------------------------------------------------------------*/
5405 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005406 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5407 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5408 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005409 wdiEventData.pUserData = pUserData;
5410
5411 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5412
5413}/*WDI_AggrAddTSReq*/
5414
5415/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005416 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5417 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005418 Upon the call of this API the WLAN DAL will pack
5419 and send a HAL Set Tx Per Tracking request message to the
5420 lower RIVA sub-system if DAL is in state STARTED.
5421
5422 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005423 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005424
Jeff Johnsone7245742012-09-05 17:12:55 -07005425 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005426 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005427
Jeff Johnson295189b2012-06-20 16:38:30 -07005428 pwdiSetTxPerTrackingRspCb: callback for passing back the
5429 response of the set Tx PER Tracking configurations operation received
5430 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005431
Jeff Johnson295189b2012-06-20 16:38:30 -07005432 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005433 callback
5434
Jeff Johnson295189b2012-06-20 16:38:30 -07005435 @return Result of the function call
5436*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005437WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005438WDI_SetTxPerTrackingReq
5439(
5440 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5441 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5442 void* pUserData
5443)
5444{
5445 WDI_EventInfoType wdiEventData;
5446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5447
5448 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005449 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005450 ------------------------------------------------------------------------*/
5451 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5452 {
5453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5454 "WDI API call before module is initialized - Fail request");
5455
Jeff Johnsone7245742012-09-05 17:12:55 -07005456 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005457 }
5458
5459 /*------------------------------------------------------------------------
5460 Fill in Event data and post to the Main FSM
5461 ------------------------------------------------------------------------*/
5462 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005463 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005464 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005465 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005466 wdiEventData.pUserData = pUserData;
5467
5468 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5469
5470}/*WDI_SetTxPerTrackingReq*/
5471
5472/**
5473 @brief WDI_SetTmLevelReq
5474 If HW Thermal condition changed, driver should react based on new
5475 HW thermal condition.
5476
5477 @param pwdiSetTmLevelReq: New thermal condition information
5478
5479 pwdiSetTmLevelRspCb: callback
5480
5481 usrData: user data will be passed back with the
5482 callback
5483
5484 @return Result of the function call
5485*/
5486WDI_Status
5487WDI_SetTmLevelReq
5488(
5489 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5490 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5491 void *usrData
5492)
5493{
5494 WDI_EventInfoType wdiEventData;
5495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5496
5497 /*------------------------------------------------------------------------
5498 Sanity Check
5499 ------------------------------------------------------------------------*/
5500 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5501 {
5502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5503 "WDI API call before module is initialized - Fail request");
5504
5505 return WDI_STATUS_E_NOT_ALLOWED;
5506 }
5507
5508 /*------------------------------------------------------------------------
5509 Fill in Event data and post to the Main FSM
5510 ------------------------------------------------------------------------*/
5511 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5512 wdiEventData.pEventData = pwdiSetTmLevelReq;
5513 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5514 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5515 wdiEventData.pUserData = usrData;
5516
5517 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5518}
5519
5520/**
5521 @brief WDI_HostSuspendInd
5522
5523 Suspend Indication from the upper layer will be sent
5524 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005525
Jeff Johnson295189b2012-06-20 16:38:30 -07005526 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005527
5528 @see
5529
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 @return Status of the request
5531*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005532WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005533WDI_HostSuspendInd
5534(
5535 WDI_SuspendParamsType* pwdiSuspendIndParams
5536)
5537{
5538
5539 WDI_EventInfoType wdiEventData;
5540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5541
5542 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005543 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005544 ------------------------------------------------------------------------*/
5545 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5546 {
5547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5548 "WDI API call before module is initialized - Fail request");
5549
Jeff Johnsone7245742012-09-05 17:12:55 -07005550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005551 }
5552
5553 /*------------------------------------------------------------------------
5554 Fill in Event data and post to the Main FSM
5555 ------------------------------------------------------------------------*/
5556 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005557 wdiEventData.pEventData = pwdiSuspendIndParams;
5558 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5559 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005560 wdiEventData.pUserData = NULL;
5561
5562 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5563
5564}/*WDI_HostSuspendInd*/
5565
5566/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005567 @brief WDI_TrafficStatsInd
5568 Traffic Stats from the upper layer will be sent
5569 down to HAL
5570
5571 @param WDI_TrafficStatsIndType
5572
5573 @see
5574
5575 @return Status of the request
5576*/
5577WDI_Status
5578WDI_TrafficStatsInd
5579(
5580 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5581)
5582{
5583
5584 WDI_EventInfoType wdiEventData;
5585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5586
5587 /*------------------------------------------------------------------------
5588 Sanity Check
5589 ------------------------------------------------------------------------*/
5590 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5591 {
5592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5593 "WDI API call before module is initialized - Fail request");
5594
5595 return WDI_STATUS_E_NOT_ALLOWED;
5596 }
5597
5598 /*------------------------------------------------------------------------
5599 Fill in Event data and post to the Main FSM
5600 ------------------------------------------------------------------------*/
5601 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5602 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5603 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5604 wdiEventData.pCBfnc = NULL;
5605 wdiEventData.pUserData = NULL;
5606
5607 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5608
5609}/*WDI_TrafficStatsInd*/
5610
5611/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005612 @brief WDI_HALDumpCmdReq
5613 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005614
5615 @param halDumpCmdReqParams: Hal Dump Command Body
5616 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005617 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005618
Jeff Johnson295189b2012-06-20 16:38:30 -07005619 @see
5620 @return Result of the function call
5621*/
5622WDI_Status WDI_HALDumpCmdReq
5623(
5624 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5625 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5626 void *pUserData
5627)
5628{
5629 WDI_EventInfoType wdiEventData;
5630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5631
5632 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005633 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 ------------------------------------------------------------------------*/
5635 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5636 {
5637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5638 "WDI API call before module is initialized - Fail request");
5639
Jeff Johnsone7245742012-09-05 17:12:55 -07005640 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005641 }
5642
5643 /*------------------------------------------------------------------------
5644 Fill in Event data and post to the Main FSM
5645 ------------------------------------------------------------------------*/
5646 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5647 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5648 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5649 wdiEventData.pCBfnc = halDumpCmdRspCb;
5650 wdiEventData.pUserData = pUserData;
5651
5652 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5653}
5654
Jeff Johnsone7245742012-09-05 17:12:55 -07005655/*============================================================================
5656
Jeff Johnson295189b2012-06-20 16:38:30 -07005657 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005658
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 ============================================================================*/
5660
5661/**
5662 @brief Main FSM Start function for all states except BUSY
5663
Jeff Johnsone7245742012-09-05 17:12:55 -07005664
5665 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005666 wdiEV: event posted to the main DAL FSM
5667 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005668 structure
5669
Jeff Johnson295189b2012-06-20 16:38:30 -07005670 @see
5671 @return Result of the function call
5672*/
5673WDI_Status
5674WDI_PostMainEvent
5675(
Jeff Johnsone7245742012-09-05 17:12:55 -07005676 WDI_ControlBlockType* pWDICtx,
5677 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005679
Jeff Johnson295189b2012-06-20 16:38:30 -07005680)
5681{
Jeff Johnsone7245742012-09-05 17:12:55 -07005682 WDI_Status wdiStatus;
5683 WDI_MainFuncType pfnWDIMainEvHdlr;
5684 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5686
5687 /*-------------------------------------------------------------------------
5688 Sanity check
5689 -------------------------------------------------------------------------*/
5690 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5691 ( wdiEV >= WDI_MAX_EVENT ))
5692 {
5693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5694 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5695 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005697 }
5698
5699 /*Access to the global state must be locked */
5700 wpalMutexAcquire(&pWDICtx->wptMutex);
5701
5702 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005703 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005704
5705 wdiOldState = pWDICtx->uGlobalState;
5706
5707 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005708 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5709 response comes from CCPU for the request sent by host:
5710 the WDI global state will be in WDI_BUSY_ST already, so do not set it to BUSY again.
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 This state will be set to WDI_STARTED_ST in WDI_MainRsp, if it is a expected response.
Jeff Johnsone7245742012-09-05 17:12:55 -07005712 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005713 CCPU:
5714 don't change the state */
5715 if ( WDI_RESPONSE_EVENT != wdiEV)
5716 {
5717 /*Transition to BUSY State - the request is now being processed by the FSM,
5718 if the request fails we shall transition back to the old state, if not
5719 the request will manage its own state transition*/
5720 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5721 }
5722 /* If the state function associated with the EV is NULL it means that this
5723 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005724 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005725 {
5726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005727 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005728 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005729 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005730 }
5731 else
5732 {
5733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005734 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005735 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005736 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005737 }
5738
5739 /* If a request handles itself well it will end up in a success or in a
5740 pending
5741 Success - means that the request was processed and the proper state
5742 transition already occurred or will occur when the resp is received
5743 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005744
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 Pending - means the request could not be processed at this moment in time
5746 because the FSM was already busy so no state transition or dequeueing
5747 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005748
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 Success for synchronous case means that the transition may occur and
5750 processing of pending requests may continue - so it should go through
5751 and restores the state and continue processing queued requests*/
5752 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5753 ( WDI_STATUS_PENDING != wdiStatus ))
5754 {
5755 if ( WDI_RESPONSE_EVENT != wdiEV)
5756 {
5757 /*The request has failed or could not be processed - transition back to
5758 the old state - check to see if anything was queued and try to execute
5759 The dequeue logic should post a message to a thread and return - no
5760 actual processing can occur */
5761 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5762 }
5763 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005764
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 }
5766
5767 /* we have completed processing the event */
5768 wpalMutexRelease(&pWDICtx->wptMutex);
5769
Jeff Johnsone7245742012-09-05 17:12:55 -07005770 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005771
5772}/*WDI_PostMainEvent*/
5773
5774
5775/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005776 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005777--------------------------------------------------------------------------*/
5778/**
5779 @brief Main FSM Start function for all states except BUSY
5780
Jeff Johnsone7245742012-09-05 17:12:55 -07005781
5782 @param pWDICtx: pointer to the WLAN DAL context
5783 pEventData: pointer to the event information structure
5784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 @see
5786 @return Result of the function call
5787*/
5788WDI_Status
5789WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005790(
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 WDI_ControlBlockType* pWDICtx,
5792 WDI_EventInfoType* pEventData
5793)
5794{
5795
5796 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005797 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005798 ----------------------------------------------------------------------*/
5799 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5800 {
5801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005802 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005803 pWDICtx, pEventData);
5804 return WDI_STATUS_E_FAILURE;
5805 }
5806
5807 wpalMutexAcquire(&pWDICtx->wptMutex);
5808
5809 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 ----------------------------------------------------------------------*/
5812 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5813 {
5814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5815 "Control Transport not yet Open - queueing the request");
5816
5817 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005818 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005819
5820 wpalMutexRelease(&pWDICtx->wptMutex);
5821 return WDI_STATUS_PENDING;
5822 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005823
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 wpalMutexRelease(&pWDICtx->wptMutex);
5825
5826 /*Return Success*/
5827 return WDI_ProcessRequest( pWDICtx, pEventData );
5828
5829}/*WDI_MainStart*/
5830
5831/**
5832 @brief Main FSM Response function for state INIT
5833
Jeff Johnsone7245742012-09-05 17:12:55 -07005834
5835 @param pWDICtx: pointer to the WLAN DAL context
5836 pEventData: pointer to the event information structure
5837
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 @see
5839 @return Result of the function call
5840*/
5841WDI_Status
5842WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005843(
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 WDI_ControlBlockType* pWDICtx,
5845 WDI_EventInfoType* pEventData
5846)
5847{
5848 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005851 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005852
5853 /*Return Success*/
5854 return WDI_STATUS_E_NOT_ALLOWED;
5855}/* WDI_MainRspInit */
5856
5857/**
5858 @brief Main FSM Close function for all states except BUSY
5859
Jeff Johnsone7245742012-09-05 17:12:55 -07005860
5861 @param pWDICtx: pointer to the WLAN DAL context
5862 pEventData: pointer to the event information structure
5863
Jeff Johnson295189b2012-06-20 16:38:30 -07005864 @see
5865 @return Result of the function call
5866*/
5867WDI_Status
5868WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005869(
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 WDI_ControlBlockType* pWDICtx,
5871 WDI_EventInfoType* pEventData
5872)
5873{
5874
5875 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005876 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005877 ----------------------------------------------------------------------*/
5878 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5879 {
5880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005881 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005882 pWDICtx, pEventData);
5883 return WDI_STATUS_E_FAILURE;
5884 }
5885
5886 /*Return Success*/
5887 return WDI_ProcessRequest( pWDICtx, pEventData );
5888
5889}/*WDI_MainClose*/
5890/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005891 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005892--------------------------------------------------------------------------*/
5893/**
5894 @brief Main FSM Start function for state STARTED
5895
Jeff Johnsone7245742012-09-05 17:12:55 -07005896
5897 @param pWDICtx: pointer to the WLAN DAL context
5898 pEventData: pointer to the event information structure
5899
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 @see
5901 @return Result of the function call
5902*/
5903WDI_Status
5904WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005905(
Jeff Johnson295189b2012-06-20 16:38:30 -07005906 WDI_ControlBlockType* pWDICtx,
5907 WDI_EventInfoType* pEventData
5908)
5909{
5910 WDI_StartRspCb wdiStartRspCb = NULL;
5911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5912
5913 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005915 ----------------------------------------------------------------------*/
5916 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5917 {
5918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005919 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005920 pWDICtx, pEventData);
5921 return WDI_STATUS_E_FAILURE;
5922 }
5923
5924 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005925 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07005926 ----------------------------------------------------------------------*/
5927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005928 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07005929
5930 wpalMutexAcquire(&pWDICtx->wptMutex);
5931
5932 /*Transition back to started because the post function transitioned us to
5933 busy*/
5934 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
5935
5936 /*Check to see if any request is pending*/
5937 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005938
Jeff Johnson295189b2012-06-20 16:38:30 -07005939 wpalMutexRelease(&pWDICtx->wptMutex);
5940
5941 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005942 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
5943
Jeff Johnson295189b2012-06-20 16:38:30 -07005944 /*Notify UMAC*/
5945 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
5946
5947 /*Return Success*/
5948 return WDI_STATUS_SUCCESS;
5949
5950}/*WDI_MainStartStarted*/
5951
5952/**
5953 @brief Main FSM Stop function for state STARTED
5954
Jeff Johnsone7245742012-09-05 17:12:55 -07005955
5956 @param pWDICtx: pointer to the WLAN DAL context
5957 pEventData: pointer to the event information structure
5958
Jeff Johnson295189b2012-06-20 16:38:30 -07005959 @see
5960 @return Result of the function call
5961*/
5962WDI_Status
5963WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005964(
Jeff Johnson295189b2012-06-20 16:38:30 -07005965 WDI_ControlBlockType* pWDICtx,
5966 WDI_EventInfoType* pEventData
5967)
5968{
5969 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005970 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005971 ----------------------------------------------------------------------*/
5972 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5973 {
5974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005975 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 pWDICtx, pEventData);
5977 return WDI_STATUS_E_FAILURE;
5978 }
5979
5980 /*State at this point is BUSY - because we enter this state before posting
5981 an event to the FSM in order to prevent potential race conditions*/
5982
5983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5984 "Processing stop request in FSM");
5985
5986 /*Return Success*/
5987 return WDI_ProcessRequest( pWDICtx, pEventData );
5988
5989}/*WDI_MainStopStarted*/
5990/**
5991 @brief Main FSM Request function for state started
5992
Jeff Johnsone7245742012-09-05 17:12:55 -07005993
5994 @param pWDICtx: pointer to the WLAN DAL context
5995 pEventData: pointer to the event information structure
5996
Jeff Johnson295189b2012-06-20 16:38:30 -07005997 @see
5998 @return Result of the function call
5999*/
6000WDI_Status
6001WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006002(
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 WDI_ControlBlockType* pWDICtx,
6004 WDI_EventInfoType* pEventData
6005)
6006{
6007
6008 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 ----------------------------------------------------------------------*/
6011 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6012 {
6013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006014 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006015 pWDICtx, pEventData);
6016 return WDI_STATUS_E_FAILURE;
6017 }
6018
6019 /*State at this point is BUSY - because we enter this state before posting
6020 an event to the FSM in order to prevent potential race conditions*/
6021
6022 /*Return Success*/
6023 return WDI_ProcessRequest( pWDICtx, pEventData );
6024
6025}/*WDI_MainReqStarted*/
6026
6027/**
6028 @brief Main FSM Response function for all states except INIT
6029
Jeff Johnsone7245742012-09-05 17:12:55 -07006030
6031 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006032 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006033
Jeff Johnson295189b2012-06-20 16:38:30 -07006034 @see
6035 @return Result of the function call
6036*/
6037WDI_Status
6038WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006039(
Jeff Johnson295189b2012-06-20 16:38:30 -07006040 WDI_ControlBlockType* pWDICtx,
6041 WDI_EventInfoType* pEventData
6042)
6043{
Jeff Johnsone7245742012-09-05 17:12:55 -07006044 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006045 wpt_boolean expectedResponse;
6046
6047 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006048 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006049 ----------------------------------------------------------------------*/
6050 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6051 {
6052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006053 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 pWDICtx, pEventData);
6055 return WDI_STATUS_E_FAILURE;
6056 }
6057
6058 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6059 {
6060 /* we received an expected response */
6061 expectedResponse = eWLAN_PAL_TRUE;
6062
6063 /*We expect that we will transition to started after this processing*/
6064 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6065
6066 /* we are no longer expecting a response */
6067 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6068 }
6069 else
6070 {
6071 /* we received an indication or unexpected response */
6072 expectedResponse = eWLAN_PAL_FALSE;
6073 /* for indications no need to update state from what it is right
6074 now, unless it explicitly does it in the indication handler (say
6075 for device failure ind) */
6076 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6077 }
6078
6079 /*Process the response and indication */
6080 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6081
6082 /*Lock the CB as we are about to do a state transition*/
6083 wpalMutexAcquire(&pWDICtx->wptMutex);
6084
6085 /*Transition to the expected state after the response processing
6086 - this should always be started state with the following exceptions:
6087 1. processing of a failed start response
6088 2. device failure detected while processing response
6089 3. stop response received*/
6090 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006091
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 /*Dequeue request that may have been queued while we were waiting for the
6093 response */
6094 if ( expectedResponse )
6095 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006096 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 }
6098
6099 wpalMutexRelease(&pWDICtx->wptMutex);
6100
6101 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006102 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006103
6104}/*WDI_MainRsp*/
6105
6106/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006107 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006108--------------------------------------------------------------------------*/
6109/**
6110 @brief Main FSM Stop function for state STOPPED
6111
Jeff Johnsone7245742012-09-05 17:12:55 -07006112
6113 @param pWDICtx: pointer to the WLAN DAL context
6114 pEventData: pointer to the event information structure
6115
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 @see
6117 @return Result of the function call
6118*/
6119WDI_Status
6120WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006121(
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 WDI_ControlBlockType* pWDICtx,
6123 WDI_EventInfoType* pEventData
6124)
6125{
6126 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006128 ----------------------------------------------------------------------*/
6129 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6130 {
6131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006132 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006133 pWDICtx, pEventData);
6134 return WDI_STATUS_E_FAILURE;
6135 }
6136
6137 /*We should normally not get a STOP request if we are already stopped
6138 since we should normally be stopped by the UMAC. However in some
6139 error situations we put ourselves in the stopped state without the
6140 UMAC knowing, so when we get a STOP request in this state we still
6141 process it since we need to clean up the underlying state */
6142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6143 "Processing stop request while stopped in FSM");
6144
6145 /*Return Success*/
6146 return WDI_ProcessRequest( pWDICtx, pEventData );
6147
6148}/*WDI_MainStopStopped*/
6149
6150/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006151 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006152--------------------------------------------------------------------------*/
6153/**
6154 @brief Main FSM Start function for state BUSY
6155
Jeff Johnsone7245742012-09-05 17:12:55 -07006156
6157 @param pWDICtx: pointer to the WLAN DAL context
6158 pEventData: pointer to the event information structure
6159
Jeff Johnson295189b2012-06-20 16:38:30 -07006160 @see
6161 @return Result of the function call
6162*/
6163WDI_Status
6164WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006165(
Jeff Johnson295189b2012-06-20 16:38:30 -07006166 WDI_ControlBlockType* pWDICtx,
6167 WDI_EventInfoType* pEventData
6168)
6169{
6170 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006171 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006172 ----------------------------------------------------------------------*/
6173 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6174 {
6175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006177 pWDICtx, pEventData);
6178 return WDI_STATUS_E_FAILURE;
6179 }
6180
6181 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006182 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 ----------------------------------------------------------------------*/
6184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6185 "WDI Busy state - queue start request");
6186
6187 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006188 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006189
6190 /*Return Success*/
6191 return WDI_STATUS_PENDING;
6192}/*WDI_MainStartBusy*/
6193
6194/**
6195 @brief Main FSM Stop function for state BUSY
6196
Jeff Johnsone7245742012-09-05 17:12:55 -07006197
6198 @param pWDICtx: pointer to the WLAN DAL context
6199 pEventData: pointer to the event information structure
6200
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 @see
6202 @return Result of the function call
6203*/
6204WDI_Status
6205WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006206(
Jeff Johnson295189b2012-06-20 16:38:30 -07006207 WDI_ControlBlockType* pWDICtx,
6208 WDI_EventInfoType* pEventData
6209)
6210{
6211 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006212 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006213 ----------------------------------------------------------------------*/
6214 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6215 {
6216 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006217 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 pWDICtx, pEventData);
6219 return WDI_STATUS_E_FAILURE;
6220 }
6221
6222 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006223 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006224 ----------------------------------------------------------------------*/
6225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6226 "WDI Busy state - queue stop request");
6227
Jeff Johnsone7245742012-09-05 17:12:55 -07006228 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006229 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006230
Jeff Johnson295189b2012-06-20 16:38:30 -07006231}/*WDI_MainStopBusy*/
6232
6233/**
6234 @brief Main FSM Request function for state BUSY
6235
Jeff Johnsone7245742012-09-05 17:12:55 -07006236
6237 @param pWDICtx: pointer to the WLAN DAL context
6238 pEventData: pointer to the event information structure
6239
Jeff Johnson295189b2012-06-20 16:38:30 -07006240 @see
6241 @return Result of the function call
6242*/
6243WDI_Status
6244WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006245(
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 WDI_ControlBlockType* pWDICtx,
6247 WDI_EventInfoType* pEventData
6248)
6249{
6250 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006251 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006252 ----------------------------------------------------------------------*/
6253 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6254 {
6255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006256 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006257 pWDICtx, pEventData);
6258 return WDI_STATUS_E_FAILURE;
6259 }
6260
6261 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006262 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 ----------------------------------------------------------------------*/
6264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6265 "WDI Busy state - queue request %d because waiting for response %d",
6266 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6267
Jeff Johnsone7245742012-09-05 17:12:55 -07006268 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006269 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006270
Jeff Johnson295189b2012-06-20 16:38:30 -07006271}/*WDI_MainReqBusy*/
6272/**
6273 @brief Main FSM Close function for state BUSY
6274
Jeff Johnsone7245742012-09-05 17:12:55 -07006275
6276 @param pWDICtx: pointer to the WLAN DAL context
6277 pEventData: pointer to the event information structure
6278
Jeff Johnson295189b2012-06-20 16:38:30 -07006279 @see
6280 @return Result of the function call
6281*/
6282WDI_Status
6283WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006284(
Jeff Johnson295189b2012-06-20 16:38:30 -07006285 WDI_ControlBlockType* pWDICtx,
6286 WDI_EventInfoType* pEventData
6287)
6288{
6289 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006290 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006291 ----------------------------------------------------------------------*/
6292 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6293 {
6294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006295 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006296 pWDICtx, pEventData);
6297 return WDI_STATUS_E_FAILURE;
6298 }
6299
6300 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006301 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006302 ----------------------------------------------------------------------*/
6303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6304 "WDI Busy state - queue close request");
6305
Jeff Johnsone7245742012-09-05 17:12:55 -07006306 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006308
Jeff Johnson295189b2012-06-20 16:38:30 -07006309}/*WDI_MainCloseBusy*/
6310
6311/**
6312 @brief Main FSM Shutdown function for INIT & STARTED states
6313
6314
6315 @param pWDICtx: pointer to the WLAN DAL context
6316 pEventData: pointer to the event information structure
6317
6318 @see
6319 @return Result of the function call
6320*/
6321WDI_Status
6322WDI_MainShutdown
6323(
6324 WDI_ControlBlockType* pWDICtx,
6325 WDI_EventInfoType* pEventData
6326)
6327{
6328 /*--------------------------------------------------------------------
6329 Sanity Check
6330 ----------------------------------------------------------------------*/
6331 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6332 {
6333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6334 "Invalid parameters on Main Start %x %x",
6335 pWDICtx, pEventData);
6336 return WDI_STATUS_E_FAILURE;
6337 }
6338
6339 /*State at this point is BUSY - because we enter this state before posting
6340 an event to the FSM in order to prevent potential race conditions*/
6341
6342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6343 "Processing shutdown request in FSM");
6344
6345 /*Return Success*/
6346 return WDI_ProcessRequest( pWDICtx, pEventData );
6347
6348}/*WDI_MainShutdown*/
6349
6350/**
6351 @brief Main FSM Shutdown function for BUSY state
6352
6353
6354 @param pWDICtx: pointer to the WLAN DAL context
6355 pEventData: pointer to the event information structure
6356
6357 @see
6358 @return Result of the function call
6359*/
6360WDI_Status
6361WDI_MainShutdownBusy
6362(
6363 WDI_ControlBlockType* pWDICtx,
6364 WDI_EventInfoType* pEventData
6365)
6366{
6367 /*--------------------------------------------------------------------
6368 Sanity Check
6369 ----------------------------------------------------------------------*/
6370 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6371 {
6372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6373 "Invalid parameters on Main Start %x %x",
6374 pWDICtx, pEventData);
6375 return WDI_STATUS_E_FAILURE;
6376 }
6377
6378 /* If you are waiting for a HAL response at this stage, you are not
6379 * going to get it. Riva is already shutdown/crashed.
6380 */
6381 wpalTimerStop(&gWDICb.wptResponseTimer);
6382
6383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6384 "Processing shutdown request in FSM: Busy state ");
6385
6386 return WDI_ProcessRequest( pWDICtx, pEventData );
6387
6388}/*WDI_MainShutdownBusy*/
6389
6390
Jeff Johnsone7245742012-09-05 17:12:55 -07006391/*=======================================================================
6392
Jeff Johnson295189b2012-06-20 16:38:30 -07006393 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006394
Jeff Johnson295189b2012-06-20 16:38:30 -07006395*=======================================================================*/
6396
6397/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006398 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006399========================================================================*/
6400/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006401 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006402 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
6404 @param pWDICtx: pointer to the WLAN DAL context
6405 pEventData: pointer to the event information structure
6406
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 @see
6408 @return Result of the function call
6409*/
6410WDI_Status
6411WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006412(
Jeff Johnson295189b2012-06-20 16:38:30 -07006413 WDI_ControlBlockType* pWDICtx,
6414 WDI_EventInfoType* pEventData
6415)
6416{
6417 WDI_StartReqParamsType* pwdiStartParams = NULL;
6418 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006419 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 wpt_uint16 usDataOffset = 0;
6421 wpt_uint16 usSendSize = 0;
6422
Jeff Johnsone7245742012-09-05 17:12:55 -07006423 tHalMacStartReqMsg halStartReq;
6424 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6426
6427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006429 -------------------------------------------------------------------------*/
6430 if (( NULL == pEventData ) ||
6431 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6432 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6433 {
6434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006438 }
6439
6440 /*-----------------------------------------------------------------------
6441 Get message buffer
6442 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006443 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006444 pwdiStartParams->usConfigBufferLen;
6445
Jeff Johnsone7245742012-09-05 17:12:55 -07006446 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006447 usLen,
6448 &pSendBuffer, &usDataOffset, &usSendSize))||
6449 ( usSendSize < (usDataOffset + usLen )))
6450 {
6451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6452 "Unable to get send buffer in start req %x %x %x",
6453 pEventData, pwdiStartParams, wdiStartRspCb);
6454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006456 }
6457
6458 /*-----------------------------------------------------------------------
6459 Fill in the message
6460 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006461 halStartReq.startReqParams.driverType =
6462 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006463
Jeff Johnsone7245742012-09-05 17:12:55 -07006464 halStartReq.startReqParams.uConfigBufferLen =
6465 pwdiStartParams->usConfigBufferLen;
6466 wpalMemoryCopy( pSendBuffer+usDataOffset,
6467 &halStartReq.startReqParams,
6468 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006469
Jeff Johnsone7245742012-09-05 17:12:55 -07006470 usDataOffset += sizeof(halStartReq.startReqParams);
6471 wpalMemoryCopy( pSendBuffer+usDataOffset,
6472 pwdiStartParams->pConfigBuffer,
6473 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006474
6475 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006476 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006477
6478 /*Save Low Level Ind CB and associated user data - it will be used further
6479 on when an indication is coming from the lower MAC*/
6480 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006481 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006482
Jeff Johnsone7245742012-09-05 17:12:55 -07006483 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006485 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006486 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006487 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6489
Jeff Johnsone7245742012-09-05 17:12:55 -07006490
Jeff Johnson295189b2012-06-20 16:38:30 -07006491}/*WDI_ProcessStartReq*/
6492
6493/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006494 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006495 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006496
6497 @param pWDICtx: pointer to the WLAN DAL context
6498 pEventData: pointer to the event information structure
6499
Jeff Johnson295189b2012-06-20 16:38:30 -07006500 @see
6501 @return Result of the function call
6502*/
6503WDI_Status
6504WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006505(
Jeff Johnson295189b2012-06-20 16:38:30 -07006506 WDI_ControlBlockType* pWDICtx,
6507 WDI_EventInfoType* pEventData
6508)
6509{
6510 WDI_StopReqParamsType* pwdiStopParams = NULL;
6511 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006512 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006513 wpt_uint16 usDataOffset = 0;
6514 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006515 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006516 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6518
6519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006521 -------------------------------------------------------------------------*/
6522 if (( NULL == pEventData ) ||
6523 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6524 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6525 {
6526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006529 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006530 }
6531
6532 /*-----------------------------------------------------------------------
6533 Get message buffer
6534 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006535 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006536 sizeof(halStopReq.stopReqParams),
6537 &pSendBuffer, &usDataOffset, &usSendSize))||
6538 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6539 {
6540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6541 "Unable to get send buffer in stop req %x %x %x",
6542 pEventData, pwdiStopParams, wdiStopRspCb);
6543 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006544 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006545 }
6546
6547 /*-----------------------------------------------------------------------
6548 Fill in the message
6549 -----------------------------------------------------------------------*/
6550 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6551 pwdiStopParams->wdiStopReason);
6552
Jeff Johnsone7245742012-09-05 17:12:55 -07006553 wpalMemoryCopy( pSendBuffer+usDataOffset,
6554 &halStopReq.stopReqParams,
6555 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006556
6557 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006558 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006559
6560 /*! TO DO: stop the data services */
6561 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6562 {
6563 /*Stop the STA Table !UT- check this logic again
6564 It is safer to do it here than on the response - because a stop is imminent*/
6565 WDI_STATableStop(pWDICtx);
6566
6567 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006568 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6569 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 {
6571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6572 "WDI Init failed to reset power state event");
6573
Jeff Johnsone7245742012-09-05 17:12:55 -07006574 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006575 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006576 }
6577 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006578 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6579 if( eWLAN_PAL_STATUS_SUCCESS != status )
6580 {
6581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6582 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6583 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006584 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006585 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006587 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006588 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006589 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6590 WDI_SET_POWER_STATE_TIMEOUT);
6591 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006592 {
6593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6594 "WDI Init failed to wait on an event");
6595
Jeff Johnsone7245742012-09-05 17:12:55 -07006596 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006597 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006598 }
6599 }
6600
6601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006602 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006603 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006604 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006605 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6606
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006607fail:
6608 // Release the message buffer so we don't leak
6609 wpalMemoryFree(pSendBuffer);
6610
6611failRequest:
6612 //WDA should have failure check to avoid the memory leak
6613 return WDI_STATUS_E_FAILURE;
6614
Jeff Johnson295189b2012-06-20 16:38:30 -07006615}/*WDI_ProcessStopReq*/
6616
6617/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006618 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006619 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006620
6621 @param pWDICtx: pointer to the WLAN DAL context
6622 pEventData: pointer to the event information structure
6623
Jeff Johnson295189b2012-06-20 16:38:30 -07006624 @see
6625 @return Result of the function call
6626*/
6627WDI_Status
6628WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006629(
Jeff Johnson295189b2012-06-20 16:38:30 -07006630 WDI_ControlBlockType* pWDICtx,
6631 WDI_EventInfoType* pEventData
6632)
6633{
Jeff Johnsone7245742012-09-05 17:12:55 -07006634 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6636
6637 /*Lock control block for cleanup*/
6638 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006639
Jeff Johnson295189b2012-06-20 16:38:30 -07006640 /*Clear all pending request*/
6641 WDI_ClearPendingRequests(pWDICtx);
6642
6643 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006644 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006645
6646 /* Close Data transport*/
6647 /* FTM mode does not open Data Path */
6648 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6649 {
6650 WDTS_Close(pWDICtx);
6651 }
6652
6653 /*Close the STA Table !UT- check this logic again*/
6654 WDI_STATableClose(pWDICtx);
6655
6656 /*close the PAL */
6657 wptStatus = wpalClose(pWDICtx->pPALContext);
6658 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6659 {
6660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6661 "Failed to wpal Close %d", wptStatus);
6662 WDI_ASSERT(0);
6663 }
6664
6665 /*Transition back to init state*/
6666 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6667
6668 wpalMutexRelease(&pWDICtx->wptMutex);
6669
6670 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006671 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006672
Jeff Johnsone7245742012-09-05 17:12:55 -07006673 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006674}/*WDI_ProcessCloseReq*/
6675
6676
6677/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006678 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006679===========================================================================*/
6680
6681/**
6682 @brief Process Init Scan Request function (called when Main FSM
6683 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006684
6685 @param pWDICtx: pointer to the WLAN DAL context
6686 pEventData: pointer to the event information structure
6687
Jeff Johnson295189b2012-06-20 16:38:30 -07006688 @see
6689 @return Result of the function call
6690*/
6691WDI_Status
6692WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006693(
Jeff Johnson295189b2012-06-20 16:38:30 -07006694 WDI_ControlBlockType* pWDICtx,
6695 WDI_EventInfoType* pEventData
6696)
6697{
6698 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6699 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006700 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006701 wpt_uint16 usDataOffset = 0;
6702 wpt_uint16 usSendSize = 0;
6703 wpt_uint8 i = 0;
6704
6705 tHalInitScanReqMsg halInitScanReqMsg;
6706
Jeff Johnsone7245742012-09-05 17:12:55 -07006707 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006708 * It shold be removed once host and riva changes are in sync*/
6709 tHalInitScanConReqMsg halInitScanConReqMsg;
6710
6711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6712
6713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006714 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006715 -------------------------------------------------------------------------*/
6716 if (( NULL == pEventData ) ||
6717 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6718 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6719 {
6720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006724 }
6725
6726#if 0
6727 wpalMutexAcquire(&pWDICtx->wptMutex);
6728 /*-----------------------------------------------------------------------
6729 Check to see if SCAN is already in progress - if so reject the req
6730 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006731 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006732 -----------------------------------------------------------------------*/
6733 if ( pWDICtx->bScanInProgress )
6734 {
6735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6736 "Scan is already in progress - subsequent scan is not allowed"
6737 " until the first scan completes");
6738
6739 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006741 }
6742
Jeff Johnsone7245742012-09-05 17:12:55 -07006743 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6744 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006745
6746 wpalMutexRelease(&pWDICtx->wptMutex);
6747#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08006748 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006749 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006750 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 * It shold be removed once host and riva changes are in sync*/
6752 /*-----------------------------------------------------------------------
6753 Get message buffer
6754 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006756 sizeof(halInitScanConReqMsg.initScanParams),
6757 &pSendBuffer, &usDataOffset, &usSendSize))||
6758 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.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 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006772 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6773
6774 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6775 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6776
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006778 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006779 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006781 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006782 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6783
6784 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6785 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6786
6787#ifdef WLAN_FEATURE_P2P
6788 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6789 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
6790#endif
6791
Jeff Johnsone7245742012-09-05 17:12:55 -07006792 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006793 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6794
6795 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6796 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006797 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006798 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6799 }
6800
Jeff Johnsone7245742012-09-05 17:12:55 -07006801 wpalMemoryCopy( pSendBuffer+usDataOffset,
6802 &halInitScanConReqMsg.initScanParams,
6803 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006804 }
6805 else
6806 {
6807 /*-----------------------------------------------------------------------
6808 Get message buffer
6809 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006810 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006811 sizeof(halInitScanReqMsg.initScanParams),
6812 &pSendBuffer, &usDataOffset, &usSendSize))||
6813 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6814 {
6815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6816 "Unable to get send buffer in init scan req %x %x %x",
6817 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006820 }
6821
6822
6823 /*-----------------------------------------------------------------------
6824 Fill in the message
6825 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006826 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006827 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6828
6829 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6830 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6831
Jeff Johnsone7245742012-09-05 17:12:55 -07006832 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006833 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006834 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006836 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006837 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6838
6839 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6840 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6841
Jeff Johnsone7245742012-09-05 17:12:55 -07006842 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006843 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6844
6845 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6846 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006847 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6849 }
6850
Jeff Johnsone7245742012-09-05 17:12:55 -07006851 wpalMemoryCopy( pSendBuffer+usDataOffset,
6852 &halInitScanReqMsg.initScanParams,
6853 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006854 }
6855
6856 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006857 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006858
6859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006860 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006862 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006863 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6864
6865}/*WDI_ProcessInitScanReq*/
6866
6867/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006868 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006869 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006870
6871 @param pWDICtx: pointer to the WLAN DAL context
6872 pEventData: pointer to the event information structure
6873
Jeff Johnson295189b2012-06-20 16:38:30 -07006874 @see
6875 @return Result of the function call
6876*/
6877WDI_Status
6878WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006879(
Jeff Johnson295189b2012-06-20 16:38:30 -07006880 WDI_ControlBlockType* pWDICtx,
6881 WDI_EventInfoType* pEventData
6882)
6883{
6884 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6885 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006886 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006887 wpt_uint16 usDataOffset = 0;
6888 wpt_uint16 usSendSize = 0;
6889
Jeff Johnsone7245742012-09-05 17:12:55 -07006890 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6892
6893 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006894 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006895 -------------------------------------------------------------------------*/
6896 if (( NULL == pEventData ) ||
6897 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6898 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6899 {
6900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 }
6905
6906#if 0
6907 wpalMutexAcquire(&pWDICtx->wptMutex);
6908 /*-----------------------------------------------------------------------
6909 Check to see if SCAN is already in progress - start scan is only
6910 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07006911 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07006912 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006913 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006914 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
6915 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
6916 {
6917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6918 "Scan start not allowed in this state %d %d",
6919 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006920
Jeff Johnson295189b2012-06-20 16:38:30 -07006921 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006922 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006923 }
6924
Jeff Johnsone7245742012-09-05 17:12:55 -07006925 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006926
6927 wpalMutexRelease(&pWDICtx->wptMutex);
6928#endif
6929
6930 /*-----------------------------------------------------------------------
6931 Get message buffer
6932 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006934 sizeof(halStartScanReqMsg.startScanParams),
6935 &pSendBuffer, &usDataOffset, &usSendSize))||
6936 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
6937 {
6938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6939 "Unable to get send buffer in start scan req %x %x %x",
6940 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
6941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 }
6944
Jeff Johnsone7245742012-09-05 17:12:55 -07006945 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07006946 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07006947 wpalMemoryCopy( pSendBuffer+usDataOffset,
6948 &halStartScanReqMsg.startScanParams,
6949 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006950
6951 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006952 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006953
6954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006955 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006957 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006958 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
6959}/*WDI_ProcessStartScanReq*/
6960
6961
6962/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006963 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006965
6966 @param pWDICtx: pointer to the WLAN DAL context
6967 pEventData: pointer to the event information structure
6968
Jeff Johnson295189b2012-06-20 16:38:30 -07006969 @see
6970 @return Result of the function call
6971*/
6972WDI_Status
6973WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006974(
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 WDI_ControlBlockType* pWDICtx,
6976 WDI_EventInfoType* pEventData
6977)
6978{
6979 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
6980 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 wpt_uint16 usDataOffset = 0;
6983 wpt_uint16 usSendSize = 0;
6984
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6987
6988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006989 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006990 -------------------------------------------------------------------------*/
6991 if (( NULL == pEventData ) ||
6992 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
6993 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
6994 {
6995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006996 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006997 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006999 }
7000
Jeff Johnsone7245742012-09-05 17:12:55 -07007001 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7002 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007003 * forwarded to HAL and result in hang*/
7004#if 0
7005 wpalMutexAcquire(&pWDICtx->wptMutex);
7006 /*-----------------------------------------------------------------------
7007 Check to see if SCAN is already in progress - end scan is only
7008 allowed when a scan is ongoing and the state of the scan procedure
7009 is started
7010 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007011 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7013 {
7014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7015 "End start not allowed in this state %d %d",
7016 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007017
Jeff Johnson295189b2012-06-20 16:38:30 -07007018 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007020 }
7021
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007023
7024 wpalMutexRelease(&pWDICtx->wptMutex);
7025#endif
7026
7027 /*-----------------------------------------------------------------------
7028 Get message buffer
7029 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007031 sizeof(halEndScanReqMsg.endScanParams),
7032 &pSendBuffer, &usDataOffset, &usSendSize))||
7033 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7034 {
7035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7036 "Unable to get send buffer in start scan req %x %x %x",
7037 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007040 }
7041
7042 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7043
Jeff Johnsone7245742012-09-05 17:12:55 -07007044 wpalMemoryCopy( pSendBuffer+usDataOffset,
7045 &halEndScanReqMsg.endScanParams,
7046 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007047
7048 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007050
7051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007054 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007055 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7056}/*WDI_ProcessEndScanReq*/
7057
7058
7059/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007060 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007061 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007062
7063 @param pWDICtx: pointer to the WLAN DAL context
7064 pEventData: pointer to the event information structure
7065
Jeff Johnson295189b2012-06-20 16:38:30 -07007066 @see
7067 @return Result of the function call
7068*/
7069WDI_Status
7070WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007071(
Jeff Johnson295189b2012-06-20 16:38:30 -07007072 WDI_ControlBlockType* pWDICtx,
7073 WDI_EventInfoType* pEventData
7074)
7075{
7076 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7077 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007079 wpt_uint16 usDataOffset = 0;
7080 wpt_uint16 usSendSize = 0;
7081 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007082 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007083 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7085
7086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007087 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007088 -------------------------------------------------------------------------*/
7089 if (( NULL == pEventData ) ||
7090 ( NULL == pEventData->pEventData) ||
7091 ( NULL == pEventData->pCBfnc))
7092 {
7093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 }
7098
7099 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7100 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007101 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7102 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 * forwarded to HAL and result in hang*/
7104#if 0
7105 wpalMutexAcquire(&pWDICtx->wptMutex);
7106 /*-----------------------------------------------------------------------
7107 Check to see if SCAN is already in progress
7108 Finish scan gets invoked any scan states. ie. abort scan
7109 It should be allowed in any states.
7110 -----------------------------------------------------------------------*/
7111 if ( !pWDICtx->bScanInProgress )
7112 {
7113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7114 "Finish start not allowed in this state %d",
7115 pWDICtx->bScanInProgress );
7116
7117 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007118 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007119 }
7120
7121 /*-----------------------------------------------------------------------
7122 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007123 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007124 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007125 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7126 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007127 wpalMutexRelease(&pWDICtx->wptMutex);
7128#endif
7129
7130 if ( pWDICtx->bInBmps )
7131 {
7132 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007133 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7134 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7135 {
7136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7137 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7138 WDI_ASSERT(0);
7139 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007140 }
7141
7142 /*-----------------------------------------------------------------------
7143 Get message buffer
7144 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007145 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007146 sizeof(halFinishScanReqMsg.finishScanParams),
7147 &pSendBuffer, &usDataOffset, &usSendSize))||
7148 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7149 {
7150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7151 "Unable to get send buffer in start scan req %x %x %x",
7152 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007155 }
7156
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7159
Jeff Johnsone7245742012-09-05 17:12:55 -07007160 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7162
Jeff Johnsone7245742012-09-05 17:12:55 -07007163 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7165
7166 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7167 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7168
Jeff Johnsone7245742012-09-05 17:12:55 -07007169 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007170 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007171 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007172 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007173 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7175
Jeff Johnsone7245742012-09-05 17:12:55 -07007176 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7178
7179 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7180 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007181 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7183 }
7184
7185 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7186 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7187
Jeff Johnsone7245742012-09-05 17:12:55 -07007188 wpalMemoryCopy( pSendBuffer+usDataOffset,
7189 &halFinishScanReqMsg.finishScanParams,
7190 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007191
7192 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007193 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007194
7195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007198 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007199 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7200}/*WDI_ProcessFinishScanReq*/
7201
7202
7203/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007204 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007205==========================================================================*/
7206/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007207 @brief Process BSS Join for a given Session
7208
7209 @param pWDICtx: pointer to the WLAN DAL context
7210 pEventData: pointer to the event information structure
7211
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 @see
7213 @return Result of the function call
7214*/
7215WDI_Status
7216WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007217(
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 WDI_ControlBlockType* pWDICtx,
7219 WDI_JoinReqParamsType* pwdiJoinParams,
7220 WDI_JoinRspCb wdiJoinRspCb,
7221 void* pUserData
7222)
7223{
7224 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007225 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 wpt_uint16 usDataOffset = 0;
7227 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007228 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007229
Jeff Johnsone7245742012-09-05 17:12:55 -07007230 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7232
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007233 wpalMutexAcquire(&pWDICtx->wptMutex);
7234
Jeff Johnson295189b2012-06-20 16:38:30 -07007235 /*------------------------------------------------------------------------
7236 Check to see if we have any session with this BSSID already stored, we
7237 should not
7238 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007239 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7240 pwdiJoinParams->wdiReqInfo.macBSSID,
7241 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007242
7243 if ( NULL != pBSSSes )
7244 {
7245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007246 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7247 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007248
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007249 /*reset the bAssociationInProgress otherwise the next
7250 *join request will be queued*/
7251 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7252 wpalMutexRelease(&pWDICtx->wptMutex);
7253 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007254 }
7255
Jeff Johnson295189b2012-06-20 16:38:30 -07007256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007257 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007259 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 if ( NULL == pBSSSes )
7261 {
7262
7263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7264 "DAL has no free sessions - cannot run another join");
7265
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007266 /*reset the bAssociationInProgress otherwise the next
7267 *join request will be queued*/
7268 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007270 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 }
7272
7273 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007274 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7275 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007276 WDI_MAC_ADDR_LEN);
7277
7278 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007279 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007280 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007281
Jeff Johnson295189b2012-06-20 16:38:30 -07007282 wpalMutexRelease(&pWDICtx->wptMutex);
7283
7284 /*-----------------------------------------------------------------------
7285 Get message buffer
7286 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007287 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007288 sizeof(halJoinReqMsg.joinReqParams),
7289 &pSendBuffer, &usDataOffset, &usSendSize))||
7290 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7291 {
7292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7293 "Unable to get send buffer in join req %x %x %x",
7294 pUserData, pwdiJoinParams, wdiJoinRspCb);
7295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 }
7298
7299 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007300 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007301
7302 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007303 pwdiJoinParams->wdiReqInfo.macSTASelf,
7304 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007305
Jeff Johnsone7245742012-09-05 17:12:55 -07007306 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7308
7309 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7310
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007311#ifdef WLAN_FEATURE_VOWIFI
7312 halJoinReqMsg.joinReqParams.maxTxPower =
7313 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7314#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007315 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007316 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7317#endif
7318
Jeff Johnsone7245742012-09-05 17:12:55 -07007319 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007320 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7321 wdiSecondaryChannelOffset);
7322
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 wpalMemoryCopy( pSendBuffer+usDataOffset,
7324 &halJoinReqMsg.joinReqParams,
7325 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007326
7327 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007329
7330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007333 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7334 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007335
7336}/*WDI_ProcessBSSSessionJoinReq*/
7337
7338/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007339 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007340 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007341
7342 @param pWDICtx: pointer to the WLAN DAL context
7343 pEventData: pointer to the event information structure
7344
Jeff Johnson295189b2012-06-20 16:38:30 -07007345 @see
7346 @return Result of the function call
7347*/
7348WDI_Status
7349WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007350(
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 WDI_ControlBlockType* pWDICtx,
7352 WDI_EventInfoType* pEventData
7353)
7354{
7355 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7356 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7357 WDI_JoinRspCb wdiJoinRspCb = NULL;
7358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7359
7360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007361 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007362 -------------------------------------------------------------------------*/
7363 if (( NULL == pEventData ) ||
7364 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7365 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7366 {
7367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007371 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007372
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 /*-------------------------------------------------------------------------
7374 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 -------------------------------------------------------------------------*/
7377 wpalMutexAcquire(&pWDICtx->wptMutex);
7378
7379 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7380 {
7381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7382 "Association is currently in progress, queueing new join req");
7383
7384 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007385 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007386 pwdiJoinParams->wdiReqInfo.macBSSID);
7387
7388 wpalMutexRelease(&pWDICtx->wptMutex);
7389
Jeff Johnsone7245742012-09-05 17:12:55 -07007390 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007391 }
7392
7393 /*Starting a new association */
7394 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7395 wpalMutexRelease(&pWDICtx->wptMutex);
7396
7397 /*Process the Join Request*/
7398 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7399 wdiJoinRspCb,pEventData->pUserData);
7400
7401}/*WDI_ProcessJoinReq*/
7402
7403
7404/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007405 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007406 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007407
7408 @param pWDICtx: pointer to the WLAN DAL context
7409 pEventData: pointer to the event information structure
7410
Jeff Johnson295189b2012-06-20 16:38:30 -07007411 @see
7412 @return Result of the function call
7413*/
7414WDI_Status
7415WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007416(
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 WDI_ControlBlockType* pWDICtx,
7418 WDI_EventInfoType* pEventData
7419)
7420{
7421 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7422 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 wpt_uint16 uMsgSize = 0;
7426 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 wpt_uint16 usDataOffset = 0;
7428 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007429 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007430
Jeff Johnsone7245742012-09-05 17:12:55 -07007431 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7433
7434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007436 -------------------------------------------------------------------------*/
7437 if (( NULL == pEventData ) ||
7438 ( NULL == pEventData->pEventData ) ||
7439 ( NULL == pEventData->pCBfnc ))
7440 {
7441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007445 }
7446
7447 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7448 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7449 /*-------------------------------------------------------------------------
7450 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007451 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 -------------------------------------------------------------------------*/
7453 wpalMutexAcquire(&pWDICtx->wptMutex);
7454
7455 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007456 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7459 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7460 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007461
Jeff Johnsone7245742012-09-05 17:12:55 -07007462 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007463 {
7464#ifdef WLAN_FEATURE_VOWIFI_11R
7465 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007466 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007468 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 if ( NULL == pBSSSes )
7470 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007471
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7473 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007474
Jeff Johnson295189b2012-06-20 16:38:30 -07007475 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007476 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007477 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007478
Jeff Johnson295189b2012-06-20 16:38:30 -07007479 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7481 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007482 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007483
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007485 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007486 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7487#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007488 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 * Request in case of IBSS*/
7490 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7491 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7492 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7493 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7494 {
7495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007496 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007498 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007499 if ( NULL == pBSSSes )
7500 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007501
Jeff Johnson295189b2012-06-20 16:38:30 -07007502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7503 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007504
Jeff Johnson295189b2012-06-20 16:38:30 -07007505 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007506 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007507 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007508
Jeff Johnson295189b2012-06-20 16:38:30 -07007509 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7511 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007512 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007513
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007515 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007516 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7517 }
7518 else
7519 {
7520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7522 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7523 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7524
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 /* for IBSS testing */
7526 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007527 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007528 }
7529#endif
7530 }
7531
7532 /*------------------------------------------------------------------------
7533 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007534 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 ------------------------------------------------------------------------*/
7536 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7537 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7539 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7540 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7541 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007542
Jeff Johnsone7245742012-09-05 17:12:55 -07007543 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007544
7545 wpalMutexRelease(&pWDICtx->wptMutex);
7546
Jeff Johnsone7245742012-09-05 17:12:55 -07007547 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007548 }
7549
7550 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007551 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7552 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007553 sizeof(pWDICtx->wdiCachedConfigBssReq));
7554
7555 wpalMutexRelease(&pWDICtx->wptMutex);
7556
Jeff Johnsone7245742012-09-05 17:12:55 -07007557 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7558#ifdef WLAN_FEATURE_11AC
7559 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007560 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 else
7562#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007563 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007564
7565 /*-----------------------------------------------------------------------
7566 Get message buffer
7567 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007568 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007569 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7570 ( usSendSize < (usDataOffset + uMsgSize )))
7571 {
7572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7573 "Unable to get send buffer in config bss req %x %x %x",
7574 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 }
7578
7579 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007580#ifdef WLAN_FEATURE_11AC
7581 if (WDI_getFwWlanFeatCaps(DOT11AC))
7582 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7583 &pwdiConfigBSSParams->wdiReqInfo);
7584 else
7585#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007586 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007587 &pwdiConfigBSSParams->wdiReqInfo);
7588
7589 /* Need to fill in the STA Index to invalid, since at this point we have not
7590 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007591 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007592
7593 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007594 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7595
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007596#ifdef WLAN_FEATURE_11AC
7597 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7598 wpalMemoryCopy( pSendBuffer+usDataOffset,
7599 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7600 uMsgSize);
7601 }else
7602#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 wpalMemoryCopy( pSendBuffer+usDataOffset,
7604 &halConfigBssReqMsg.uBssParams.configBssParams,
7605 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -07007606
7607 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007608 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007609
7610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007611 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7614 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007615 WDI_CONFIG_BSS_RESP);
7616
7617}/*WDI_ProcessConfigBSSReq*/
7618
7619
7620/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007621 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007622 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007623
7624 @param pWDICtx: pointer to the WLAN DAL context
7625 pEventData: pointer to the event information structure
7626
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 @see
7628 @return Result of the function call
7629*/
7630WDI_Status
7631WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007632(
Jeff Johnson295189b2012-06-20 16:38:30 -07007633 WDI_ControlBlockType* pWDICtx,
7634 WDI_EventInfoType* pEventData
7635)
7636{
7637 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7638 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 wpt_uint16 usDataOffset = 0;
7643 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007645
Jeff Johnsone7245742012-09-05 17:12:55 -07007646 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7648
7649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007651 -------------------------------------------------------------------------*/
7652 if (( NULL == pEventData ) ||
7653 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7654 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7655 {
7656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 }
7661
7662 /*-------------------------------------------------------------------------
7663 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007664 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007665 -------------------------------------------------------------------------*/
7666 wpalMutexAcquire(&pWDICtx->wptMutex);
7667
7668 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007669 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007670 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7672 pwdiDelBSSParams->ucBssIdx,
7673 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007674
Jeff Johnsone7245742012-09-05 17:12:55 -07007675 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007676 {
7677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007678 "%s: BSS does not yet exist. ucBssIdx %d",
7679 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007680
7681 wpalMutexRelease(&pWDICtx->wptMutex);
7682
7683 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007684 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007685
7686 /*------------------------------------------------------------------------
7687 Check if this BSS is being currently processed or queued,
7688 if queued - queue the new request as well
7689 ------------------------------------------------------------------------*/
7690 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007691 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7693 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7694 __func__, pwdiDelBSSParams->ucBssIdx);
7695
7696 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7697
7698 wpalMutexRelease(&pWDICtx->wptMutex);
7699
7700 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007702
Jeff Johnson295189b2012-06-20 16:38:30 -07007703 /*-----------------------------------------------------------------------
7704 If we receive a Del BSS request for an association that is already in
7705 progress, it indicates that the assoc has failed => we no longer have
7706 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007707 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007708 -----------------------------------------------------------------------*/
7709 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7710 {
7711 /*We can switch to false here because even if a subsequent Join comes in
7712 it will only be processed when DAL transitions out of BUSY state which
7713 happens when the Del BSS request comes */
7714 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7715
7716 /*Former association is complete - prepare next pending assoc for
7717 processing */
7718 WDI_DequeueAssocRequest(pWDICtx);
7719 }
7720
7721 wpalMutexRelease(&pWDICtx->wptMutex);
7722 /*-----------------------------------------------------------------------
7723 Get message buffer
7724 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 sizeof(halBssReqMsg.deleteBssParams),
7727 &pSendBuffer, &usDataOffset, &usSendSize))||
7728 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7729 {
7730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7731 "Unable to get send buffer in start req %x %x %x",
7732 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 }
7736
7737 /*Fill in the message request structure*/
7738
7739 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007740 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007741
Jeff Johnsone7245742012-09-05 17:12:55 -07007742 wpalMemoryCopy( pSendBuffer+usDataOffset,
7743 &halBssReqMsg.deleteBssParams,
7744 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007745
7746 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007748
Jeff Johnsone7245742012-09-05 17:12:55 -07007749
Jeff Johnson295189b2012-06-20 16:38:30 -07007750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007751 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007754 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7755
Jeff Johnsone7245742012-09-05 17:12:55 -07007756
Jeff Johnson295189b2012-06-20 16:38:30 -07007757}/*WDI_ProcessDelBSSReq*/
7758
7759/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007761 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007762
7763 @param pWDICtx: pointer to the WLAN DAL context
7764 pEventData: pointer to the event information structure
7765
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 @see
7767 @return Result of the function call
7768*/
7769WDI_Status
7770WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007771(
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 WDI_ControlBlockType* pWDICtx,
7773 WDI_EventInfoType* pEventData
7774)
7775{
7776 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7777 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007778 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007780 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007781 wpt_uint16 usDataOffset = 0;
7782 wpt_uint16 usSendSize = 0;
7783 wpt_uint16 uMsgSize = 0;
7784 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007785 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007786
Jeff Johnsone7245742012-09-05 17:12:55 -07007787 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7789
7790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007791 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 -------------------------------------------------------------------------*/
7793 if (( NULL == pEventData ) ||
7794 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7795 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7796 {
7797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 }
7802
7803 /*-------------------------------------------------------------------------
7804 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007806 -------------------------------------------------------------------------*/
7807 wpalMutexAcquire(&pWDICtx->wptMutex);
7808
7809 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007810 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007811 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007812 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7813 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7814 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007815
7816 if ( NULL == pBSSSes )
7817 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7819 "%s: Association sequence for this BSS does not yet exist - "
7820 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7821 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007822
7823 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007824 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007825 }
7826
7827 /*------------------------------------------------------------------------
7828 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 ------------------------------------------------------------------------*/
7831 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7832 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7834 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7835 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007836
Jeff Johnsone7245742012-09-05 17:12:55 -07007837 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007838
7839 wpalMutexRelease(&pWDICtx->wptMutex);
7840
Jeff Johnsone7245742012-09-05 17:12:55 -07007841 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 }
7843
7844 /*-----------------------------------------------------------------------
7845 If Post Assoc was not yet received - the current association must
7846 be in progress
7847 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7850 {
7851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7852 "Association sequence for this BSS association no longer in "
7853 "progress - not allowed");
7854
7855 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 }
7858
7859 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 -----------------------------------------------------------------------*/
7862 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7863 {
7864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7865 "Post Assoc not allowed before JOIN - failing request");
7866
7867 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 }
7870
7871 wpalMutexRelease(&pWDICtx->wptMutex);
7872
7873 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7874 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7875 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007878 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007879 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7880 ( usSendSize < (usDataOffset + uMsgSize )))
7881 {
7882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7883 "Unable to get send buffer in start req %x %x %x",
7884 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 }
7888
7889 /*Copy the STA parameters */
7890 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7891 &pwdiPostAssocParams->wdiSTAParams );
7892
7893 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007894 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007895 WDI_STATableFindStaidByAddr(pWDICtx,
7896 pwdiPostAssocParams->wdiSTAParams.macSTA,
7897 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
7898 {
7899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7900 "This station does not exist in the WDI Station Table %d");
7901 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007902 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007904 }
7905
7906 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007908 pBSSSes->ucBSSIdx;
7909
7910 /*Copy the BSS parameters */
7911 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7912 &pwdiPostAssocParams->wdiBSSParams);
7913
7914 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 WDI_STATableFindStaidByAddr(pWDICtx,
7917 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07007918 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 {
7920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7921 "This station does not exist in the WDI Station Table %d");
7922 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007923 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007925 }
7926
7927 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007928 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007929 pBSSSes->ucBSSIdx;
7930
Jeff Johnsone7245742012-09-05 17:12:55 -07007931
7932 wpalMemoryCopy( pSendBuffer+usDataOffset,
7933 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
7934 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007935
7936 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
7937
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
7939 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7940 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007941
Jeff Johnsone7245742012-09-05 17:12:55 -07007942
Jeff Johnson295189b2012-06-20 16:38:30 -07007943 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007945
Jeff Johnsone7245742012-09-05 17:12:55 -07007946
7947 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07007948 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07007950
7951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007954 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
7956
Jeff Johnsone7245742012-09-05 17:12:55 -07007957
Jeff Johnson295189b2012-06-20 16:38:30 -07007958}/*WDI_ProcessPostAssocReq*/
7959
7960/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007961 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007962 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007963
7964 @param pWDICtx: pointer to the WLAN DAL context
7965 pEventData: pointer to the event information structure
7966
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 @see
7968 @return Result of the function call
7969*/
7970WDI_Status
7971WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007972(
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 WDI_ControlBlockType* pWDICtx,
7974 WDI_EventInfoType* pEventData
7975)
7976{
7977 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
7978 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007981 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007982 wpt_uint16 usDataOffset = 0;
7983 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007984 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7986
Jeff Johnsone7245742012-09-05 17:12:55 -07007987 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7989
7990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007992 -------------------------------------------------------------------------*/
7993 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
7994 ( NULL == pEventData->pCBfnc ))
7995 {
7996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 }
8001
8002 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8003 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8004 /*-------------------------------------------------------------------------
8005 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008006 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008007 -------------------------------------------------------------------------*/
8008 wpalMutexAcquire(&pWDICtx->wptMutex);
8009
8010 /*------------------------------------------------------------------------
8011 Find the BSS for which the request is made and identify WDI session
8012 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8014 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008015 &macBSSID))
8016 {
8017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8018 "This station does not exist in the WDI Station Table %d");
8019 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 }
8022
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8024 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008025 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8027 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8028 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008029
8030 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008031 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 }
8033
8034 /*------------------------------------------------------------------------
8035 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 ------------------------------------------------------------------------*/
8038 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8039 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8041 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8042 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008043
Jeff Johnsone7245742012-09-05 17:12:55 -07008044 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008045 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 }
8048
8049 wpalMutexRelease(&pWDICtx->wptMutex);
8050 /*-----------------------------------------------------------------------
8051 Get message buffer
8052 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 sizeof(halDelStaReqMsg.delStaParams),
8055 &pSendBuffer, &usDataOffset, &usSendSize))||
8056 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8057 {
8058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8059 "Unable to get send buffer in start req %x %x %x",
8060 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 }
8064
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8066 wpalMemoryCopy( pSendBuffer+usDataOffset,
8067 &halDelStaReqMsg.delStaParams,
8068 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008069
8070 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008071 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008072
8073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008074 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008076 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008077 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8078
8079}/*WDI_ProcessDelSTAReq*/
8080
8081
8082/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008084==========================================================================*/
8085/**
8086 @brief Process Set BSS Key Request function (called when Main FSM
8087 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008088
8089 @param pWDICtx: pointer to the WLAN DAL context
8090 pEventData: pointer to the event information structure
8091
Jeff Johnson295189b2012-06-20 16:38:30 -07008092 @see
8093 @return Result of the function call
8094*/
8095WDI_Status
8096WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008097(
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 WDI_ControlBlockType* pWDICtx,
8099 WDI_EventInfoType* pEventData
8100)
8101{
8102 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8103 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008106 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008107 wpt_uint16 usDataOffset = 0;
8108 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008110 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8111 wpt_uint8 keyIndex = 0;
8112
8113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8114
8115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008116 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008117 -------------------------------------------------------------------------*/
8118 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8119 ( NULL == pEventData->pCBfnc ))
8120 {
8121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008122 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 }
8126
8127 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8128 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8129 /*-------------------------------------------------------------------------
8130 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008132 -------------------------------------------------------------------------*/
8133 wpalMutexAcquire(&pWDICtx->wptMutex);
8134
8135 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8139 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8140 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008141
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 {
8144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8146 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008147
8148 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 }
8151
8152 /*------------------------------------------------------------------------
8153 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008154 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008155 ------------------------------------------------------------------------*/
8156 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8157 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8159 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8160 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008161
Jeff Johnsone7245742012-09-05 17:12:55 -07008162 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008163 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008164 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008165 }
8166
8167
8168 wpalMutexRelease(&pWDICtx->wptMutex);
8169 /*-----------------------------------------------------------------------
8170 Get message buffer
8171 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008172 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8174 &pSendBuffer, &usDataOffset, &usSendSize))||
8175 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8176 {
8177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8178 "Unable to get send buffer in set bss key req %x %x %x",
8179 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 }
8183
8184 /*-----------------------------------------------------------------------
8185 Copy the Key parameters into the HAL message
8186 -----------------------------------------------------------------------*/
8187
Jeff Johnsone7245742012-09-05 17:12:55 -07008188 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008189
Jeff Johnsone7245742012-09-05 17:12:55 -07008190 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8192
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8195
8196 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8197 keyIndex++)
8198 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8201 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8202 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8203 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8204 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8205 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008207 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008208 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008209 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008210 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8212 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 WDI_MAX_KEY_LENGTH);
8215 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008216
8217 wpalMemoryCopy( pSendBuffer+usDataOffset,
8218 &halSetBssKeyReqMsg.setBssKeyParams,
8219 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008220
8221 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008223
8224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8228 wdiSetBSSKeyRspCb, pEventData->pUserData,
8229 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008230
8231}/*WDI_ProcessSetBssKeyReq*/
8232
8233/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008236
8237 @param pWDICtx: pointer to the WLAN DAL context
8238 pEventData: pointer to the event information structure
8239
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 @see
8241 @return Result of the function call
8242*/
8243WDI_Status
8244WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008245(
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 WDI_ControlBlockType* pWDICtx,
8247 WDI_EventInfoType* pEventData
8248)
8249{
8250 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8251 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 wpt_uint16 usDataOffset = 0;
8256 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008257 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008258 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8260
8261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008263 -------------------------------------------------------------------------*/
8264 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8265 ( NULL == pEventData->pCBfnc ))
8266 {
8267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 }
8272
8273 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8274 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8275 /*-------------------------------------------------------------------------
8276 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008277 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 -------------------------------------------------------------------------*/
8279 wpalMutexAcquire(&pWDICtx->wptMutex);
8280
8281 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8285 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8286 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008287
Jeff Johnsone7245742012-09-05 17:12:55 -07008288 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008289 {
8290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8292 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008293
8294 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008295 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008296 }
8297
8298 /*------------------------------------------------------------------------
8299 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 ------------------------------------------------------------------------*/
8302 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8303 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8305 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8306 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008307
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008309 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 }
8312
8313
8314 wpalMutexRelease(&pWDICtx->wptMutex);
8315
8316 /*-----------------------------------------------------------------------
8317 Get message buffer
8318 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8321 &pSendBuffer, &usDataOffset, &usSendSize))||
8322 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8323 {
8324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8325 "Unable to get send buffer in set bss key req %x %x %x",
8326 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 }
8330 /*-----------------------------------------------------------------------
8331 Copy the Key parameters into the HAL message
8332 -----------------------------------------------------------------------*/
8333 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8334
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8337
8338 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8339
Jeff Johnsone7245742012-09-05 17:12:55 -07008340 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8342
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 wpalMemoryCopy( pSendBuffer+usDataOffset,
8344 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8345 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008346
8347 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008348 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008349
8350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008351 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008353 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008354 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008356}/*WDI_ProcessRemoveBssKeyReq*/
8357
8358/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008359 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008360 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008361
8362 @param pWDICtx: pointer to the WLAN DAL context
8363 pEventData: pointer to the event information structure
8364
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 @see
8366 @return Result of the function call
8367*/
8368WDI_Status
8369WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008370(
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 WDI_ControlBlockType* pWDICtx,
8372 WDI_EventInfoType* pEventData
8373)
8374{
8375 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8376 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8377 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008378 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008379 wpt_uint16 usDataOffset = 0;
8380 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8385 wpt_uint8 keyIndex = 0;
8386
8387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8388
8389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 -------------------------------------------------------------------------*/
8392 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8393 ( NULL == pEventData->pCBfnc ))
8394 {
8395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 }
8400
8401 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8402 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8403 /*-------------------------------------------------------------------------
8404 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 -------------------------------------------------------------------------*/
8407 wpalMutexAcquire(&pWDICtx->wptMutex);
8408
8409 /*------------------------------------------------------------------------
8410 Find the BSS for which the request is made and identify WDI session
8411 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008412 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8413 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008414 &macBSSID))
8415 {
8416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8417 "This station does not exist in the WDI Station Table %d");
8418 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008420 }
8421
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8423 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8426 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8427 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008428
8429 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008432
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 /*------------------------------------------------------------------------
8434 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 ------------------------------------------------------------------------*/
8437 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8438 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8440 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8441 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008442
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008445 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008446 }
8447
8448
8449 wpalMutexRelease(&pWDICtx->wptMutex);
8450 /*-----------------------------------------------------------------------
8451 Get message buffer
8452 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8455 &pSendBuffer, &usDataOffset, &usSendSize))||
8456 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8457 {
8458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8459 "Unable to get send buffer in set bss key req %x %x %x",
8460 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 }
8464 /*-----------------------------------------------------------------------
8465 Copy the STA Key parameters into the HAL message
8466 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008467 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8469
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8472
8473 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8474
8475 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8476
8477 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8478
8479#ifdef WLAN_SOFTAP_FEATURE
8480 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8481 keyIndex++)
8482 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008483 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8485 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8486 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8487 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8488 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8489 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008490 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008491 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008494 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8496 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008497 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 WDI_MAX_KEY_LENGTH);
8499 }
8500#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008501 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8503 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8504 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8505 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8506 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8507 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008513 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8514 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 WDI_MAX_KEY_LENGTH);
8517#endif
8518
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 wpalMemoryCopy( pSendBuffer+usDataOffset,
8520 &halSetStaKeyReqMsg.setStaKeyParams,
8521 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008522
8523 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008524 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008525
8526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008529 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8530 wdiSetSTAKeyRspCb, pEventData->pUserData,
8531 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008532
8533}/*WDI_ProcessSetSTAKeyReq*/
8534
8535/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008537 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008538
8539 @param pWDICtx: pointer to the WLAN DAL context
8540 pEventData: pointer to the event information structure
8541
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 @see
8543 @return Result of the function call
8544*/
8545WDI_Status
8546WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008547(
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 WDI_ControlBlockType* pWDICtx,
8549 WDI_EventInfoType* pEventData
8550)
8551{
8552 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8553 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8554 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008556 wpt_uint16 usDataOffset = 0;
8557 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 wpt_macAddr macBSSID;
8560 wpt_uint8 ucCurrentBSSSesIdx;
8561 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8563
8564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008566 -------------------------------------------------------------------------*/
8567 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8568 ( NULL == pEventData->pCBfnc ))
8569 {
8570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 }
8575
8576 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8577 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8578 /*-------------------------------------------------------------------------
8579 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008580 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008581 -------------------------------------------------------------------------*/
8582 wpalMutexAcquire(&pWDICtx->wptMutex);
8583
8584 /*------------------------------------------------------------------------
8585 Find the BSS for which the request is made and identify WDI session
8586 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8588 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 &macBSSID))
8590 {
8591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8592 "This station does not exist in the WDI Station Table %d");
8593 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008595 }
8596
Jeff Johnsone7245742012-09-05 17:12:55 -07008597 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8598 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8601 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8602 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008603
8604 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008606 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008607
Jeff Johnson295189b2012-06-20 16:38:30 -07008608 /*------------------------------------------------------------------------
8609 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 ------------------------------------------------------------------------*/
8612 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8613 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8615 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8616 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008617
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 }
8622
8623
8624
8625 wpalMutexRelease(&pWDICtx->wptMutex);
8626 /*-----------------------------------------------------------------------
8627 Get message buffer
8628 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8631 &pSendBuffer, &usDataOffset, &usSendSize))||
8632 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8633 {
8634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8635 "Unable to get send buffer in set bss key req %x %x %x",
8636 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 }
8640
8641 /*-----------------------------------------------------------------------
8642 Copy the Key parameters into the HAL message
8643 -----------------------------------------------------------------------*/
8644
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8647
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8650
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8653
Jeff Johnsone7245742012-09-05 17:12:55 -07008654 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008655 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8656
Jeff Johnsone7245742012-09-05 17:12:55 -07008657 wpalMemoryCopy( pSendBuffer+usDataOffset,
8658 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8659 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008660
8661 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008663
8664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008669 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008670
8671}/*WDI_ProcessRemoveSTAKeyReq*/
8672
8673/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008675 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008676
8677 @param pWDICtx: pointer to the WLAN DAL context
8678 pEventData: pointer to the event information structure
8679
Jeff Johnson295189b2012-06-20 16:38:30 -07008680 @see
8681 @return Result of the function call
8682*/
8683WDI_Status
8684WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008685(
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 WDI_ControlBlockType* pWDICtx,
8687 WDI_EventInfoType* pEventData
8688)
8689{
8690 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8691 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8692 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 wpt_uint16 usDataOffset = 0;
8695 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008696 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8700 wpt_uint8 keyIndex = 0;
8701
8702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8703
8704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008706 -------------------------------------------------------------------------*/
8707 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8708 ( NULL == pEventData->pCBfnc ))
8709 {
8710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008711 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 }
8715
8716 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8717 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8718 /*-------------------------------------------------------------------------
8719 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008720 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008721 -------------------------------------------------------------------------*/
8722 wpalMutexAcquire(&pWDICtx->wptMutex);
8723
8724 /*------------------------------------------------------------------------
8725 Find the BSS for which the request is made and identify WDI session
8726 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008727 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8728 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 &macBSSID))
8730 {
8731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8732 "This station does not exist in the WDI Station Table %d");
8733 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 }
8736
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8738 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 {
8740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8742 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008743
8744 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008747
Jeff Johnson295189b2012-06-20 16:38:30 -07008748 /*------------------------------------------------------------------------
8749 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008751 ------------------------------------------------------------------------*/
8752 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8753 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8755 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8756 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008757
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008759 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008761 }
8762
8763
8764 wpalMutexRelease(&pWDICtx->wptMutex);
8765 /*-----------------------------------------------------------------------
8766 Get message buffer
8767 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8770 &pSendBuffer, &usDataOffset, &usSendSize))||
8771 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8772 {
8773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8774 "Unable to get send buffer in set bss key req %x %x %x",
8775 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 }
8779 /*-----------------------------------------------------------------------
8780 Copy the STA Key parameters into the HAL message
8781 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008782 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8784
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8787
8788 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8789
8790 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8791
8792 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8793
8794#ifdef WLAN_SOFTAP_FEATURE
8795 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8796 keyIndex++)
8797 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8800 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8801 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8802 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8803 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8804 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8811 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 WDI_MAX_KEY_LENGTH);
8814 }
8815#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8818 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8819 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8820 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8821 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8822 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008824 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008828 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8829 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 WDI_MAX_KEY_LENGTH);
8832#endif
8833
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 wpalMemoryCopy( pSendBuffer+usDataOffset,
8835 &halSetStaKeyReqMsg.setStaKeyParams,
8836 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008837
8838 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008839 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008840
8841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8845 wdiSetSTAKeyRspCb, pEventData->pUserData,
8846 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008847
8848}/*WDI_ProcessSetSTABcastKeyReq*/
8849
8850/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008851 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008853
8854 @param pWDICtx: pointer to the WLAN DAL context
8855 pEventData: pointer to the event information structure
8856
Jeff Johnson295189b2012-06-20 16:38:30 -07008857 @see
8858 @return Result of the function call
8859*/
8860WDI_Status
8861WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008862(
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 WDI_ControlBlockType* pWDICtx,
8864 WDI_EventInfoType* pEventData
8865)
8866{
8867 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8868 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8869 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 wpt_uint16 usDataOffset = 0;
8872 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 wpt_macAddr macBSSID;
8875 wpt_uint8 ucCurrentBSSSesIdx;
8876 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8878
8879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 -------------------------------------------------------------------------*/
8882 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8883 ( NULL == pEventData->pCBfnc ))
8884 {
8885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 }
8890
8891 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8892 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8893 /*-------------------------------------------------------------------------
8894 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 -------------------------------------------------------------------------*/
8897 wpalMutexAcquire(&pWDICtx->wptMutex);
8898
8899 /*------------------------------------------------------------------------
8900 Find the BSS for which the request is made and identify WDI session
8901 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8903 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 &macBSSID))
8905 {
8906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8907 "This station does not exist in the WDI Station Table %d");
8908 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 }
8911
Jeff Johnsone7245742012-09-05 17:12:55 -07008912 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8913 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8916 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8917 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008918
8919 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008922
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 /*------------------------------------------------------------------------
8924 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 ------------------------------------------------------------------------*/
8927 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8928 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8930 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8931 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008932
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008934 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008936 }
8937
8938
8939
8940 wpalMutexRelease(&pWDICtx->wptMutex);
8941 /*-----------------------------------------------------------------------
8942 Get message buffer
8943 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
8946 &pSendBuffer, &usDataOffset, &usSendSize))||
8947 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
8948 {
8949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8950 "Unable to get send buffer in set bss key req %x %x %x",
8951 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
8952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008954 }
8955
8956 /*-----------------------------------------------------------------------
8957 Copy the Key parameters into the HAL message
8958 -----------------------------------------------------------------------*/
8959
Jeff Johnsone7245742012-09-05 17:12:55 -07008960 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008961 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
8962
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
8965
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
8968
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
8971
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 wpalMemoryCopy( pSendBuffer+usDataOffset,
8973 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
8974 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008975
8976 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008977 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008978
8979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008982 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008985
8986}/*WDI_ProcessRemoveSTABcastKeyReq*/
8987
8988/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008990==========================================================================*/
8991/**
8992 @brief Process Add TSpec Request function (called when Main FSM
8993 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008994
8995 @param pWDICtx: pointer to the WLAN DAL context
8996 pEventData: pointer to the event information structure
8997
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 @see
8999 @return Result of the function call
9000*/
9001WDI_Status
9002WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009003(
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 WDI_ControlBlockType* pWDICtx,
9005 WDI_EventInfoType* pEventData
9006)
9007{
9008 WDI_AddTSReqParamsType* pwdiAddTSParams;
9009 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 wpt_uint16 usDataOffset = 0;
9014 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 wpt_macAddr macBSSID;
9017 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009018
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9020
9021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 -------------------------------------------------------------------------*/
9024 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9025 ( NULL == pEventData->pCBfnc ))
9026 {
9027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009031 }
9032
9033 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9034 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9035 /*-------------------------------------------------------------------------
9036 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 -------------------------------------------------------------------------*/
9039 wpalMutexAcquire(&pWDICtx->wptMutex);
9040
9041 /*------------------------------------------------------------------------
9042 Find the BSS for which the request is made and identify WDI session
9043 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009044 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9045 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 &macBSSID))
9047 {
9048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9049 "This station does not exist in the WDI Station Table %d");
9050 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 }
9053
Jeff Johnsone7245742012-09-05 17:12:55 -07009054 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9055 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9058 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9059 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009060
9061 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009064
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 /*------------------------------------------------------------------------
9066 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 ------------------------------------------------------------------------*/
9069 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9070 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9072 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9073 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009074
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 }
9079
9080 wpalMutexRelease(&pWDICtx->wptMutex);
9081 /*-----------------------------------------------------------------------
9082 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9086 sizeof(halAddTsParams),
9087 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 &usSendSize))||
9089 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9090 {
9091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9092 "Unable to get send buffer in set bss key req %x %x %x",
9093 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 }
9097
9098 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9099 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9100
9101 //TSPEC IE
9102 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9103 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009104 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009105 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009110 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009111 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009117 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009118 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009119 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009121 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009123 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9134
9135 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009138 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009139 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009146 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009148 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009149 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9150
9151 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009155 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9156
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 wpalMemoryCopy( pSendBuffer+usDataOffset,
9158 &halAddTsParams,
9159 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009160
9161 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009163
9164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009170}/*WDI_ProcessAddTSpecReq*/
9171
9172
9173/**
9174 @brief Process Del TSpec Request function (called when Main FSM
9175 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009176
9177 @param pWDICtx: pointer to the WLAN DAL context
9178 pEventData: pointer to the event information structure
9179
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 @see
9181 @return Result of the function call
9182*/
9183WDI_Status
9184WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009185(
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 WDI_ControlBlockType* pWDICtx,
9187 WDI_EventInfoType* pEventData
9188)
9189{
9190 WDI_DelTSReqParamsType* pwdiDelTSParams;
9191 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 wpt_uint16 usDataOffset = 0;
9196 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9199
9200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 -------------------------------------------------------------------------*/
9203 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9204 ( NULL == pEventData->pCBfnc ))
9205 {
9206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 }
9211
9212 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9213 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9214
9215 /*-------------------------------------------------------------------------
9216 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 -------------------------------------------------------------------------*/
9219 wpalMutexAcquire(&pWDICtx->wptMutex);
9220
9221 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9225 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9226 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009227
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9231 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9232 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9233
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009236 }
9237
9238 /*------------------------------------------------------------------------
9239 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 ------------------------------------------------------------------------*/
9242 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9243 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9245 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9246 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009247
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 }
9252
9253
9254 wpalMutexRelease(&pWDICtx->wptMutex);
9255 /*-----------------------------------------------------------------------
9256 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009257 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009258 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009259 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9261 &pSendBuffer, &usDataOffset, &usSendSize))||
9262 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9263 {
9264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9265 "Unable to get send buffer in set bss key req %x %x %x",
9266 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9267 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 }
9270
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 wpalMemoryCopy( pSendBuffer+usDataOffset,
9272 &pwdiDelTSParams->wdiDelTSInfo,
9273 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009274
9275 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009277
9278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009281 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9282 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009283}/*WDI_ProcessDelTSpecReq*/
9284
9285/**
9286 @brief Process Update EDCA Params Request function (called when
9287 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009288
9289 @param pWDICtx: pointer to the WLAN DAL context
9290 pEventData: pointer to the event information structure
9291
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 @see
9293 @return Result of the function call
9294*/
9295WDI_Status
9296WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009297(
Jeff Johnson295189b2012-06-20 16:38:30 -07009298 WDI_ControlBlockType* pWDICtx,
9299 WDI_EventInfoType* pEventData
9300)
9301{
9302 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9303 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009304 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009306 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 wpt_uint16 usDataOffset = 0;
9308 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9311
9312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 -------------------------------------------------------------------------*/
9315 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9316 ( NULL == pEventData->pCBfnc ))
9317 {
9318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 }
9323
9324 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9325 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9326 /*-------------------------------------------------------------------------
9327 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009328 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009329 -------------------------------------------------------------------------*/
9330 wpalMutexAcquire(&pWDICtx->wptMutex);
9331
9332 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9336 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9337 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009338
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 {
9341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9343 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009344
9345 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 }
9348
9349 /*------------------------------------------------------------------------
9350 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 ------------------------------------------------------------------------*/
9353 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9354 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9356 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9357 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009358
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 }
9363
9364
9365 wpalMutexRelease(&pWDICtx->wptMutex);
9366 /*-----------------------------------------------------------------------
9367 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9372 &pSendBuffer, &usDataOffset, &usSendSize))||
9373 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9374 {
9375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9376 "Unable to get send buffer in set bss key req %x %x %x",
9377 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 }
9381
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 wpalMemoryCopy( pSendBuffer+usDataOffset,
9383 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9384 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009385
9386 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009388
9389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9393 wdiUpdateEDCARspCb, pEventData->pUserData,
9394 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009395}/*WDI_ProcessUpdateEDCAParamsReq*/
9396
9397/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009400
9401 @param pWDICtx: pointer to the WLAN DAL context
9402 pEventData: pointer to the event information structure
9403
Jeff Johnson295189b2012-06-20 16:38:30 -07009404 @see
9405 @return Result of the function call
9406*/
9407WDI_Status
9408WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009409(
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 WDI_ControlBlockType* pWDICtx,
9411 WDI_EventInfoType* pEventData
9412)
9413{
9414 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9415 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009416 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009417 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 wpt_uint16 usDataOffset = 0;
9420 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 wpt_macAddr macBSSID;
9423
9424 tAddBASessionReqMsg halAddBASessionReq;
9425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9426
9427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009429 -------------------------------------------------------------------------*/
9430 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9431 ( NULL == pEventData->pCBfnc ))
9432 {
9433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 }
9438
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9443 /*-------------------------------------------------------------------------
9444 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009445 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 -------------------------------------------------------------------------*/
9447 wpalMutexAcquire(&pWDICtx->wptMutex);
9448
9449 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9453 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009454 &macBSSID))
9455 {
9456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9457 "This station does not exist in the WDI Station Table %d");
9458 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 }
9461
9462
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009464
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9468 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9469 __func__, MAC_ADDR_ARRAY(macBSSID));
9470
Jeff Johnson295189b2012-06-20 16:38:30 -07009471 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 }
9474
9475 /*------------------------------------------------------------------------
9476 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 ------------------------------------------------------------------------*/
9479 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9480 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9482 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9483 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009484
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 }
9489
9490
9491 wpalMutexRelease(&pWDICtx->wptMutex);
9492 /*-----------------------------------------------------------------------
9493 Get message buffer
9494 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009495 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9496 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 sizeof(halAddBASessionReq.addBASessionParams),
9498 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009499 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009500 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9501 {
9502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9503 "Unable to get send buffer in Add BA session req %x %x %x",
9504 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 }
9508
9509 halAddBASessionReq.addBASessionParams.staIdx =
9510 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9511 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9512 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9513 WDI_MAC_ADDR_LEN);
9514 halAddBASessionReq.addBASessionParams.baTID =
9515 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9516 halAddBASessionReq.addBASessionParams.baPolicy =
9517 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9518 halAddBASessionReq.addBASessionParams.baBufferSize =
9519 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9520 halAddBASessionReq.addBASessionParams.baTimeout =
9521 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9522 halAddBASessionReq.addBASessionParams.baSSN =
9523 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9524 halAddBASessionReq.addBASessionParams.baDirection =
9525 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9526
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 wpalMemoryCopy( pSendBuffer+usDataOffset,
9528 &halAddBASessionReq.addBASessionParams,
9529 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009530
9531 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009533
9534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9538 wdiAddBASessionRspCb, pEventData->pUserData,
9539 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009540}/*WDI_ProcessAddBASessionReq*/
9541
9542/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009544 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009545
9546 @param pWDICtx: pointer to the WLAN DAL context
9547 pEventData: pointer to the event information structure
9548
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 @see
9550 @return Result of the function call
9551*/
9552WDI_Status
9553WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009554(
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 WDI_ControlBlockType* pWDICtx,
9556 WDI_EventInfoType* pEventData
9557)
9558{
9559 WDI_DelBAReqParamsType* pwdiDelBAParams;
9560 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 wpt_uint16 usDataOffset = 0;
9565 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 wpt_macAddr macBSSID;
9568 tDelBAParams halDelBAparam;
9569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9570
9571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 -------------------------------------------------------------------------*/
9574 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9575 ( NULL == pEventData->pCBfnc ))
9576 {
9577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009578 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009581 }
9582
9583 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9584 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9585 /*-------------------------------------------------------------------------
9586 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 -------------------------------------------------------------------------*/
9589 wpalMutexAcquire(&pWDICtx->wptMutex);
9590
9591 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9595 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 &macBSSID))
9597 {
9598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9599 "This station does not exist in the WDI Station Table %d");
9600 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009602 }
9603
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009605
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9609 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9610 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009611
9612 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009613 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009614 }
9615
9616 /*------------------------------------------------------------------------
9617 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 ------------------------------------------------------------------------*/
9620 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9621 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9623 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9624 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009625
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 }
9630
9631 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 sizeof(halDelBAparam),
9634 &pSendBuffer, &usDataOffset, &usSendSize))||
9635 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9636 {
9637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9638 "Unable to get send buffer for DEL BA req %x %x %x",
9639 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 }
9643
9644 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9645 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9646 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9647
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 wpalMemoryCopy( pSendBuffer+usDataOffset,
9649 &halDelBAparam,
9650 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009651
9652 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009654
9655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009656 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009657 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9659 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009660}/*WDI_ProcessDelBAReq*/
9661
9662#ifdef FEATURE_WLAN_CCX
9663
9664WDI_Status
9665WDI_ProcessTSMStatsReq
9666(
9667 WDI_ControlBlockType* pWDICtx,
9668 WDI_EventInfoType* pEventData
9669)
9670{
9671 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9672 WDI_TsmRspCb wdiTSMRspCb;
9673 wpt_uint8 ucCurrentBSSSesIdx = 0;
9674 WDI_BSSSessionType* pBSSSes = NULL;
9675 wpt_uint8* pSendBuffer = NULL;
9676 wpt_uint16 usDataOffset = 0;
9677 wpt_uint16 usSendSize = 0;
9678 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9679 tTsmStatsParams halTsmStatsReqParams = {0};
9680
9681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9682
9683 /*-------------------------------------------------------------------------
9684 Sanity check
9685 -------------------------------------------------------------------------*/
9686 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9687 ( NULL == pEventData->pCBfnc ))
9688 {
9689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009690 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 WDI_ASSERT(0);
9692 return WDI_STATUS_E_FAILURE;
9693 }
9694
9695 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9696 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9697 /*-------------------------------------------------------------------------
9698 Check to see if we are in the middle of an association, if so queue, if
9699 not it means it is free to process request
9700 -------------------------------------------------------------------------*/
9701 wpalMutexAcquire(&pWDICtx->wptMutex);
9702
9703 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9704 if ( NULL == pBSSSes )
9705 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9707 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9708 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009709
9710 wpalMutexRelease(&pWDICtx->wptMutex);
9711 return WDI_STATUS_E_NOT_ALLOWED;
9712 }
9713
9714 /*------------------------------------------------------------------------
9715 Check if this BSS is being currently processed or queued,
9716 if queued - queue the new request as well
9717 ------------------------------------------------------------------------*/
9718 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9719 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9721 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9722 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009723
9724 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9725 wpalMutexRelease(&pWDICtx->wptMutex);
9726 return wdiStatus;
9727 }
9728
9729 wpalMutexRelease(&pWDICtx->wptMutex);
9730 /*-----------------------------------------------------------------------
9731 Get message buffer
9732 ! TO DO : proper conversion into the HAL Message Request Format
9733 -----------------------------------------------------------------------*/
9734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9735 sizeof(halTsmStatsReqParams),
9736 &pSendBuffer, &usDataOffset, &usSendSize))||
9737 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9738 {
9739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9740 "Unable to get send buffer in set bss key req %x %x %x",
9741 pEventData, pwdiTSMParams, wdiTSMRspCb);
9742 WDI_ASSERT(0);
9743 return WDI_STATUS_E_FAILURE;
9744 }
9745
9746 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9747 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9748 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9749 WDI_MAC_ADDR_LEN);
9750 wpalMemoryCopy( pSendBuffer+usDataOffset,
9751 &halTsmStatsReqParams,
9752 sizeof(halTsmStatsReqParams));
9753
9754 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9755 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9756
9757 /*-------------------------------------------------------------------------
9758 Send TSM Stats Request to HAL
9759 -------------------------------------------------------------------------*/
9760 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9761 wdiTSMRspCb, pEventData->pUserData,
9762 WDI_TSM_STATS_RESP);
9763}/*WDI_ProcessTSMStatsReq*/
9764
9765#endif
9766
9767
9768/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009771
9772 @param pWDICtx: pointer to the WLAN DAL context
9773 pEventData: pointer to the event information structure
9774
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 @see
9776 @return Result of the function call
9777*/
9778WDI_Status
9779WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009780(
Jeff Johnson295189b2012-06-20 16:38:30 -07009781 WDI_ControlBlockType* pWDICtx,
9782 WDI_EventInfoType* pEventData
9783)
9784{
9785 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9786 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009787 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009788 wpt_uint16 usDataOffset = 0;
9789 wpt_uint16 usSendSize = 0;
9790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9791
9792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009793 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009794 -------------------------------------------------------------------------*/
9795 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9796 ( NULL == pEventData->pCBfnc ))
9797 {
9798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009799 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009800 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 }
9803
9804 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9805 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9806 /*-----------------------------------------------------------------------
9807 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009810 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9812 &pSendBuffer, &usDataOffset, &usSendSize))||
9813 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9814 {
9815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9816 "Unable to get send buffer in set bss key req %x %x %x",
9817 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 }
9821
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 wpalMemoryCopy( pSendBuffer+usDataOffset,
9823 &pwdiFlushAcParams->wdiFlushAcInfo,
9824 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009825
9826 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009827 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009828
9829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009830 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9833 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009834}/*WDI_ProcessFlushAcReq*/
9835
9836/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009839
9840 @param pWDICtx: pointer to the WLAN DAL context
9841 pEventData: pointer to the event information structure
9842
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 @see
9844 @return Result of the function call
9845*/
9846WDI_Status
9847WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009848(
Jeff Johnson295189b2012-06-20 16:38:30 -07009849 WDI_ControlBlockType* pWDICtx,
9850 WDI_EventInfoType* pEventData
9851)
9852{
9853 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9854 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 wpt_uint16 usDataOffset = 0;
9857 wpt_uint16 usSendSize = 0;
9858
9859 tBtAmpEventMsg haltBtAmpEventMsg;
9860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9861
9862 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009863 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009864 -------------------------------------------------------------------------*/
9865 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9866 ( NULL == pEventData->pCBfnc ))
9867 {
9868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009869 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009872 }
9873
9874 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9875 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9876 /*-----------------------------------------------------------------------
9877 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9882 &pSendBuffer, &usDataOffset, &usSendSize))||
9883 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9884 {
9885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9886 "Unable to get send buffer in BT AMP event req %x %x %x",
9887 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 }
9891
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 wpalMemoryCopy( pSendBuffer+usDataOffset,
9895 &haltBtAmpEventMsg.btAmpEventParams,
9896 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009897
9898 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009900
9901 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009904 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9905 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009906}/*WDI_ProcessBtAmpEventReq*/
9907
9908/**
9909 @brief Process Add STA self Request function (called when Main FSM
9910 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009911
9912 @param pWDICtx: pointer to the WLAN DAL context
9913 pEventData: pointer to the event information structure
9914
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 @see
9916 @return Result of the function call
9917*/
9918WDI_Status
9919WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009920(
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 WDI_ControlBlockType* pWDICtx,
9922 WDI_EventInfoType* pEventData
9923)
9924{
9925 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9926 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 wpt_uint16 usDataOffset = 0;
9929 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009930 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9932
9933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 -------------------------------------------------------------------------*/
9936 if (( NULL == pEventData ) ||
9937 ( NULL == pEventData->pEventData) ||
9938 ( NULL == pEventData->pCBfnc))
9939 {
9940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 }
9945
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
9950 /*-----------------------------------------------------------------------
9951 Get message buffer
9952 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9954 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 sizeof(tAddStaSelfParams),
9956 &pSendBuffer, &usDataOffset, &usSendSize))||
9957 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
9958 {
9959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9960 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
9961 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
9962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 }
9965
9966 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
9969
Jeff Johnsone7245742012-09-05 17:12:55 -07009970 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
9972
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
9974 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009975
9976 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009978
9979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009980 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009981 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9983 wdiAddSTASelfReqRspCb, pEventData->pUserData,
9984 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009985}/*WDI_ProcessAddSTASelfReq*/
9986
9987
9988
9989/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009990 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009992
9993 @param pWDICtx: pointer to the WLAN DAL context
9994 pEventData: pointer to the event information structure
9995
Jeff Johnson295189b2012-06-20 16:38:30 -07009996 @see
9997 @return Result of the function call
9998*/
9999WDI_Status
10000WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010001(
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 WDI_ControlBlockType* pWDICtx,
10003 WDI_EventInfoType* pEventData
10004)
10005{
10006 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10007 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 wpt_uint16 usDataOffset = 0;
10010 wpt_uint16 usSendSize = 0;
10011 tDelStaSelfParams halSetDelSelfSTAParams;
10012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10013
10014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010015 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010016 -------------------------------------------------------------------------*/
10017 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10018 ( NULL == pEventData->pCBfnc ))
10019 {
10020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 }
10025
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10028 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10029
10030 /*-----------------------------------------------------------------------
10031 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010032 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010033 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010034 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010035 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10036 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010038 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10039 {
10040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10041 "Unable to get send buffer in Del Sta Self req %x %x %x",
10042 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 }
10046
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10049
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10051 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010052
10053 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010054 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010055
10056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10060 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 WDI_DEL_STA_SELF_RESP);
10062
10063}
10064
Jeff Johnsone7245742012-09-05 17:12:55 -070010065#ifdef FEATURE_OEM_DATA_SUPPORT
10066/**
10067 @brief Process Start Oem Data Request function (called when Main
10068 FSM allows it)
10069
10070 @param pWDICtx: pointer to the WLAN DAL context
10071 pEventData: pointer to the event information structure
10072
10073 @see
10074 @return Result of the function call
10075*/
10076WDI_Status
10077WDI_ProcessStartOemDataReq
10078(
10079 WDI_ControlBlockType* pWDICtx,
10080 WDI_EventInfoType* pEventData
10081)
10082{
10083 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10084 WDI_oemDataRspCb wdiOemDataRspCb;
10085 wpt_uint8* pSendBuffer = NULL;
10086 wpt_uint16 usDataOffset = 0;
10087 wpt_uint16 usSendSize = 0;
10088 wpt_uint16 reqLen;
10089 tStartOemDataReqParams* halStartOemDataReqParams;
10090
10091 /*-------------------------------------------------------------------------
10092 Sanity check
10093 -------------------------------------------------------------------------*/
10094 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10095 ( NULL == pEventData->pCBfnc ))
10096 {
10097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010098 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010099 WDI_ASSERT(0);
10100 return WDI_STATUS_E_FAILURE;
10101 }
10102
10103 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10104 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10105
10106 /*-----------------------------------------------------------------------
10107 Get message buffer
10108 -----------------------------------------------------------------------*/
10109
10110 reqLen = sizeof(tStartOemDataReqParams);
10111
10112 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10113 WDI_START_OEM_DATA_REQ, reqLen,
10114 &pSendBuffer, &usDataOffset, &usSendSize))||
10115 (usSendSize < (usDataOffset + reqLen)))
10116 {
10117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10118 "Unable to get send buffer in Start Oem Data req %x %x %x",
10119 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10120 WDI_ASSERT(0);
10121 return WDI_STATUS_E_FAILURE;
10122 }
10123
10124 //copying WDI OEM DATA REQ PARAMS to shared memory
10125 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10126
10127 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10128 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10129
10130 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10131 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10132
10133 /*-------------------------------------------------------------------------
10134 Send Start Request to HAL
10135 -------------------------------------------------------------------------*/
10136 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10137 wdiOemDataRspCb, pEventData->pUserData,
10138 WDI_START_OEM_DATA_RESP);
10139}/*WDI_ProcessStartOemDataReq*/
10140#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010141
10142/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010143 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010145
10146 @param pWDICtx: pointer to the WLAN DAL context
10147 pEventData: pointer to the event information structure
10148
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 @see
10150 @return Result of the function call
10151*/
10152WDI_Status
10153WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010154(
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 WDI_ControlBlockType* pWDICtx,
10156 WDI_EventInfoType* pEventData
10157)
10158{
10159 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10160 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 wpt_uint16 usDataOffset = 0;
10163 wpt_uint16 usSendSize = 0;
10164 tHalWlanHostResumeReqParam halResumeReqParams;
10165
10166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10167
10168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 -------------------------------------------------------------------------*/
10171 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10172 ( NULL == pEventData->pCBfnc ))
10173 {
10174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010175 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010178 }
10179
10180 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10181 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10182
10183 /*-----------------------------------------------------------------------
10184 Get message buffer
10185 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10188 &pSendBuffer, &usDataOffset, &usSendSize))||
10189 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10190 {
10191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 }
10197
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010200
10201 wpalMemoryCopy( pSendBuffer+usDataOffset,
10202 &halResumeReqParams,
10203 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010204
10205 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010206 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010207
10208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010209 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10212 wdiHostResumeRspCb, pEventData->pUserData,
10213 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010214}/*WDI_ProcessHostResumeReq*/
10215
10216/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010217 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010218 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010219
10220 @param pWDICtx: pointer to the WLAN DAL context
10221 pEventData: pointer to the event information structure
10222
Jeff Johnson295189b2012-06-20 16:38:30 -070010223 @see
10224 @return Result of the function call
10225*/
10226WDI_Status
10227WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010228(
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 WDI_ControlBlockType* pWDICtx,
10230 WDI_EventInfoType* pEventData
10231)
10232{
10233 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10234 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 wpt_uint16 usDataOffset = 0;
10237 wpt_uint16 usSendSize = 0;
10238 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10240
10241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 -------------------------------------------------------------------------*/
10244 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10245 ( NULL == pEventData->pCBfnc ))
10246 {
10247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010248 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 }
10252
10253 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10254 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010255
Jeff Johnson295189b2012-06-20 16:38:30 -070010256 /*-----------------------------------------------------------------------
10257 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010258 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010259 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010260 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 sizeof(halTxPerTrackingReqParam),
10262 &pSendBuffer, &usDataOffset, &usSendSize))||
10263 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10264 {
10265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10266 "Unable to get send buffer in set tx per tracking req %x %x %x",
10267 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010271
Jeff Johnson295189b2012-06-20 16:38:30 -070010272 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10273 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10274 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10275 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010276
10277 wpalMemoryCopy( pSendBuffer+usDataOffset,
10278 &halTxPerTrackingReqParam,
10279 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010280
10281 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010282 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010283
10284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010287 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10288 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010289}/*WDI_ProcessSetTxPerTrackingReq*/
10290
10291/*=========================================================================
10292 Indications
10293=========================================================================*/
10294
10295/**
10296 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010297
10298 @param pWDICtx: pointer to the WLAN DAL context
10299 pEventData: pointer to the event information structure
10300
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 @see
10302 @return Result of the function call
10303*/
10304WDI_Status
10305WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010306(
Jeff Johnson295189b2012-06-20 16:38:30 -070010307 WDI_ControlBlockType* pWDICtx,
10308 WDI_EventInfoType* pEventData
10309)
10310{
10311 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 wpt_uint16 usDataOffset = 0;
10314 wpt_uint16 usSendSize = 0;
10315 WDI_Status wdiStatus;
10316 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10318
10319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010321 -------------------------------------------------------------------------*/
10322 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10323 {
10324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010325 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 }
10329
10330 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10331
10332 /*-----------------------------------------------------------------------
10333 Get message buffer
10334 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10336 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010337 sizeof(halWlanSuspendIndparams),
10338 &pSendBuffer, &usDataOffset, &usSendSize))||
10339 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10340 {
10341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10342 "Unable to get send buffer in Suspend Ind ");
10343 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 }
10346
10347 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10348 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10349
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 WDI_GetActiveSessionsCount(pWDICtx);
10352
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10354 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010355
10356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 -------------------------------------------------------------------------*/
10359 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010360 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010361
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10364}/*WDI_ProcessHostSuspendInd*/
10365
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010366
10367
10368/**
10369 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10370
10371 @param pWDICtx: pointer to the WLAN DAL context
10372 pEventData: pointer to the event information structure
10373
10374 @see
10375 @return Result of the function call
10376*/
10377WDI_Status
10378WDI_ProcessTrafficStatsInd
10379(
10380 WDI_ControlBlockType* pWDICtx,
10381 WDI_EventInfoType* pEventData
10382)
10383{
10384 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10385 wpt_uint8* pSendBuffer = NULL;
10386 wpt_uint16 usDataOffset = 0;
10387 wpt_uint16 usSendSize = 0;
10388 WDI_Status wdiStatus;
10389 tStatsClassBIndParams* pStatsClassBIndParams;
10390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10391
10392 /*-------------------------------------------------------------------------
10393 Sanity check
10394 -------------------------------------------------------------------------*/
10395 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10396 {
10397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10398 "%s: Invalid parameters in Traffic Stats ind",__func__);
10399 WDI_ASSERT(0);
10400 return WDI_STATUS_E_FAILURE;
10401 }
10402
10403 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10404
10405 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10406 {
10407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10408 "%s: Invalid parameters in Traffic Stats ind",__func__);
10409 WDI_ASSERT(0);
10410 return WDI_STATUS_E_FAILURE;
10411 }
10412
10413 /*-----------------------------------------------------------------------
10414 Get message buffer
10415 -----------------------------------------------------------------------*/
10416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10417 WDI_TRAFFIC_STATS_IND,
10418 sizeof(tStatsClassBIndParams),
10419 &pSendBuffer, &usDataOffset, &usSendSize))||
10420 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10421 {
10422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10423 "Unable to get send buffer in Traffic Stats Ind ");
10424 WDI_ASSERT(0);
10425 return WDI_STATUS_E_FAILURE;
10426 }
10427
10428 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10429
10430 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10431
10432 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10433 pTrafficStatsIndParams->pTrafficStats,
10434 pTrafficStatsIndParams->length);
10435
10436 /*-------------------------------------------------------------------------
10437 Send Suspend Request to HAL
10438 -------------------------------------------------------------------------*/
10439 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10440 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10441
10442 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10443 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10444}/*WDI_ProcessTrafficStatsInd*/
10445
Jeff Johnson295189b2012-06-20 16:38:30 -070010446/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010448==========================================================================*/
10449/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010452
10453 @param pWDICtx: pointer to the WLAN DAL context
10454 pEventData: pointer to the event information structure
10455
Jeff Johnson295189b2012-06-20 16:38:30 -070010456 @see
10457 @return Result of the function call
10458*/
10459WDI_Status
10460WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010461(
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 WDI_ControlBlockType* pWDICtx,
10463 WDI_EventInfoType* pEventData
10464)
10465{
10466 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10467 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010469 wpt_uint16 usDataOffset = 0;
10470 wpt_uint16 usSendSize = 0;
10471 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10473
10474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010475 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010476 -------------------------------------------------------------------------*/
10477 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10478 ( NULL == pEventData->pCBfnc ))
10479 {
10480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010484 }
10485
10486 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10487 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10488 /*-----------------------------------------------------------------------
10489 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 sizeof(halSwitchChannelReq.switchChannelParams),
10494 &pSendBuffer, &usDataOffset, &usSendSize))||
10495 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10496 {
10497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10498 "Unable to get send buffer in channel switch req %x %x %x",
10499 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 }
10503
Jeff Johnsone7245742012-09-05 17:12:55 -070010504 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010505 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010506#ifndef WLAN_FEATURE_VOWIFI
10507 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10509#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10512
10513#ifdef WLAN_FEATURE_VOWIFI
10514 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010516 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10517 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10518 WDI_MAC_ADDR_LEN);
10519 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10520 pwdiSwitchChParams->wdiChInfo.macBSSId,
10521 WDI_MAC_ADDR_LEN);
10522#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 wpalMemoryCopy( pSendBuffer+usDataOffset,
10524 &halSwitchChannelReq.switchChannelParams,
10525 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010526
10527 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010528 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010529
10530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010531 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10534 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010535}/*WDI_ProcessChannelSwitchReq*/
10536
10537/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010540
10541 @param pWDICtx: pointer to the WLAN DAL context
10542 pEventData: pointer to the event information structure
10543
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 @see
10545 @return Result of the function call
10546*/
10547WDI_Status
10548WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010549(
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 WDI_ControlBlockType* pWDICtx,
10551 WDI_EventInfoType* pEventData
10552)
10553{
10554 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10555 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 wpt_uint16 usDataOffset = 0;
10560 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010561 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010562
Jeff Johnsone7245742012-09-05 17:12:55 -070010563 tConfigStaReqMsg halConfigStaReqMsg;
10564 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10566
10567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010569 -------------------------------------------------------------------------*/
10570 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10571 ( NULL == pEventData->pCBfnc ))
10572 {
10573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 }
10578
10579 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10580 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10581 /*-------------------------------------------------------------------------
10582 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 -------------------------------------------------------------------------*/
10585 wpalMutexAcquire(&pWDICtx->wptMutex);
10586
10587 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010589 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010590 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10591 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10592 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010593
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10597 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10598 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010599
10600 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010602 }
10603
10604 /*------------------------------------------------------------------------
10605 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 ------------------------------------------------------------------------*/
10608 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10609 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10611 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10612 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010613
Jeff Johnsone7245742012-09-05 17:12:55 -070010614 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010615 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010617 }
10618
10619 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010620
10621 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10622#ifdef WLAN_FEATURE_11AC
10623 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010624 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010625 else
10626#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010627 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010628
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 /*-----------------------------------------------------------------------
10630 Get message buffer
10631 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10633 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010634 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010635 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 {
10637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10638 "Unable to get send buffer in config sta req %x %x %x",
10639 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010642 }
10643
10644 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 &pwdiConfigSTAParams->wdiReqInfo);
10647
10648 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10649 {
10650 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 WDI_STATableFindStaidByAddr(pWDICtx,
10653 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010654 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010655 {
10656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10657 "This station does not exist in the WDI Station Table %d");
10658 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010659 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010661 }
10662 }
10663 else
10664 {
10665 /* Need to fill in the STA Index to invalid, since at this point we have not
10666 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 }
10669
10670 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010671 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010672
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 wpalMemoryCopy( pSendBuffer+usDataOffset,
10674 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010675 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010676
10677 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010679
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10681 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010682 sizeof(pWDICtx->wdiCachedConfigStaReq));
10683
10684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010685 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10688 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010689}/*WDI_ProcessConfigStaReq*/
10690
10691
10692/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010695
10696 @param pWDICtx: pointer to the WLAN DAL context
10697 pEventData: pointer to the event information structure
10698
Jeff Johnson295189b2012-06-20 16:38:30 -070010699 @see
10700 @return Result of the function call
10701*/
10702WDI_Status
10703WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010704(
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 WDI_ControlBlockType* pWDICtx,
10706 WDI_EventInfoType* pEventData
10707)
10708{
10709 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10710 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010711 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010712 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 wpt_uint16 usDataOffset = 0;
10715 wpt_uint16 usSendSize = 0;
10716 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10719
10720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 -------------------------------------------------------------------------*/
10723 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10724 ( NULL == pEventData->pCBfnc ))
10725 {
10726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 }
10731
10732 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10733 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10734 /*-------------------------------------------------------------------------
10735 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010736 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010737 -------------------------------------------------------------------------*/
10738 wpalMutexAcquire(&pWDICtx->wptMutex);
10739
10740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010742 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010743 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10744 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10745 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010746
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010750 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10751 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010752 }
10753 else
10754 {
10755 /*------------------------------------------------------------------------
10756 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010757 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 ------------------------------------------------------------------------*/
10759 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10760 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10762 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10763 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10764
10765 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 }
10769 }
10770 /* If the link is set to enter IDLE - the Session allocated for this BSS
10771 will be deleted on the Set Link State response coming from HAL
10772 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010773 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010774 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10775
10776 wpalMutexRelease(&pWDICtx->wptMutex);
10777 /*-----------------------------------------------------------------------
10778 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010780 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010781
10782 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 sizeof(halLinkStateReqMsg),
10784 &pSendBuffer, &usDataOffset, &usSendSize))||
10785 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10786 {
10787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10788 "Unable to get send buffer in set bss key req %x %x %x",
10789 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 }
10793
10794 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10795 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10796
10797 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10798 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10799
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10802
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 wpalMemoryCopy( pSendBuffer+usDataOffset,
10804 &halLinkStateReqMsg,
10805 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010806
10807 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010808 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010809
10810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10814 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010815}/*WDI_ProcessSetLinkStateReq*/
10816
10817
10818/**
10819 @brief Process Get Stats Request function (called when Main FSM
10820 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010821
10822 @param pWDICtx: pointer to the WLAN DAL context
10823 pEventData: pointer to the event information structure
10824
Jeff Johnson295189b2012-06-20 16:38:30 -070010825 @see
10826 @return Result of the function call
10827*/
10828WDI_Status
10829WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010830(
Jeff Johnson295189b2012-06-20 16:38:30 -070010831 WDI_ControlBlockType* pWDICtx,
10832 WDI_EventInfoType* pEventData
10833)
10834{
10835 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10836 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010837 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 wpt_uint16 usDataOffset = 0;
10839 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010840 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 WDI_BSSSessionType* pBSSSes = NULL;
10842 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010843 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010844 tHalStatsReqMsg halStatsReqMsg;
10845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10846
10847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010849 -------------------------------------------------------------------------*/
10850 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10851 ( NULL == pEventData->pCBfnc ) )
10852 {
10853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010857 }
10858
10859 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10860 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10861
10862 /*-------------------------------------------------------------------------
10863 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010864 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010865 -------------------------------------------------------------------------*/
10866 wpalMutexAcquire(&pWDICtx->wptMutex);
10867
10868 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010869 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010870 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010871 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10872 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010873 &macBSSID))
10874 {
10875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10876 "This station does not exist in the WDI Station Table %d");
10877 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 }
10880
Jeff Johnsone7245742012-09-05 17:12:55 -070010881 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10882 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010883 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10885 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10886 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010887
10888 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010890 }
10891
10892 /*------------------------------------------------------------------------
10893 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010894 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010895 ------------------------------------------------------------------------*/
10896 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10897 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10899 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10900 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010901
Jeff Johnsone7245742012-09-05 17:12:55 -070010902 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010903 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 }
10906
10907
10908 wpalMutexRelease(&pWDICtx->wptMutex);
10909
10910 /*-----------------------------------------------------------------------
10911 Get message buffer
10912 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 sizeof(halStatsReqMsg.statsReqParams),
10915 &pSendBuffer, &usDataOffset, &usSendSize))||
10916 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10917 {
10918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10919 "Unable to get send buffer in set bss key req %x %x %x",
10920 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 }
10924
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 wpalMemoryCopy( pSendBuffer+usDataOffset,
10930 &halStatsReqMsg.statsReqParams,
10931 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010932
10933 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010934 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010935
10936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10940 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010941}/*WDI_ProcessGetStatsReq*/
10942
10943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010944 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010945 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010946
10947 @param pWDICtx: pointer to the WLAN DAL context
10948 pEventData: pointer to the event information structure
10949
Jeff Johnson295189b2012-06-20 16:38:30 -070010950 @see
10951 @return Result of the function call
10952*/
10953WDI_Status
10954WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010955(
Jeff Johnson295189b2012-06-20 16:38:30 -070010956 WDI_ControlBlockType* pWDICtx,
10957 WDI_EventInfoType* pEventData
10958)
10959{
10960 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
10961 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
10962
Jeff Johnsone7245742012-09-05 17:12:55 -070010963 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010964 wpt_uint16 usDataOffset = 0;
10965 wpt_uint16 usSendSize = 0;
10966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10967
10968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010970 -------------------------------------------------------------------------*/
10971 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10972 ( NULL == pEventData->pCBfnc))
10973 {
10974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010978 }
10979
10980 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
10981 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
10982
10983 /*-----------------------------------------------------------------------
10984 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010985 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010986 -----------------------------------------------------------------------*/
10987
Jeff Johnsone7245742012-09-05 17:12:55 -070010988 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010989 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
10990 &pSendBuffer, &usDataOffset, &usSendSize))||
10991 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
10992 {
10993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10994 "Unable to get send buffer in set bss key req %x %x %x",
10995 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
10996 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010998 }
10999
Jeff Johnsone7245742012-09-05 17:12:55 -070011000 wpalMemoryCopy( pSendBuffer+usDataOffset,
11001 &pwdiUpdateCfgParams->uConfigBufferLen,
11002 sizeof(wpt_uint32));
11003 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11004 pwdiUpdateCfgParams->pConfigBuffer,
11005 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011006
11007 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011008 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011009
11010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011011 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011012 -------------------------------------------------------------------------*/
11013
Jeff Johnsone7245742012-09-05 17:12:55 -070011014 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11015 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011016
11017}/*WDI_ProcessUpdateCfgReq*/
11018
11019
11020/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011021 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011022 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011023
11024 @param pWDICtx: pointer to the WLAN DAL context
11025 pEventData: pointer to the event information structure
11026
Jeff Johnson295189b2012-06-20 16:38:30 -070011027 @see
11028 @return Result of the function call
11029*/
11030WDI_Status
11031WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011032(
Jeff Johnson295189b2012-06-20 16:38:30 -070011033 WDI_ControlBlockType* pWDICtx,
11034 WDI_EventInfoType* pEventData
11035)
11036{
11037 WDI_AddBAReqParamsType* pwdiAddBAParams;
11038 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011040 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011041 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011042 wpt_uint16 usDataOffset = 0;
11043 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 wpt_macAddr macBSSID;
11046
11047 tAddBAReqMsg halAddBAReq;
11048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11049
11050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011051 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011052 -------------------------------------------------------------------------*/
11053 if (( NULL == pEventData ) ||
11054 ( NULL == pEventData->pEventData) ||
11055 ( NULL == pEventData->pCBfnc ))
11056 {
11057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011058 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011059 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011061 }
11062
11063 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11064 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11065
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 pwdiAddBAParams->wdiBAInfoType.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, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011117 sizeof(halAddBAReq.addBAParams),
11118 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011119 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011120 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11121 {
11122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11123 "Unable to get send buffer in Add BA req %x %x %x",
11124 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11125 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011127 }
11128
Jeff Johnsone7245742012-09-05 17:12:55 -070011129 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011130 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11131 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11132#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011133 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011134 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11135#endif
11136
Jeff Johnsone7245742012-09-05 17:12:55 -070011137 wpalMemoryCopy( pSendBuffer+usDataOffset,
11138 &halAddBAReq.addBAParams,
11139 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011140
11141 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011142 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011143
11144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011145 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011146 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011147 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11148 wdiAddBARspCb, pEventData->pUserData,
11149 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011150}/*WDI_ProcessAddBAReq*/
11151
11152
11153
11154/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011155 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011157
11158 @param pWDICtx: pointer to the WLAN DAL context
11159 pEventData: pointer to the event information structure
11160
Jeff Johnson295189b2012-06-20 16:38:30 -070011161 @see
11162 @return Result of the function call
11163*/
11164WDI_Status
11165WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011166(
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 WDI_ControlBlockType* pWDICtx,
11168 WDI_EventInfoType* pEventData
11169)
11170{
11171 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11172 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011173 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011174 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011175 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011176 wpt_uint16 usDataOffset = 0;
11177 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011178 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011179 wpt_uint16 index;
11180 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011181
Jeff Johnson295189b2012-06-20 16:38:30 -070011182 tTriggerBAReqMsg halTriggerBAReq;
11183 tTriggerBaReqCandidate* halTriggerBACandidate;
11184 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11186
11187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011189 -------------------------------------------------------------------------*/
11190 if (( NULL == pEventData ) ||
11191 ( NULL == pEventData->pEventData ) ||
11192 ( NULL == pEventData->pCBfnc ))
11193 {
11194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011195 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011196 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 }
11199
11200 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11201 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11202 /*-------------------------------------------------------------------------
11203 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011204 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011205 -------------------------------------------------------------------------*/
11206 wpalMutexAcquire(&pWDICtx->wptMutex);
11207
11208 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11212 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 &macBSSID))
11214 {
11215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11216 "This station does not exist in the WDI Station Table %d");
11217 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011219 }
11220
Jeff Johnsone7245742012-09-05 17:12:55 -070011221 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11222 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11225 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11226 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011227
11228 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011230 }
11231
11232 /*------------------------------------------------------------------------
11233 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011234 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011235 ------------------------------------------------------------------------*/
11236 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11237 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11239 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11240 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011241
Jeff Johnsone7245742012-09-05 17:12:55 -070011242 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011243 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011244 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011245 }
11246
11247
11248 wpalMutexRelease(&pWDICtx->wptMutex);
11249 /*-----------------------------------------------------------------------
11250 Get message buffer
11251 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011252 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11253 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011254 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011255 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011256 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11257 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011258 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011259 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11262 {
11263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11264 "Unable to get send buffer in Trigger BA req %x %x %x",
11265 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011268 }
11269
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011272 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011273 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11274
Jeff Johnsone7245742012-09-05 17:12:55 -070011275 wpalMemoryCopy( pSendBuffer+usDataOffset,
11276 &halTriggerBAReq.triggerBAParams,
11277 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011278
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11281 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11282 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011283
11284 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 index++)
11286 {
11287 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11288 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11289 halTriggerBACandidate++;
11290 wdiTriggerBACandidate++;
11291 }
11292
11293 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011294 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011295
11296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011297 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011298 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011299 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11300 wdiTriggerBARspCb, pEventData->pUserData,
11301 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011302}/*WDI_ProcessTriggerBAReq*/
11303
11304
11305
11306/**
11307 @brief Process Update Beacon Params Request function (called when Main FSM
11308 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011309
11310 @param pWDICtx: pointer to the WLAN DAL context
11311 pEventData: pointer to the event information structure
11312
Jeff Johnson295189b2012-06-20 16:38:30 -070011313 @see
11314 @return Result of the function call
11315*/
11316WDI_Status
11317WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011318(
Jeff Johnson295189b2012-06-20 16:38:30 -070011319 WDI_ControlBlockType* pWDICtx,
11320 WDI_EventInfoType* pEventData
11321)
11322{
11323 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11324 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 wpt_uint16 usDataOffset = 0;
11327 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11330
11331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 -------------------------------------------------------------------------*/
11334 if (( NULL == pEventData ) ||
11335 ( NULL == pEventData->pEventData) ||
11336 ( NULL == pEventData->pCBfnc))
11337 {
11338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011339 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011342 }
11343
11344 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11345 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11346 /*-----------------------------------------------------------------------
11347 Get message buffer
11348 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011349 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011350 sizeof(halUpdateBeaconParams),
11351 &pSendBuffer, &usDataOffset, &usSendSize))||
11352 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11353 {
11354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11355 "Unable to get send buffer in set bss key req %x %x %x",
11356 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 }
11360
11361 /*BSS Index of the BSS*/
11362 halUpdateBeaconParams.bssIdx =
11363 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11364 /*shortPreamble mode. HAL should update all the STA rates when it
11365 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011366 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011367 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11368 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011369 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11371 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011372 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011373 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11374
11375 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011376 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011377 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011378 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011379 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011380 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011381 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011382 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011383 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011385 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011386 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11388 halUpdateBeaconParams.fRIFSMode =
11389 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011390 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011391 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11392
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11394 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011395
11396 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011398
11399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11403 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011404}/*WDI_ProcessUpdateBeaconParamsReq*/
11405
11406
11407
11408/**
11409 @brief Process Send Beacon template Request function (called when Main FSM
11410 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011411
11412 @param pWDICtx: pointer to the WLAN DAL context
11413 pEventData: pointer to the event information structure
11414
Jeff Johnson295189b2012-06-20 16:38:30 -070011415 @see
11416 @return Result of the function call
11417*/
11418WDI_Status
11419WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011420(
Jeff Johnson295189b2012-06-20 16:38:30 -070011421 WDI_ControlBlockType* pWDICtx,
11422 WDI_EventInfoType* pEventData
11423)
11424{
11425 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11426 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011427 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011428 wpt_uint16 usDataOffset = 0;
11429 wpt_uint16 usSendSize = 0;
11430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11431
11432 tSendBeaconReqMsg halSendBeaconReq;
11433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 -------------------------------------------------------------------------*/
11436 if (( NULL == pEventData ) ||
11437 ( NULL == pEventData->pEventData ) ||
11438 ( NULL == pEventData->pCBfnc ))
11439 {
11440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011444 }
11445
11446 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11447 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11448 /*-----------------------------------------------------------------------
11449 Get message buffer
11450 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 sizeof(halSendBeaconReq.sendBeaconParam),
11453 &pSendBuffer, &usDataOffset, &usSendSize))||
11454 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11455 {
11456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11457 "Unable to get send buffer in send beacon req %x %x %x",
11458 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011461 }
11462
11463 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11464 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11465 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11468 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11469 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11470 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
11471#ifdef WLAN_SOFTAP_FEATURE
Jeff Johnsone7245742012-09-05 17:12:55 -070011472 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
11474#endif
11475#ifdef WLAN_FEATURE_P2P
Jeff Johnsone7245742012-09-05 17:12:55 -070011476 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011477 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
11478#endif
11479
Jeff Johnsone7245742012-09-05 17:12:55 -070011480 wpalMemoryCopy( pSendBuffer+usDataOffset,
11481 &halSendBeaconReq.sendBeaconParam,
11482 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011483
11484 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011485 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011486
11487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011488 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11491 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011492}/*WDI_ProcessSendBeaconParamsReq*/
11493
11494/**
11495 @brief Process Update Beacon Params Request function (called when Main FSM
11496 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011497
11498 @param pWDICtx: pointer to the WLAN DAL context
11499 pEventData: pointer to the event information structure
11500
Jeff Johnson295189b2012-06-20 16:38:30 -070011501 @see
11502 @return Result of the function call
11503*/
11504WDI_Status
11505WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011506(
Jeff Johnson295189b2012-06-20 16:38:30 -070011507 WDI_ControlBlockType* pWDICtx,
11508 WDI_EventInfoType* pEventData
11509)
11510{
11511 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11512 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011514 wpt_uint16 usDataOffset = 0;
11515 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11518
11519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 -------------------------------------------------------------------------*/
11522 if (( NULL == pEventData ) ||
11523 ( NULL == pEventData->pEventData) ||
11524 ( NULL == pEventData->pCBfnc))
11525 {
11526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011530 }
11531
Jeff Johnsone7245742012-09-05 17:12:55 -070011532 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011533 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011534 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011535 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11536 /*-----------------------------------------------------------------------
11537 Get message buffer
11538 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 sizeof(halUpdateProbeRspTmplParams),
11541 &pSendBuffer, &usDataOffset, &usSendSize))||
11542 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11543 {
11544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11545 "Unable to get send buffer in set bss key req %x %x %x",
11546 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 }
11550
11551 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011552 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011553 WDI_MAC_ADDR_LEN);
11554
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011556 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11557
11558 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11559 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011560 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011561
11562
11563 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11564 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11565 WDI_PROBE_REQ_BITMAP_IE_LEN);
11566
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 wpalMemoryCopy( pSendBuffer+usDataOffset,
11568 &halUpdateProbeRspTmplParams,
11569 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011570
11571 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011572 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011573
11574 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011575 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011577 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11578 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11579 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011580}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11581
11582/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011583 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011584 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011585
11586 @param pWDICtx: pointer to the WLAN DAL context
11587 pEventData: pointer to the event information structure
11588
Jeff Johnson295189b2012-06-20 16:38:30 -070011589 @see
11590 @return Result of the function call
11591*/
11592WDI_Status
11593WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011594(
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 WDI_ControlBlockType* pWDICtx,
11596 WDI_EventInfoType* pEventData
11597)
11598{
11599
11600 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11601 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11602
11603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 -------------------------------------------------------------------------*/
11606 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011609 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011610 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11611 {
11612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 }
11617
11618 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011619 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011620 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11621
11622 /*cache the wdi nv request message here if the the first fragment
11623 * To issue the request to HAL for the next fragment */
11624 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11625 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011626 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11627 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011628 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11629
11630 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11631 pWDICtx->pRspCBUserData = pEventData->pUserData;
11632 }
11633
11634 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11635}
11636
11637/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011638 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011639 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011640
11641 @param pWDICtx: pointer to the WLAN DAL context
11642 pEventData: pointer to the event information structure
11643
Jeff Johnson295189b2012-06-20 16:38:30 -070011644 @see
11645 @return Result of the function call
11646*/
11647WDI_Status WDI_ProcessSetMaxTxPowerReq
11648(
11649 WDI_ControlBlockType* pWDICtx,
11650 WDI_EventInfoType* pEventData
11651)
11652{
11653 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11654 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 wpt_uint16 usDataOffset = 0;
11657 wpt_uint16 usSendSize = 0;
11658 tSetMaxTxPwrReq halSetMaxTxPower;
11659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11660
11661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 -------------------------------------------------------------------------*/
11664 if (( NULL == pEventData ) ||
11665 ( NULL == pEventData->pEventData ) ||
11666 ( NULL == pEventData->pCBfnc ))
11667 {
11668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011673 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011674 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11677
11678 /*-----------------------------------------------------------------------
11679 Get message buffer
11680 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011681if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011682 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11683 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011684 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011685)))
11686 {
11687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11688 "Unable to get Set Max Tx Power req %x %x %x",
11689 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011692 }
11693
11694 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11695 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11696 WDI_MAC_ADDR_LEN);
11697
11698 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11699 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11700 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011701 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011702 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011703
11704 wpalMemoryCopy( pSendBuffer+usDataOffset,
11705 &halSetMaxTxPower.setMaxTxPwrParams,
11706 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011707
11708 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011709 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011710
11711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011712 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011713 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011714 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11715 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11716 WDI_SET_MAX_TX_POWER_RESP);
11717
Jeff Johnson295189b2012-06-20 16:38:30 -070011718}
11719
11720#ifdef WLAN_FEATURE_P2P
11721
11722/**
11723 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11724 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011725
11726 @param pWDICtx: pointer to the WLAN DAL context
11727 pEventData: pointer to the event information structure
11728
Jeff Johnson295189b2012-06-20 16:38:30 -070011729 @see
11730 @return Result of the function call
11731*/
11732WDI_Status
11733WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011734(
Jeff Johnson295189b2012-06-20 16:38:30 -070011735 WDI_ControlBlockType* pWDICtx,
11736 WDI_EventInfoType* pEventData
11737)
11738{
11739 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
11740 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011741 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011742 wpt_uint16 usDataOffset = 0;
11743 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011744 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11746
11747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011749 -------------------------------------------------------------------------*/
11750 if (( NULL == pEventData ) ||
11751 ( NULL == pEventData->pEventData) ||
11752 ( NULL == pEventData->pCBfnc))
11753 {
11754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011758 }
11759
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011761 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011762 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011763 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
11764 /*-----------------------------------------------------------------------
11765 Get message buffer
11766 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011767 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11768 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 sizeof(halSetP2PGONOAParams),
11770 &pSendBuffer, &usDataOffset, &usSendSize))||
11771 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
11772 {
11773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11774 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
11775 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
11776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011778 }
11779
Jeff Johnsone7245742012-09-05 17:12:55 -070011780 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070011782 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070011783 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
11784 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070011785 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011786 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011787 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011788 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011789 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011790 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011791 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
11793
Jeff Johnsone7245742012-09-05 17:12:55 -070011794 wpalMemoryCopy( pSendBuffer+usDataOffset,
11795 &halSetP2PGONOAParams,
11796 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011797
11798 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011799 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011800
11801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011802 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011804 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11805 wdiP2PGONOAReqRspCb, pEventData->pUserData,
11806 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011807}/*WDI_ProcessP2PGONOAReq*/
11808
11809#endif
11810
11811
11812/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070011814 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070011815 @param None
11816
11817 @see
11818 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070011819*/
11820void
11821WDI_SetPowerStateCb
11822(
11823 wpt_status status,
11824 unsigned int dxePhyAddr,
11825 void *pContext
11826)
11827{
11828 wpt_status wptStatus;
11829 WDI_ControlBlockType *pCB = NULL;
11830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
11831 if(eWLAN_PAL_STATUS_E_FAILURE == status )
11832 {
11833 //it shouldn't happen, put an error msg
11834 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011835 /*
11836 * Trigger the event to bring the Enter BMPS req function to come
11837 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070011838*/
11839 if( NULL != pContext )
11840 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011841 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070011842 }
11843 else
11844 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011845 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070011846 pCB = &gWDICb;
11847 }
11848 pCB->dxePhyAddr = dxePhyAddr;
11849 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
11850 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11851 {
11852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11853 "Failed to set an event");
11854
Jeff Johnsone7245742012-09-05 17:12:55 -070011855 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011856 }
11857 return;
11858}
11859
11860
11861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011862 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011863 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011864
11865 @param pWDICtx: pointer to the WLAN DAL context
11866 pEventData: pointer to the event information structure
11867
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 @see
11869 @return Result of the function call
11870*/
11871WDI_Status
11872WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011873(
Jeff Johnson295189b2012-06-20 16:38:30 -070011874 WDI_ControlBlockType* pWDICtx,
11875 WDI_EventInfoType* pEventData
11876)
11877{
Jeff Johnson43971f52012-07-17 12:26:56 -070011878 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011879 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011880 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 wpt_uint16 usDataOffset = 0;
11882 wpt_uint16 usSendSize = 0;
11883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11884
11885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 -------------------------------------------------------------------------*/
11888 if (( NULL == pEventData ) ||
11889 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
11890 {
11891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011893 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011894 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070011895 }
11896
11897 /*-----------------------------------------------------------------------
11898 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011901 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011902 0,
11903 &pSendBuffer, &usDataOffset, &usSendSize))||
11904 ( usSendSize < (usDataOffset )))
11905 {
11906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11907 "Unable to get send buffer in Enter IMPS req %x %x",
11908 pEventData, wdiEnterImpsRspCb);
11909 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011910 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070011911 }
11912
11913 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011914 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11915 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011916 {
11917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11918 "WDI Init failed to reset an event");
11919
Jeff Johnsone7245742012-09-05 17:12:55 -070011920 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011921 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070011922 }
11923
11924 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011925 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
11926 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
11927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11928 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
11929 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011930 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011931 }
Jeff Johnson295189b2012-06-20 16:38:30 -070011932
11933 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070011934 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011936 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11937 WDI_SET_POWER_STATE_TIMEOUT);
11938 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011939 {
11940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11941 "WDI Init failed to wait on an event");
11942
Jeff Johnsone7245742012-09-05 17:12:55 -070011943 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011944 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070011945 }
11946
11947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011948 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011950 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11951 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080011952
11953fail:
11954 // Release the message buffer so we don't leak
11955 wpalMemoryFree(pSendBuffer);
11956
11957failRequest:
11958 //WDA should have failure check to avoid the memory leak
11959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011960}/*WDI_ProcessEnterImpsReq*/
11961
11962/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011965
11966 @param pWDICtx: pointer to the WLAN DAL context
11967 pEventData: pointer to the event information structure
11968
Jeff Johnson295189b2012-06-20 16:38:30 -070011969 @see
11970 @return Result of the function call
11971*/
11972WDI_Status
11973WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011974(
Jeff Johnson295189b2012-06-20 16:38:30 -070011975 WDI_ControlBlockType* pWDICtx,
11976 WDI_EventInfoType* pEventData
11977)
11978{
11979 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 wpt_uint16 usDataOffset = 0;
11982 wpt_uint16 usSendSize = 0;
11983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11984
11985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 -------------------------------------------------------------------------*/
11988 if (( NULL == pEventData ) ||
11989 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
11990 {
11991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011995 }
11996
11997 /*-----------------------------------------------------------------------
11998 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011999 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012000 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012001 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012002 0,
12003 &pSendBuffer, &usDataOffset, &usSendSize))||
12004 ( usSendSize < (usDataOffset )))
12005 {
12006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12007 "Unable to get send buffer in Exit IMPS req %x %x",
12008 pEventData, wdiExitImpsRspCb);
12009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012011 }
12012
12013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012014 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012015 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12017 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012018}/*WDI_ProcessExitImpsReq*/
12019
12020/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012021 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012022 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012023
12024 @param pWDICtx: pointer to the WLAN DAL context
12025 pEventData: pointer to the event information structure
12026
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 @see
12028 @return Result of the function call
12029*/
12030WDI_Status
12031WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012032(
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 WDI_ControlBlockType* pWDICtx,
12034 WDI_EventInfoType* pEventData
12035)
12036{
12037 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12038 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012039 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012040 wpt_uint16 usDataOffset = 0;
12041 wpt_uint16 usSendSize = 0;
12042 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012043 wpt_status wptStatus;
12044
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12046
12047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 -------------------------------------------------------------------------*/
12050 if (( NULL == pEventData ) ||
12051 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12052 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12053 {
12054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012057 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 }
12059
12060 /*-----------------------------------------------------------------------
12061 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012064 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012065 sizeof(enterBmpsReq),
12066 &pSendBuffer, &usDataOffset, &usSendSize))||
12067 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12068 {
12069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12070 "Unable to get send buffer in Enter BMPS req %x %x %x",
12071 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12072 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012073 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012074 }
12075
12076 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012077 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12078 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 {
12080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12081 "WDI Init failed to reset an event");
12082
Jeff Johnsone7245742012-09-05 17:12:55 -070012083 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012084 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 }
12086
12087 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012088 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12089 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12090 {
12091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12092 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12093 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012094 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012095 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012096
12097/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012100 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12101 WDI_SET_POWER_STATE_TIMEOUT);
12102 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012103 {
12104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12105 "WDI Init failed to wait on an event");
12106
Jeff Johnsone7245742012-09-05 17:12:55 -070012107 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012108 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012109 }
12110
12111 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12112
12113 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12114 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12115 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12116 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12117
12118 // For CCX and 11R Roaming
12119 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12120 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12121 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12122
12123 wpalMemoryCopy( pSendBuffer+usDataOffset,
12124 &enterBmpsReq,
12125 sizeof(enterBmpsReq));
12126
12127 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012128 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012129
12130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012131 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012132 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12134 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012135
12136fail:
12137 // Release the message buffer so we don't leak
12138 wpalMemoryFree(pSendBuffer);
12139
12140failRequest:
12141 //WDA should have failure check to avoid the memory leak
12142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012143}/*WDI_ProcessEnterBmpsReq*/
12144
12145/**
12146 @brief Process Exit BMPS Request function (called when Main FSM
12147 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012148
12149 @param pWDICtx: pointer to the WLAN DAL context
12150 pEventData: pointer to the event information structure
12151
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 @see
12153 @return Result of the function call
12154*/
12155WDI_Status
12156WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012157(
Jeff Johnson295189b2012-06-20 16:38:30 -070012158 WDI_ControlBlockType* pWDICtx,
12159 WDI_EventInfoType* pEventData
12160)
12161{
12162 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12163 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012164 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012165 wpt_uint16 usDataOffset = 0;
12166 wpt_uint16 usSendSize = 0;
12167 tHalExitBmpsReqParams exitBmpsReq;
12168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12169
12170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012172 -------------------------------------------------------------------------*/
12173 if (( NULL == pEventData ) ||
12174 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12175 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12176 {
12177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012178 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012181 }
12182
12183 /*-----------------------------------------------------------------------
12184 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012186 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012187 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012188 sizeof(exitBmpsReq),
12189 &pSendBuffer, &usDataOffset, &usSendSize))||
12190 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12191 {
12192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12193 "Unable to get send buffer in Exit BMPS req %x %x %x",
12194 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012197 }
12198 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12199
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12201
Jeff Johnson295189b2012-06-20 16:38:30 -070012202 wpalMemoryCopy( pSendBuffer+usDataOffset,
12203 &exitBmpsReq,
12204 sizeof(exitBmpsReq));
12205
12206 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012208
12209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012212 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12213 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012214}/*WDI_ProcessExitBmpsReq*/
12215
12216/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012218 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012219
12220 @param pWDICtx: pointer to the WLAN DAL context
12221 pEventData: pointer to the event information structure
12222
Jeff Johnson295189b2012-06-20 16:38:30 -070012223 @see
12224 @return Result of the function call
12225*/
12226WDI_Status
12227WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012228(
Jeff Johnson295189b2012-06-20 16:38:30 -070012229 WDI_ControlBlockType* pWDICtx,
12230 WDI_EventInfoType* pEventData
12231)
12232{
12233 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12234 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012235 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012236 wpt_uint16 usDataOffset = 0;
12237 wpt_uint16 usSendSize = 0;
12238 tUapsdReqParams enterUapsdReq;
12239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12240
12241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012243 -------------------------------------------------------------------------*/
12244 if (( NULL == pEventData ) ||
12245 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12246 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12247 {
12248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 }
12253
12254 /*-----------------------------------------------------------------------
12255 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012258 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012259 sizeof(enterUapsdReq),
12260 &pSendBuffer, &usDataOffset, &usSendSize))||
12261 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12262 {
12263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12264 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12265 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 }
12269
12270 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12271 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12272 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12273 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12274 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12275 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12276 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12277 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012279
Jeff Johnsone7245742012-09-05 17:12:55 -070012280 wpalMemoryCopy( pSendBuffer+usDataOffset,
12281 &enterUapsdReq,
12282 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012283
12284 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012285 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012286
12287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12291 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012292}/*WDI_ProcessEnterUapsdReq*/
12293
12294/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012295 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012296 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012297
12298 @param pWDICtx: pointer to the WLAN DAL context
12299 pEventData: pointer to the event information structure
12300
Jeff Johnson295189b2012-06-20 16:38:30 -070012301 @see
12302 @return Result of the function call
12303*/
12304WDI_Status
12305WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012306(
Jeff Johnson295189b2012-06-20 16:38:30 -070012307 WDI_ControlBlockType* pWDICtx,
12308 WDI_EventInfoType* pEventData
12309)
12310{
12311 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012312 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012313 wpt_uint16 usDataOffset = 0;
12314 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012315 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12316 wpt_uint8 bssIdx = 0;
12317
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12319
12320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012321 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012322 -------------------------------------------------------------------------*/
12323 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012324 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012325 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12326 {
12327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012328 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 }
12332
12333 /*-----------------------------------------------------------------------
12334 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012336 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012338 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012340 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012341 {
12342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12343 "Unable to get send buffer in Exit UAPSD req %x %x",
12344 pEventData, wdiExitUapsdRspCb);
12345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012347 }
12348
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012349 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12350
12351 wpalMemoryCopy( pSendBuffer+usDataOffset,
12352 &bssIdx,
12353 sizeof(wpt_uint8));
12354
12355 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12356 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12357
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012359 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012361 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12362 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012363}/*WDI_ProcessExitUapsdReq*/
12364
12365/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012367 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012368
12369 @param pWDICtx: pointer to the WLAN DAL context
12370 pEventData: pointer to the event information structure
12371
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 @see
12373 @return Result of the function call
12374*/
12375WDI_Status
12376WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012377(
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 WDI_ControlBlockType* pWDICtx,
12379 WDI_EventInfoType* pEventData
12380)
12381{
12382 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12383 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012384 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012385 wpt_uint16 usDataOffset = 0;
12386 wpt_uint16 usSendSize = 0;
12387 tUapsdInfo uapsdAcParamsReq;
12388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12389
12390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 -------------------------------------------------------------------------*/
12393 if (( NULL == pEventData ) ||
12394 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12395 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12396 {
12397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012401 }
12402
12403 /*-----------------------------------------------------------------------
12404 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012405 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 sizeof(uapsdAcParamsReq),
12409 &pSendBuffer, &usDataOffset, &usSendSize))||
12410 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12411 {
12412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12413 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12414 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12415 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 }
12418
12419 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12420 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12421 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12422 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12423 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12424 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12425
Jeff Johnsone7245742012-09-05 17:12:55 -070012426 wpalMemoryCopy( pSendBuffer+usDataOffset,
12427 &uapsdAcParamsReq,
12428 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012429
12430 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012432
12433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12437 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012438}/*WDI_ProcessSetUapsdAcParamsReq*/
12439
12440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012443
12444 @param pWDICtx: pointer to the WLAN DAL context
12445 pEventData: pointer to the event information structure
12446
Jeff Johnson295189b2012-06-20 16:38:30 -070012447 @see
12448 @return Result of the function call
12449*/
12450WDI_Status
12451WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012452(
Jeff Johnson295189b2012-06-20 16:38:30 -070012453 WDI_ControlBlockType* pWDICtx,
12454 WDI_EventInfoType* pEventData
12455)
12456{
12457 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12458 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012459 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 wpt_uint16 usDataOffset = 0;
12461 wpt_uint16 usSendSize = 0;
12462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12463
12464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012466 -------------------------------------------------------------------------*/
12467 if (( NULL == pEventData ) ||
12468 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12469 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12470 {
12471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 }
12476
12477 /*-----------------------------------------------------------------------
12478 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012479 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12483 &pSendBuffer, &usDataOffset, &usSendSize))||
12484 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12485 {
12486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12487 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12488 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 }
12492
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 wpalMemoryCopy( pSendBuffer+usDataOffset,
12494 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12495 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012496
12497 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012499
12500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12504 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012505}/*WDI_ProcessUpdateUapsdParamsReq*/
12506
12507/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012508 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012510
12511 @param pWDICtx: pointer to the WLAN DAL context
12512 pEventData: pointer to the event information structure
12513
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 @see
12515 @return Result of the function call
12516*/
12517WDI_Status
12518WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012519(
Jeff Johnson295189b2012-06-20 16:38:30 -070012520 WDI_ControlBlockType* pWDICtx,
12521 WDI_EventInfoType* pEventData
12522)
12523{
12524 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12525 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012526 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012527 wpt_uint16 usDataOffset = 0;
12528 wpt_uint16 usSendSize = 0;
12529 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12530
12531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12532
12533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012535 -------------------------------------------------------------------------*/
12536 if (( NULL == pEventData ) ||
12537 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12538 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12539 {
12540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012544 }
12545
12546 /*-----------------------------------------------------------------------
12547 Get message buffer
12548 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 sizeof(halRxpFilterParams),
12551 &pSendBuffer, &usDataOffset, &usSendSize))||
12552 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12553 {
12554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12555 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12556 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 }
12560
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012562 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012563 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012564 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12565
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 wpalMemoryCopy( pSendBuffer+usDataOffset,
12567 &halRxpFilterParams,
12568 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012569
12570 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012572
12573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012574 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12577 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012578}/*WDI_ProcessConfigureRxpFilterReq*/
12579
12580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012581 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012582 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012583
12584 @param pWDICtx: pointer to the WLAN DAL context
12585 pEventData: pointer to the event information structure
12586
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 @see
12588 @return Result of the function call
12589*/
12590WDI_Status
12591WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012592(
Jeff Johnson295189b2012-06-20 16:38:30 -070012593 WDI_ControlBlockType* pWDICtx,
12594 WDI_EventInfoType* pEventData
12595)
12596{
12597 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12598 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012599 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012600 wpt_uint16 usDataOffset = 0;
12601 wpt_uint16 usSendSize = 0;
12602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12603
12604 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 -------------------------------------------------------------------------*/
12607 if (( NULL == pEventData ) ||
12608 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12609 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12610 {
12611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012612 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012615 }
12616
12617 /*-----------------------------------------------------------------------
12618 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012621 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12623 &pSendBuffer, &usDataOffset, &usSendSize))||
12624 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12625 {
12626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12627 "Unable to get send buffer in Set beacon filter req %x %x %x",
12628 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 }
12632
Jeff Johnsone7245742012-09-05 17:12:55 -070012633 wpalMemoryCopy( pSendBuffer+usDataOffset,
12634 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12635 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12636 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12637 &pwdiBeaconFilterParams->aFilters[0],
12638 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012639
12640 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012641 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012642
12643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012644 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012646 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12647 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012648}/*WDI_ProcessSetBeaconFilterReq*/
12649
12650/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012651 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012653
12654 @param pWDICtx: pointer to the WLAN DAL context
12655 pEventData: pointer to the event information structure
12656
Jeff Johnson295189b2012-06-20 16:38:30 -070012657 @see
12658 @return Result of the function call
12659*/
12660WDI_Status
12661WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012662(
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 WDI_ControlBlockType* pWDICtx,
12664 WDI_EventInfoType* pEventData
12665)
12666{
12667 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12668 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012669 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012670 wpt_uint16 usDataOffset = 0;
12671 wpt_uint16 usSendSize = 0;
12672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12673
12674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012676 -------------------------------------------------------------------------*/
12677 if (( NULL == pEventData ) ||
12678 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12679 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12680 {
12681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 }
12686
12687 /*-----------------------------------------------------------------------
12688 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012689 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012690 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012691 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012692 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12693 &pSendBuffer, &usDataOffset, &usSendSize))||
12694 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12695 {
12696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12697 "Unable to get send buffer in remove beacon filter req %x %x %x",
12698 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 }
12702
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 wpalMemoryCopy( pSendBuffer+usDataOffset,
12704 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12705 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012706
12707 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012708 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012709
12710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012711 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12714 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012715}
12716
12717/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012718 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012719 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012720
12721 @param pWDICtx: pointer to the WLAN DAL context
12722 pEventData: pointer to the event information structure
12723
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 @see
12725 @return Result of the function call
12726*/
12727WDI_Status
12728WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012729(
Jeff Johnson295189b2012-06-20 16:38:30 -070012730 WDI_ControlBlockType* pWDICtx,
12731 WDI_EventInfoType* pEventData
12732)
12733{
12734 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12735 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 wpt_uint16 usDataOffset = 0;
12738 wpt_uint16 usSendSize = 0;
12739 tHalRSSIThresholds rssiThresholdsReq;
12740 WDI_Status ret_status = 0;
12741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12742
12743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012745 -------------------------------------------------------------------------*/
12746 if (( NULL == pEventData ) ||
12747 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
12748 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
12749 {
12750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012754 }
12755
12756 /*-----------------------------------------------------------------------
12757 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012758 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012759 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 sizeof(rssiThresholdsReq),
12762 &pSendBuffer, &usDataOffset, &usSendSize))||
12763 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
12764 {
12765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12766 "Unable to get send buffer in remove beacon filter req %x %x %x",
12767 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
12768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012770 }
12771
Jeff Johnsone7245742012-09-05 17:12:55 -070012772 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070012774 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012775 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012776 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012777 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012778 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012779 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012780 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012781 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012782 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012783 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012784 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012785 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012786 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012787 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070012788 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012789 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070012790 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
12792
Jeff Johnsone7245742012-09-05 17:12:55 -070012793 wpalMemoryCopy( pSendBuffer+usDataOffset,
12794 &rssiThresholdsReq,
12795 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012796
12797 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012798 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012799
12800 /*-------------------------------------------------------------------------
12801 Send Set threshold req to HAL
12802 -------------------------------------------------------------------------*/
12803 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12804 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
12805 {
12806 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
12807 // req. Then as a result of processing the threshold cross ind, we trigger
12808 // a Set threshold req, then we need to indicate to WDI that it needs to
12809 // go to busy state as a result of the indication as we sent a req in the
12810 // same WDI context.
12811 // Hence expected state transition is to busy.
12812 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
12813 }
12814
12815 return ret_status;
12816}
12817
12818/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012819 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012820 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012821
12822 @param pWDICtx: pointer to the WLAN DAL context
12823 pEventData: pointer to the event information structure
12824
Jeff Johnson295189b2012-06-20 16:38:30 -070012825 @see
12826 @return Result of the function call
12827*/
12828WDI_Status
12829WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012830(
Jeff Johnson295189b2012-06-20 16:38:30 -070012831 WDI_ControlBlockType* pWDICtx,
12832 WDI_EventInfoType* pEventData
12833)
12834{
12835 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
12836 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 wpt_uint16 usDataOffset = 0;
12839 wpt_uint16 usSendSize = 0;
12840 tHalHostOffloadReq hostOffloadParams;
12841 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012842 wpt_uint8 ucCurrentBSSSesIdx = 0;
12843 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012844
12845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12846
12847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012849 -------------------------------------------------------------------------*/
12850 if (( NULL == pEventData ) ||
12851 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
12852 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
12853 {
12854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012857 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 }
12859
12860 /*-----------------------------------------------------------------------
12861 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
12866 &pSendBuffer, &usDataOffset, &usSendSize))||
12867 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
12868 {
12869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12870 "Unable to get send buffer in host offload req %x %x %x",
12871 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
12872 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012873 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 }
12875
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012876 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12877 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
12878 &pBSSSes);
12879 if ( NULL == pBSSSes )
12880 {
12881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012882 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012883 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012884 }
12885
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
12887 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070012888
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
12890 {
12891 // ARP Offload
12892 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
12893 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
12894 4);
12895 }
12896 else
12897 {
12898 // NS Offload
12899 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
12900 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
12901 16);
12902
12903#ifdef WLAN_NS_OFFLOAD
12904 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
12905 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
12906 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
12907 16);
12908 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
12909 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
12910 16);
12911 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
12912 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
12913 16);
12914 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
12915 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
12916 16);
12917 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
12918 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
12919 6);
12920 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
12921 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
12922 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070012923
Jeff Johnson295189b2012-06-20 16:38:30 -070012924#endif // WLAN_NS_OFFLOAD
12925 }
12926
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012927 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
12928
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 // copy hostOffloadParams into pSendBuffer
12930 wpalMemoryCopy( pSendBuffer+usDataOffset,
12931 &hostOffloadParams,
12932 sizeof(hostOffloadParams));
12933
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012934 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012936 // copy nsOffloadParams into pSendBuffer
12937 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070012938 &nsOffloadParams,
12939 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012940 }
12941 else
12942 {
12943#ifdef WLAN_NS_OFFLOAD
12944 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
12945 {
12946 // copy nsOffloadParams into pSendBuffer
12947 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
12948 &nsOffloadParams,
12949 sizeof(nsOffloadParams));
12950 }
12951#endif
12952 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012953
12954 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012955 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012956
12957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012960 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12961 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012962
12963fail:
12964 // Release the message buffer so we don't leak
12965 wpalMemoryFree(pSendBuffer);
12966
12967failRequest:
12968 //WDA should have failure check to avoid the memory leak
12969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012970}/*WDI_ProcessHostOffloadReq*/
12971
12972/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012973 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012975
12976 @param pWDICtx: pointer to the WLAN DAL context
12977 pEventData: pointer to the event information structure
12978
Jeff Johnson295189b2012-06-20 16:38:30 -070012979 @see
12980 @return Result of the function call
12981*/
12982WDI_Status
12983WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012984(
Jeff Johnson295189b2012-06-20 16:38:30 -070012985 WDI_ControlBlockType* pWDICtx,
12986 WDI_EventInfoType* pEventData
12987)
12988{
12989 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
12990 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012991 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012992 wpt_uint16 usDataOffset = 0;
12993 wpt_uint16 usSendSize = 0;
12994 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012995 wpt_uint8 ucCurrentBSSSesIdx = 0;
12996 WDI_BSSSessionType* pBSSSes = NULL;
12997
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12999
13000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013002 -------------------------------------------------------------------------*/
13003 if (( NULL == pEventData ) ||
13004 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13005 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13006 {
13007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13008 "Invalid parameters in Keep Alive req");
13009 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013010 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013011 }
13012
13013 /*-----------------------------------------------------------------------
13014 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013015 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013016 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013017 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013018 sizeof(keepAliveReq),
13019 &pSendBuffer, &usDataOffset, &usSendSize))||
13020 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13021 {
13022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13023 "Unable to get send buffer in keep alive req %x %x %x",
13024 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13025 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013026 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 }
13028
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013029 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13030 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13031 &pBSSSes);
13032 if ( NULL == pBSSSes )
13033 {
13034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013035 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013036 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013037 }
13038
Jeff Johnson295189b2012-06-20 16:38:30 -070013039 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13040 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13041
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013042 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013043
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13045 {
13046 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13047 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13048 HAL_IPV4_ADDR_LEN);
13049 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13050 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013051 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 wpalMemoryCopy(keepAliveReq.destMacAddr,
13053 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13054 HAL_MAC_ADDR_LEN);
13055 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013056
13057 wpalMemoryCopy( pSendBuffer+usDataOffset,
13058 &keepAliveReq,
13059 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013060
13061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13062 "Process keep alive req %d",sizeof(keepAliveReq));
13063
13064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13065 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13066
13067 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013068 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013069
13070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13071 "Sending keep alive req to HAL");
13072
13073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013074 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013075 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013076 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13077 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013078
13079fail:
13080 // Release the message buffer so we don't leak
13081 wpalMemoryFree(pSendBuffer);
13082
13083failRequest:
13084 //WDA should have failure check to avoid the memory leak
13085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013086}/*WDI_ProcessKeepAliveReq*/
13087
13088
13089/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013092
13093 @param pWDICtx: pointer to the WLAN DAL context
13094 pEventData: pointer to the event information structure
13095
Jeff Johnson295189b2012-06-20 16:38:30 -070013096 @see
13097 @return Result of the function call
13098*/
13099WDI_Status
13100WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013101(
Jeff Johnson295189b2012-06-20 16:38:30 -070013102 WDI_ControlBlockType* pWDICtx,
13103 WDI_EventInfoType* pEventData
13104)
13105{
13106 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13107 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013108 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 wpt_uint16 usDataOffset = 0;
13110 wpt_uint16 usSendSize = 0;
13111 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013112 wpt_uint8 ucCurrentBSSSesIdx = 0;
13113 WDI_BSSSessionType* pBSSSes = NULL;
13114
Jeff Johnson295189b2012-06-20 16:38:30 -070013115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13116
13117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013118 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 -------------------------------------------------------------------------*/
13120 if (( NULL == pEventData ) ||
13121 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13122 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13123 {
13124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013125 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013126 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013127 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013128 }
13129
13130 /*-----------------------------------------------------------------------
13131 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013132 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013133 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013135 sizeof(wowlAddBcPtrnReq),
13136 &pSendBuffer, &usDataOffset, &usSendSize))||
13137 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13138 {
13139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13140 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13141 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13142 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013143 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 }
13145
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013146 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13147 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13148 &pBSSSes);
13149 if ( NULL == pBSSSes )
13150 {
13151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013152 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013153 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013154 }
13155
Jeff Johnsone7245742012-09-05 17:12:55 -070013156 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013160 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013161 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013163 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13164
13165 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13166 {
13167 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13168 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13169 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13170 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13171 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13172 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13173 }
13174 else
13175 {
13176 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13177 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13178 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13179 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13180 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13181 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13182
13183 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13184 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13185 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13186 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13187 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13188 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13189 }
13190
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013191 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13192
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 wpalMemoryCopy( pSendBuffer+usDataOffset,
13194 &wowlAddBcPtrnReq,
13195 sizeof(wowlAddBcPtrnReq));
13196
13197 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013199
13200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013201 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13204 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013205fail:
13206 // Release the message buffer so we don't leak
13207 wpalMemoryFree(pSendBuffer);
13208
13209failRequest:
13210 //WDA should have failure check to avoid the memory leak
13211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013212}/*WDI_ProcessWowlAddBcPtrnReq*/
13213
13214/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013215 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013217
13218 @param pWDICtx: pointer to the WLAN DAL context
13219 pEventData: pointer to the event information structure
13220
Jeff Johnson295189b2012-06-20 16:38:30 -070013221 @see
13222 @return Result of the function call
13223*/
13224WDI_Status
13225WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013226(
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 WDI_ControlBlockType* pWDICtx,
13228 WDI_EventInfoType* pEventData
13229)
13230{
13231 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13232 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013233 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013234 wpt_uint16 usDataOffset = 0;
13235 wpt_uint16 usSendSize = 0;
13236 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013237 wpt_uint8 ucCurrentBSSSesIdx = 0;
13238 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13240
13241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013243 -------------------------------------------------------------------------*/
13244 if (( NULL == pEventData ) ||
13245 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13246 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13247 {
13248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013251 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013252 }
13253
13254 /*-----------------------------------------------------------------------
13255 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013256 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013258 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 sizeof(wowlDelBcPtrnReq),
13260 &pSendBuffer, &usDataOffset, &usSendSize))||
13261 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13262 {
13263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13264 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13265 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13266 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013267 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 }
13269
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013270 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13271 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13272 &pBSSSes);
13273 if ( NULL == pBSSSes )
13274 {
13275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013276 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013277 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013278 }
13279
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013282
13283 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13284
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 wpalMemoryCopy( pSendBuffer+usDataOffset,
13286 &wowlDelBcPtrnReq,
13287 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013288
13289 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013291
13292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13296 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013297
13298fail:
13299 // Release the message buffer so we don't leak
13300 wpalMemoryFree(pSendBuffer);
13301
13302failRequest:
13303 //WDA should have failure check to avoid the memory leak
13304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013305}/*WDI_ProcessWowlDelBcPtrnReq*/
13306
13307/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013308 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013309 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013310
13311 @param pWDICtx: pointer to the WLAN DAL context
13312 pEventData: pointer to the event information structure
13313
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 @see
13315 @return Result of the function call
13316*/
13317WDI_Status
13318WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013319(
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 WDI_ControlBlockType* pWDICtx,
13321 WDI_EventInfoType* pEventData
13322)
13323{
13324 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13325 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013326 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013327 wpt_uint16 usDataOffset = 0;
13328 wpt_uint16 usSendSize = 0;
13329 tHalWowlEnterParams wowlEnterReq;
13330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13331
13332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013334 -------------------------------------------------------------------------*/
13335 if (( NULL == pEventData ) ||
13336 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13337 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13338 {
13339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013340 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013343 }
13344
13345 /*-----------------------------------------------------------------------
13346 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013347 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013348 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013349 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 sizeof(wowlEnterReq),
13351 &pSendBuffer, &usDataOffset, &usSendSize))||
13352 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13353 {
13354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13355 "Unable to get send buffer in Wowl enter req %x %x %x",
13356 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013359 }
13360
Jeff Johnsone7245742012-09-05 17:12:55 -070013361 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013362 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013363 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013364 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013367 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013371 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013373 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013375 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013376 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13377
13378#ifdef WLAN_WAKEUP_EVENTS
13379 wowlEnterReq.ucWoWEAPIDRequestEnable =
13380 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13381
13382 wowlEnterReq.ucWoWEAPOL4WayEnable =
13383 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13384
13385 wowlEnterReq.ucWowNetScanOffloadMatch =
13386 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13387
13388 wowlEnterReq.ucWowGTKRekeyError =
13389 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13390
13391 wowlEnterReq.ucWoWBSSConnLoss =
13392 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13393#endif // WLAN_WAKEUP_EVENTS
13394
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013395 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13396
Jeff Johnson295189b2012-06-20 16:38:30 -070013397 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13398 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13399 sizeof(tSirMacAddr));
13400
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 wpalMemoryCopy( pSendBuffer+usDataOffset,
13402 &wowlEnterReq,
13403 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013404
13405 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013406 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013407
13408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013409 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13412 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013413}/*WDI_ProcessWowlEnterReq*/
13414
13415/**
13416 @brief Process Wowl exit Request function (called when Main FSM
13417 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013418
13419 @param pWDICtx: pointer to the WLAN DAL context
13420 pEventData: pointer to the event information structure
13421
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 @see
13423 @return Result of the function call
13424*/
13425WDI_Status
13426WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013427(
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 WDI_ControlBlockType* pWDICtx,
13429 WDI_EventInfoType* pEventData
13430)
13431{
13432 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013433 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 wpt_uint16 usDataOffset = 0;
13436 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013437 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13439
13440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 -------------------------------------------------------------------------*/
13443 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013444 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13446 {
13447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013451 }
13452
13453 /*-----------------------------------------------------------------------
13454 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013455 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013458 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013459 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013460 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 {
13462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13463 "Unable to get send buffer in Wowl Exit req %x %x",
13464 pEventData, wdiWowlExitCb);
13465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 }
13468
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013469 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13470
13471 wpalMemoryCopy( pSendBuffer+usDataOffset,
13472 &wowlExitparams,
13473 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013477 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13478 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013479}/*WDI_ProcessWowlExitReq*/
13480
13481/**
13482 @brief Process Configure Apps Cpu Wakeup State Request function
13483 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013484
13485 @param pWDICtx: pointer to the WLAN DAL context
13486 pEventData: pointer to the event information structure
13487
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 @see
13489 @return Result of the function call
13490*/
13491WDI_Status
13492WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013493(
Jeff Johnson295189b2012-06-20 16:38:30 -070013494 WDI_ControlBlockType* pWDICtx,
13495 WDI_EventInfoType* pEventData
13496)
13497{
13498 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13499 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 wpt_uint16 usDataOffset = 0;
13502 wpt_uint16 usSendSize = 0;
13503 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13505
13506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013508 -------------------------------------------------------------------------*/
13509 if (( NULL == pEventData ) ||
13510 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13511 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13512 {
13513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 }
13518
13519 /*-----------------------------------------------------------------------
13520 Get message buffer
13521 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013522 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 sizeof(halCfgAppsCpuWakeupStateReqParams),
13524 &pSendBuffer, &usDataOffset, &usSendSize))||
13525 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13526 {
13527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13528 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13529 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13530 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013531 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013532 }
13533
Jeff Johnsone7245742012-09-05 17:12:55 -070013534 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013535 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13536
Jeff Johnsone7245742012-09-05 17:12:55 -070013537 wpalMemoryCopy( pSendBuffer+usDataOffset,
13538 &halCfgAppsCpuWakeupStateReqParams,
13539 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013540
13541 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013543
13544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013545 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013546 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013547 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13548 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13549 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013550}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13551
13552#ifdef WLAN_FEATURE_VOWIFI_11R
13553/**
13554 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13555 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013556
13557 @param pWDICtx: pointer to the WLAN DAL context
13558 pEventData: pointer to the event information structure
13559
Jeff Johnson295189b2012-06-20 16:38:30 -070013560 @see
13561 @return Result of the function call
13562*/
13563WDI_Status
13564WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013565(
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 WDI_ControlBlockType* pWDICtx,
13567 WDI_EventInfoType* pEventData
13568)
13569{
13570 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13571 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013575 wpt_uint16 usDataOffset = 0;
13576 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013577 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 wpt_macAddr macBSSID;
13579 tAggrAddTsReq halAggrAddTsReq;
13580 int i;
13581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13582
13583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013585 -------------------------------------------------------------------------*/
13586 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13587 ( NULL == pEventData->pCBfnc ))
13588 {
13589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013593 }
13594 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13595 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13596 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13597 /*-------------------------------------------------------------------------
13598 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013599 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013600 -------------------------------------------------------------------------*/
13601 wpalMutexAcquire(&pWDICtx->wptMutex);
13602
13603 /*------------------------------------------------------------------------
13604 Find the BSS for which the request is made and identify WDI session
13605 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013606 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13607 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 &macBSSID))
13609 {
13610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13611 "This station does not exist in the WDI Station Table %d");
13612 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 }
13615
Jeff Johnsone7245742012-09-05 17:12:55 -070013616 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13617 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13620 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13621 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013622
13623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013624 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013625 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013626
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 /*------------------------------------------------------------------------
13628 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013629 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013630 ------------------------------------------------------------------------*/
13631 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13632 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13634 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13635 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013636
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 }
13641
13642 wpalMutexRelease(&pWDICtx->wptMutex);
13643 /*-----------------------------------------------------------------------
13644 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013645 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013646 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013647 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013648 sizeof(tAggrAddTsParams),
13649 &pSendBuffer, &usDataOffset, &usSendSize))||
13650 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13651 {
13652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13653 "Unable to get send buffer in set bss key req %x %x %x",
13654 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13655 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 }
13658
Jeff Johnsone7245742012-09-05 17:12:55 -070013659 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013660 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013661 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013662 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13663
13664 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13665 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013666 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013667 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013669 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013671 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13672 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013673 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013674 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13675 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13678 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013679 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013680 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13681 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013682 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13684 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013686 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13687 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013688 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013689 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13690 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013691 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13693 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013694 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013695 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013696 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013698
13699
13700 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013702 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013703 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013704 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013705 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013706 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013710 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013711 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013712 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013713 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013720 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013721 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013722 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013724 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013726 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013728 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13730 }
13731
Jeff Johnsone7245742012-09-05 17:12:55 -070013732 wpalMemoryCopy( pSendBuffer+usDataOffset,
13733 &halAggrAddTsReq,
13734 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013735
13736 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013738
13739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013740 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013742 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013743 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070013744 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013745}/*WDI_ProcessAggrAddTSpecReq*/
13746#endif /* WLAN_FEATURE_VOWIFI_11R */
13747
13748/**
13749 @brief Process Shutdown Request function (called when Main FSM
13750 allows it)
13751
13752 @param pWDICtx: pointer to the WLAN DAL context
13753 pEventData: pointer to the event information structure
13754
13755 @see
13756 @return Result of the function call
13757*/
13758WDI_Status
13759WDI_ProcessShutdownReq
13760(
13761 WDI_ControlBlockType* pWDICtx,
13762 WDI_EventInfoType* pEventData
13763 )
13764{
13765 wpt_status wptStatus;
13766
13767
13768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13769
13770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013772 -------------------------------------------------------------------------*/
13773 if ( NULL == pEventData )
13774 {
13775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 WDI_ASSERT(0);
13778 return WDI_STATUS_E_FAILURE;
13779 }
13780
13781 wpalMutexAcquire(&pWDICtx->wptMutex);
13782
13783
13784 gWDIInitialized = eWLAN_PAL_FALSE;
13785 /*! TO DO: stop the data services */
13786 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13787 {
13788 /*Stop the STA Table !UT- check this logic again
13789 It is safer to do it here than on the response - because a stop is imminent*/
13790 WDI_STATableStop(pWDICtx);
13791
13792 /* Stop Transport Driver, DXE */
13793 WDTS_Stop(pWDICtx);
13794 }
13795
13796 /*Clear all pending request*/
13797 WDI_ClearPendingRequests(pWDICtx);
13798 /* Close Data transport*/
13799 /* FTM mode does not open Data Path */
13800 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13801 {
13802 WDTS_Close(pWDICtx);
13803 }
13804 /*Close the STA Table !UT- check this logic again*/
13805 WDI_STATableClose(pWDICtx);
13806 /*close the PAL */
13807 wptStatus = wpalClose(pWDICtx->pPALContext);
13808 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13809 {
13810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13811 "Failed to wpal Close %d", wptStatus);
13812 WDI_ASSERT(0);
13813 }
13814
13815 /*Transition back to init state*/
13816 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
13817
13818 wpalMutexRelease(&pWDICtx->wptMutex);
13819
13820 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013821 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070013822
13823
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013825}/*WDI_ProcessShutdownReq*/
13826
13827/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013828 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070013829========================================================================*/
13830
13831/**
13832 @brief Process Start Response function (called when a response
13833 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013834
13835 @param pWDICtx: pointer to the WLAN DAL context
13836 pEventData: pointer to the event information structure
13837
Jeff Johnson295189b2012-06-20 16:38:30 -070013838 @see
13839 @return Result of the function call
13840*/
13841WDI_Status
13842WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013843(
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 WDI_ControlBlockType* pWDICtx,
13845 WDI_EventInfoType* pEventData
13846)
13847{
13848 WDI_StartRspParamsType wdiRspParams;
13849 WDI_StartRspCb wdiStartRspCb = NULL;
13850
13851 tHalMacStartRspParams* startRspParams;
13852
13853#ifndef HAL_SELF_STA_PER_BSS
13854 WDI_AddStaParams wdiAddSTAParam = {0};
13855#endif
13856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13857
Jeff Johnsone7245742012-09-05 17:12:55 -070013858 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013860 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013861 -------------------------------------------------------------------------*/
13862 if (( NULL == pEventData ) ||
13863 ( NULL == pEventData->pEventData) ||
13864 ( NULL == wdiStartRspCb ))
13865 {
13866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 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 Extract response and send it to UMAC
13874 -------------------------------------------------------------------------*/
13875 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
13876 {
13877 // not enough data was received
13878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13879 "Invalid response length in Start Resp Expect %x Rcvd %x",
13880 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
13881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013883 }
13884
13885 /*-------------------------------------------------------------------------
13886 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013887 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013888 -------------------------------------------------------------------------*/
13889 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
13890
13891 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
13892 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
13893 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
13894 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
13895 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
13896 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
13897 wdiRspParams.wlanReportedVersion.major =
13898 startRspParams->wcnssWlanVersion.major;
13899 wdiRspParams.wlanReportedVersion.minor =
13900 startRspParams->wcnssWlanVersion.minor;
13901 wdiRspParams.wlanReportedVersion.version =
13902 startRspParams->wcnssWlanVersion.version;
13903 wdiRspParams.wlanReportedVersion.revision =
13904 startRspParams->wcnssWlanVersion.revision;
13905 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
13906 startRspParams->wcnssCrmVersionString,
13907 sizeof(wdiRspParams.wcnssSoftwareVersion));
13908 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
13909 startRspParams->wcnssWlanVersionString,
13910 sizeof(wdiRspParams.wcnssHardwareVersion));
13911 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
13912
Pratik Bhalgatd4404592012-11-22 17:49:14 +053013913 /*Save the HAL Version*/
13914 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
13915
Jeff Johnson295189b2012-06-20 16:38:30 -070013916 wpalMutexAcquire(&pWDICtx->wptMutex);
13917 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
13918 {
13919 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
13920
13921 /*Cache the start response for further use*/
13922 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070013923 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013924 sizeof(pWDICtx->wdiCachedStartRspParams));
13925
13926 }
13927 else
13928 {
13929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13930 "Failed to start device with status %s(%d)",
13931 WDI_getHALStatusMsgString(startRspParams->status),
13932 startRspParams->status);
13933
13934 /*Set the expected state transition to stopped - because the start has
13935 failed*/
13936 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13937
13938 wpalMutexRelease(&pWDICtx->wptMutex);
13939
13940 /*Notify UMAC*/
13941 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070013942
Jeff Johnson295189b2012-06-20 16:38:30 -070013943 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
13944
13945 /*Although the response is an error - it was processed by our function
13946 so as far as the caller is concerned this is a succesful reponse processing*/
13947 return WDI_STATUS_SUCCESS;
13948 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013949
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 wpalMutexRelease(&pWDICtx->wptMutex);
13951
13952 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
13953 {
13954 /* FTM mode does not need to execute below */
13955 /* Notify UMAC */
13956 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13957 return WDI_STATUS_SUCCESS;
13958 }
13959
13960 /* START the Data transport */
13961 WDTS_startTransport(pWDICtx);
13962
13963 /*Start the STA Table !- check this logic again*/
13964 WDI_STATableStart(pWDICtx);
13965
13966#ifndef HAL_SELF_STA_PER_BSS
13967 /* Store the Self STA Index */
13968 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
13969
13970 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
13971 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
13972 WDI_MAC_ADDR_LEN);
13973
13974 /* At this point add the self-STA */
13975
13976 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
13977 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
13978 /*! TO DO: wdiAddSTAParam.dpuSig */
13979 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
13980 /*! TO DO: wdiAddSTAParam.ucHTCapable */
13981 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
13982
13983 //all DPU indices are the same for self STA
13984 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
13985 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070013986 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
13988 WDI_MAC_ADDR_LEN);
13989 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
13990 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
13991
13992 /* Note: Since we don't get an explicit config STA request for self STA, we
13993 add the self STA upon receiving the Start response message. But the
13994 self STA entry in the table is deleted when WDI gets an explicit delete STA
13995 request */
13996 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
13997#endif
13998
13999 /*Notify UMAC*/
14000 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14001
Jeff Johnsone7245742012-09-05 17:12:55 -070014002 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014003}/*WDI_ProcessStartRsp*/
14004
14005
14006/**
14007 @brief Process Stop Response function (called when a response
14008 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014009
14010 @param pWDICtx: pointer to the WLAN DAL context
14011 pEventData: pointer to the event information structure
14012
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 @see
14014 @return Result of the function call
14015*/
14016WDI_Status
14017WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014018(
Jeff Johnson295189b2012-06-20 16:38:30 -070014019 WDI_ControlBlockType* pWDICtx,
14020 WDI_EventInfoType* pEventData
14021)
14022{
14023 WDI_Status wdiStatus;
14024 WDI_StopRspCb wdiStopRspCb = NULL;
14025
Jeff Johnsone7245742012-09-05 17:12:55 -070014026 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14028
Jeff Johnsone7245742012-09-05 17:12:55 -070014029 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014032 -------------------------------------------------------------------------*/
14033 if (( NULL == pEventData ) ||
14034 ( NULL == pEventData->pEventData) ||
14035 ( NULL == wdiStopRspCb ))
14036 {
14037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014041 }
14042
14043 /*-------------------------------------------------------------------------
14044 Extract response and send it to UMAC
14045 -------------------------------------------------------------------------*/
14046 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14047 {
14048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14049 "Invalid response length in Stop Resp %x %x",
14050 pEventData->uEventDataSize);
14051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014053 }
14054
14055 /*-------------------------------------------------------------------------
14056 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014057 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014059 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14060 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 sizeof(halMacStopRspMsg.stopRspParams));
14062
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014064
14065 wpalMutexAcquire(&pWDICtx->wptMutex);
14066
14067 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014068 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014069 --------------------------------------------------------------------------*/
14070 if ( WDI_STATUS_SUCCESS != wdiStatus )
14071 {
14072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14073 "Failed to stop the device with status %s (%d)",
14074 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14075 halMacStopRspMsg.stopRspParams.status);
14076
Jeff Johnsone7245742012-09-05 17:12:55 -070014077 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14078
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014081 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014082
Jeff Johnson295189b2012-06-20 16:38:30 -070014083 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14084
14085 /*Transition now as WDI may get preempted imediately after it sends
14086 up the Stop Response and it will not get to process the state transition
14087 from Main Rsp function*/
14088 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14089 wpalMutexRelease(&pWDICtx->wptMutex);
14090
14091 /*! TO DO: - STOP the Data transport */
14092
14093 /*Notify UMAC*/
14094 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14095
Jeff Johnsone7245742012-09-05 17:12:55 -070014096 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014097}/*WDI_ProcessStopRsp*/
14098
14099/**
14100 @brief Process Close Rsp function (called when a response
14101 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014102
14103 @param pWDICtx: pointer to the WLAN DAL context
14104 pEventData: pointer to the event information structure
14105
Jeff Johnson295189b2012-06-20 16:38:30 -070014106 @see
14107 @return Result of the function call
14108*/
14109WDI_Status
14110WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014111(
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 WDI_ControlBlockType* pWDICtx,
14113 WDI_EventInfoType* pEventData
14114)
14115{
14116 /*There is no close response comming from HAL - function just kept for
14117 simmetry */
14118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014120}/*WDI_ProcessCloseRsp*/
14121
14122
14123/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014124 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014125============================================================================*/
14126
14127/**
14128 @brief Process Init Scan Rsp function (called when a response
14129 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014130
14131 @param pWDICtx: pointer to the WLAN DAL context
14132 pEventData: pointer to the event information structure
14133
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 @see
14135 @return Result of the function call
14136*/
14137WDI_Status
14138WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014139(
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 WDI_ControlBlockType* pWDICtx,
14141 WDI_EventInfoType* pEventData
14142)
14143{
14144 WDI_Status wdiStatus;
14145 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014146 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014147 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14149
14150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014152 -------------------------------------------------------------------------*/
14153 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14154 ( NULL == pEventData->pEventData))
14155 {
14156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 }
14161
14162 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14163 if( NULL == wdiInitScanRspCb)
14164 {
14165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014166 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 }
14170
14171 /*-------------------------------------------------------------------------
14172 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014173 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14176 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014177 sizeof(halInitScanRspMsg.initScanRspParams));
14178
Jeff Johnsone7245742012-09-05 17:12:55 -070014179 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014180
14181 if ( pWDICtx->bInBmps )
14182 {
14183 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014184 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14185 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14187 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14188 WDI_ASSERT(0);
14189 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014190 }
14191
14192 /*Notify UMAC*/
14193 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14194
Jeff Johnsone7245742012-09-05 17:12:55 -070014195 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014196}/*WDI_ProcessInitScanRsp*/
14197
14198
14199/**
14200 @brief Process Start Scan Rsp function (called when a response
14201 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014202
14203 @param pWDICtx: pointer to the WLAN DAL context
14204 pEventData: pointer to the event information structure
14205
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 @see
14207 @return Result of the function call
14208*/
14209WDI_Status
14210WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014211(
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 WDI_ControlBlockType* pWDICtx,
14213 WDI_EventInfoType* pEventData
14214)
14215{
14216 WDI_StartScanRspParamsType wdiStartScanParams;
14217 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014218
14219 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14221
14222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014224 -------------------------------------------------------------------------*/
14225 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14226 ( NULL == pEventData->pEventData))
14227 {
14228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 }
14233
14234 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14235 if( NULL == wdiStartScanRspCb)
14236 {
14237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014238 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 }
14242
14243 /*-------------------------------------------------------------------------
14244 Extract response and send it to UMAC
14245 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014246 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14247 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 sizeof(halStartScanRspMsg.startScanRspParams));
14249
14250 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14251 halStartScanRspMsg.startScanRspParams.status);
14252#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014253 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 halStartScanRspMsg.startScanRspParams.startTSF,
14257 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014258#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014259
14260 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14261 {
14262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14263 "Start scan failed with status %s (%d)",
14264 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14265 halStartScanRspMsg.startScanRspParams.status);
14266 /* send the status to UMAC, don't return from here*/
14267 }
14268
14269 /*Notify UMAC*/
14270 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14271
Jeff Johnsone7245742012-09-05 17:12:55 -070014272 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014273
14274}/*WDI_ProcessStartScanRsp*/
14275
14276
14277/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014278 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014280
14281 @param pWDICtx: pointer to the WLAN DAL context
14282 pEventData: pointer to the event information structure
14283
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 @see
14285 @return Result of the function call
14286*/
14287WDI_Status
14288WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014289(
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 WDI_ControlBlockType* pWDICtx,
14291 WDI_EventInfoType* pEventData
14292)
14293{
14294 WDI_Status wdiStatus;
14295 tHalEndScanRspMsg halEndScanRspMsg;
14296 WDI_EndScanRspCb wdiEndScanRspCb;
14297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14298
14299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014301 -------------------------------------------------------------------------*/
14302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14303 ( NULL == pEventData->pEventData))
14304 {
14305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014309 }
14310
14311 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14312
14313 /*-------------------------------------------------------------------------
14314 Extract response and send it to UMAC
14315 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014316 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14317 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 sizeof(halEndScanRspMsg.endScanRspParams));
14319
Jeff Johnsone7245742012-09-05 17:12:55 -070014320 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014321
14322 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14323 {
14324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14325 "End Scan failed with status %s (%d )",
14326 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14327 halEndScanRspMsg.endScanRspParams.status);
14328 /* send the status to UMAC, don't return from here*/
14329 }
14330
14331 /*Notify UMAC*/
14332 wdiEndScanRspCb( 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_ProcessEndScanRsp*/
14336
14337
14338/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 @brief Process Finish Scan 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_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014350(
Jeff Johnson295189b2012-06-20 16:38:30 -070014351 WDI_ControlBlockType* pWDICtx,
14352 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014353)
Jeff Johnson295189b2012-06-20 16:38:30 -070014354{
14355 WDI_Status wdiStatus;
14356 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014357
14358 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14360
14361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 -------------------------------------------------------------------------*/
14364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14365 ( NULL == pEventData->pEventData))
14366 {
14367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014371 }
14372
14373 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14374
14375 /*-------------------------------------------------------------------------
14376 Extract response and send it to UMAC
14377 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14379 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14381
Jeff Johnsone7245742012-09-05 17:12:55 -070014382 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014383
14384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 halFinishScanRspMsg.finishScanRspParams.status);
14387
14388 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14389 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14390 {
14391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14392 "Finish Scan failed with status %s (%d)",
14393 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14394 halFinishScanRspMsg.finishScanRspParams.status);
14395 /* send the status to UMAC, don't return from here*/
14396 }
14397
14398 /*Notify UMAC*/
14399 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14400
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014402}/*WDI_ProcessFinishScanRsp*/
14403
14404/**
14405 @brief Process Join Response function (called when a response
14406 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014407
14408 @param pWDICtx: pointer to the WLAN DAL context
14409 pEventData: pointer to the event information structure
14410
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 @see
14412 @return Result of the function call
14413*/
14414WDI_Status
14415WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014416(
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 WDI_ControlBlockType* pWDICtx,
14418 WDI_EventInfoType* pEventData
14419)
14420{
14421 WDI_Status wdiStatus;
14422 WDI_JoinRspCb wdiJoinRspCb;
14423 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014424
14425 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14427
14428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 -------------------------------------------------------------------------*/
14431 if (( NULL == pWDICtx ) ||
14432 ( NULL == pWDICtx->pfncRspCB ) ||
14433 ( NULL == pEventData ) ||
14434 ( NULL == pEventData->pEventData))
14435 {
14436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 }
14441
14442 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14443
14444 /*-------------------------------------------------------------------------
14445 Extract response and send it to UMAC
14446 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14448 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 sizeof(halJoinRspMsg.joinRspParams));
14450
Jeff Johnsone7245742012-09-05 17:12:55 -070014451 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014452
14453 wpalMutexAcquire(&pWDICtx->wptMutex);
14454
14455 /*-----------------------------------------------------------------------
14456 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014459 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014460 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14461 {
14462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14464 "association no longer in progress %d - mysterious HAL response",
14465 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014466
Jeff Johnsone7245742012-09-05 17:12:55 -070014467 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014469 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014470 }
14471
14472 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14473
14474 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014475 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 -----------------------------------------------------------------------*/
14477 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14478 {
14479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14480 "Join only allowed in Joining state - failure state is %d "
14481 "strange HAL response", pBSSSes->wdiAssocState);
14482
Jeff Johnsone7245742012-09-05 17:12:55 -070014483 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14484
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 }
14488
14489
14490 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 -----------------------------------------------------------------------*/
14493 if ( WDI_STATUS_SUCCESS != wdiStatus )
14494 {
14495 /*Association was failed by HAL - remove session*/
14496 WDI_DeleteSession(pWDICtx, pBSSSes);
14497
14498 /*Association no longer in progress */
14499 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14500
14501 /*Association no longer in progress - prepare pending assoc for processing*/
14502 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014503
Jeff Johnson295189b2012-06-20 16:38:30 -070014504 }
14505 else
14506 {
14507 /*Transition to state Joining - this may be redundant as we are supposed
14508 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014509 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014510 }
14511
14512 wpalMutexRelease(&pWDICtx->wptMutex);
14513
14514 /*Notify UMAC*/
14515 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14516
Jeff Johnsone7245742012-09-05 17:12:55 -070014517 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014518}/*WDI_ProcessJoinRsp*/
14519
14520
14521/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014522 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014523 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014524
14525 @param pWDICtx: pointer to the WLAN DAL context
14526 pEventData: pointer to the event information structure
14527
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 @see
14529 @return Result of the function call
14530*/
14531WDI_Status
14532WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014533(
Jeff Johnson295189b2012-06-20 16:38:30 -070014534 WDI_ControlBlockType* pWDICtx,
14535 WDI_EventInfoType* pEventData
14536)
14537{
14538 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14539 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014540 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014541 WDI_BSSSessionType* pBSSSes = NULL;
14542
Jeff Johnsone7245742012-09-05 17:12:55 -070014543 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014544 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14545 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014546
Jeff Johnson295189b2012-06-20 16:38:30 -070014547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14548
14549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 -------------------------------------------------------------------------*/
14552 if (( NULL == pEventData ) ||
14553 ( NULL == pEventData->pEventData))
14554 {
14555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014559 }
14560
14561 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14562
14563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014564 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014566 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14567 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 sizeof(halConfigBssRspMsg.configBssRspParams));
14569
14570 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14571 halConfigBssRspMsg.configBssRspParams.status);
14572 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14573 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014574 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014575 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14576 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014577
Jeff Johnson295189b2012-06-20 16:38:30 -070014578 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014579
14580 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014582
14583 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014585
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014587
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14591 #endif
14592 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14593 halConfigBssRspMsg.configBssRspParams.staMac,
14594 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014595
Jeff Johnson295189b2012-06-20 16:38:30 -070014596 wpalMutexAcquire(&pWDICtx->wptMutex);
14597 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014600 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14601 wdiConfigBSSParams.macBSSID,
14602 &pBSSSes);
14603
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 /*-----------------------------------------------------------------------
14605 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014606 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014607 -----------------------------------------------------------------------*/
14608 if ( NULL == pBSSSes )
14609 {
14610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14611 "Association sequence for this BSS does not yet exist "
14612 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014613
14614 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14615
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014619
Jeff Johnson295189b2012-06-20 16:38:30 -070014620 /*Save data for this BSS*/
14621 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14622 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014623 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014624 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014625 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014626 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14633 pBSSSes->bcastStaIdx =
14634 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014635
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014637
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 /*-------------------------------------------------------------------------
14639 Add Peer STA
14640 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014641 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014642 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14643 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014644
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014646 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014648 wdiAddSTAParam.ucHTCapable =
14649 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14650 wdiAddSTAParam.ucStaType =
14651 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14652
Jeff Johnson295189b2012-06-20 16:38:30 -070014653 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014654 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14655 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014657
14658 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14659 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14660 WDI_MAC_ADDR_LEN);
14661
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014663 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014669 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014671 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014675
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14677 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014678
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14680 /*-------------------------------------------------------------------------
14681 Add Broadcast STA only in AP mode
14682 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 WDI_BSS_OPERATIONAL_MODE_AP )
14685 {
14686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14687 "Add BCAST STA to table for index: %d",
14688 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014689
14690 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014692
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14694 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14695 }
14696 wpalMutexRelease(&pWDICtx->wptMutex);
14697 }
14698 else
14699 {
14700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14701 "Config BSS RSP failed with status : %s(%d)",
14702 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014704 halConfigBssRspMsg.configBssRspParams.status);
14705
Jeff Johnsone7245742012-09-05 17:12:55 -070014706
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 /*Association was failed by HAL - remove session*/
14708 WDI_DeleteSession(pWDICtx, pBSSSes);
14709
14710 /*Association no longer in progress */
14711 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14712
14713 /*Association no longer in progress - prepare pending assoc for processing*/
14714 WDI_DequeueAssocRequest(pWDICtx);
14715
14716 }
14717
14718 /*Notify UMAC*/
14719 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14720
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014722}/*WDI_ProcessConfigBSSRsp*/
14723
14724
14725/**
14726 @brief Process Del BSS Response function (called when a response
14727 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014728
14729 @param pWDICtx: pointer to the WLAN DAL context
14730 pEventData: pointer to the event information structure
14731
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 @see
14733 @return Result of the function call
14734*/
14735WDI_Status
14736WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014737(
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 WDI_ControlBlockType* pWDICtx,
14739 WDI_EventInfoType* pEventData
14740)
14741{
14742 WDI_DelBSSRspParamsType wdiDelBSSParams;
14743 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 WDI_BSSSessionType* pBSSSes = NULL;
14746
Jeff Johnsone7245742012-09-05 17:12:55 -070014747 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14749
14750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 -------------------------------------------------------------------------*/
14753 if (( NULL == pEventData ) ||
14754 ( NULL == pEventData->pEventData))
14755 {
14756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014757 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014760 }
14761
14762 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
14763
14764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
14768 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 sizeof(halDelBssRspMsg.deleteBssRspParams));
14770
14771
14772 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014774
14775 wpalMutexAcquire(&pWDICtx->wptMutex);
14776
14777 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
14781 halDelBssRspMsg.deleteBssRspParams.bssIdx,
14782 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014783
14784 /*-----------------------------------------------------------------------
14785 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014786 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 -----------------------------------------------------------------------*/
14788 if ( NULL == pBSSSes )
14789 {
14790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14791 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014792 "association no longer in progress - mysterious HAL response");
14793
14794 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14795
14796 wpalMutexRelease(&pWDICtx->wptMutex);
14797 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014798 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014799
14800 /*Extract BSSID for the response to UMAC*/
14801 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
14802 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
14803
14804 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
14805
14806 /*-----------------------------------------------------------------------
14807 The current session will be deleted
14808 -----------------------------------------------------------------------*/
14809 WDI_DeleteSession(pWDICtx, pBSSSes);
14810
14811
14812 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
14813 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070014814 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014815 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014816 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014817
14818 /* Delete the STA's in this BSS */
14819 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
14820
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 wpalMutexRelease(&pWDICtx->wptMutex);
14822
14823 /*Notify UMAC*/
14824 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
14825
Jeff Johnsone7245742012-09-05 17:12:55 -070014826 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014827}/*WDI_ProcessDelBSSRsp*/
14828
14829/**
14830 @brief Process Post Assoc Rsp function (called when a response
14831 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014832
14833 @param pWDICtx: pointer to the WLAN DAL context
14834 pEventData: pointer to the event information structure
14835
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 @see
14837 @return Result of the function call
14838*/
14839WDI_Status
14840WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014841(
Jeff Johnson295189b2012-06-20 16:38:30 -070014842 WDI_ControlBlockType* pWDICtx,
14843 WDI_EventInfoType* pEventData
14844)
14845{
14846 WDI_PostAssocRspParamsType wdiPostAssocParams;
14847 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014850 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14852
14853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 -------------------------------------------------------------------------*/
14856 if (( NULL == pEventData ) ||
14857 ( NULL == pEventData->pEventData))
14858 {
14859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014863 }
14864
14865 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
14866
14867 /*-------------------------------------------------------------------------
14868 Extract response and send it to UMAC
14869 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014870 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
14871 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 sizeof(halPostAssocRspMsg.postAssocRspParams));
14873
14874 /*Extract the Post Assoc STA Params */
14875
Jeff Johnsone7245742012-09-05 17:12:55 -070014876 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014878 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14882
Jeff Johnsone7245742012-09-05 17:12:55 -070014883 wdiPostAssocParams.wdiStatus =
14884 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014885
14886 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14887 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
14889 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014890 WDI_MAC_ADDR_LEN);
14891
14892 /* Extract Post Assoc BSS Params */
14893
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
14895 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
14896 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014897
14898 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14899 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
14902 .macSTA, WDI_MAC_ADDR_LEN);
14903
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014905 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14906
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
14909
14910 wdiPostAssocParams.bssParams.ucBSSIdx =
14911 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14912
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
14915
14916 wpalMutexAcquire(&pWDICtx->wptMutex);
14917
14918 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014919 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014921 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014922 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014924
14925 /*-----------------------------------------------------------------------
14926 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014927 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014928 -----------------------------------------------------------------------*/
14929 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14932 {
14933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14934 "Association sequence for this BSS does not yet exist or "
14935 "association no longer in progress - mysterious HAL response");
14936
Jeff Johnsone7245742012-09-05 17:12:55 -070014937 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14938
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 }
14942
14943 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 -----------------------------------------------------------------------*/
14946 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14947 {
14948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14949 "Post Assoc not allowed before JOIN - failing request "
14950 "strange HAL response");
14951
Jeff Johnsone7245742012-09-05 17:12:55 -070014952 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14953
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 }
14957
14958 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 -----------------------------------------------------------------------*/
14961 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
14962 {
14963 /*Association was failed by HAL - remove session*/
14964 WDI_DeleteSession(pWDICtx, pBSSSes);
14965 }
14966 else
14967 {
14968 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014970
14971 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014972 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014974 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014976 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014978 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014979 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
14980
Jeff Johnsone7245742012-09-05 17:12:55 -070014981 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14983 }
14984
14985 /*Association no longer in progress */
14986 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14987
14988 /*Association no longer in progress - prepare pending assoc for processing*/
14989 WDI_DequeueAssocRequest(pWDICtx);
14990
14991 wpalMutexRelease(&pWDICtx->wptMutex);
14992
14993 /*Notify UMAC*/
14994 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
14995
Jeff Johnsone7245742012-09-05 17:12:55 -070014996 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014997}/*WDI_ProcessPostAssocRsp*/
14998
14999/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015000 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015002
15003 @param pWDICtx: pointer to the WLAN DAL context
15004 pEventData: pointer to the event information structure
15005
Jeff Johnson295189b2012-06-20 16:38:30 -070015006 @see
15007 @return Result of the function call
15008*/
15009WDI_Status
15010WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015011(
Jeff Johnson295189b2012-06-20 16:38:30 -070015012 WDI_ControlBlockType* pWDICtx,
15013 WDI_EventInfoType* pEventData
15014)
15015{
15016 WDI_DelSTARspParamsType wdiDelSTARsp;
15017 WDI_DelSTARspCb wdiDelSTARspCb;
15018 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015019 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15021
15022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015024 -------------------------------------------------------------------------*/
15025 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15026 ( NULL == pEventData->pEventData))
15027 {
15028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015032 }
15033
15034 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15035
15036 /*-------------------------------------------------------------------------
15037 Extract response and send it to UMAC
15038 -------------------------------------------------------------------------*/
15039 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015040 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015041 sizeof(halDelStaRspMsg.delStaRspParams));
15042
15043 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 wdiDelSTARsp.wdiStatus =
15045 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015046
15047 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15048
15049 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15050 if(staType == WDI_STA_ENTRY_SELF)
15051 {
15052 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15053
15054 /* At this point add the self-STA */
15055
15056 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15057 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15058 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15059
15060#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15061#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15062
15063 //all DPU indices are the same for self STA
15064 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15065 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15066 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15067 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15068 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15069 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015070
15071 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 }
15073 else
15074 {
15075 //Delete the station in the table
15076 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15077 }
15078
15079 /*Notify UMAC*/
15080 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15081
Jeff Johnsone7245742012-09-05 17:12:55 -070015082 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015083}/*WDI_ProcessDelSTARsp*/
15084
15085
15086/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015087 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015088==========================================================================*/
15089
15090/**
15091 @brief Process Set BSS Key Rsp function (called when a response
15092 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015093
15094 @param pWDICtx: pointer to the WLAN DAL context
15095 pEventData: pointer to the event information structure
15096
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 @see
15098 @return Result of the function call
15099*/
15100WDI_Status
15101WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015102(
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 WDI_ControlBlockType* pWDICtx,
15104 WDI_EventInfoType* pEventData
15105)
15106{
15107 WDI_Status wdiStatus;
15108 eHalStatus halStatus;
15109 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15111
15112 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015113 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015114 -------------------------------------------------------------------------*/
15115 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15116 ( NULL == pEventData->pEventData))
15117 {
15118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 }
15123
15124 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15125
15126 /*-------------------------------------------------------------------------
15127 Extract response and send it to UMAC
15128 -------------------------------------------------------------------------*/
15129 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015130 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015131
15132 if ( eHAL_STATUS_SUCCESS != halStatus )
15133 {
15134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15135 "Set BSS Key failed with status %s (%d)",
15136 WDI_getHALStatusMsgString(halStatus),
15137 halStatus);
15138 /* send the status to UMAC, don't return from here*/
15139 }
15140
15141 /*Notify UMAC*/
15142 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15143
Jeff Johnsone7245742012-09-05 17:12:55 -070015144 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015145}/*WDI_ProcessSetBssKeyRsp*/
15146
15147/**
15148 @brief Process Remove BSS Key Rsp function (called when a response
15149 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015150
15151 @param pWDICtx: pointer to the WLAN DAL context
15152 pEventData: pointer to the event information structure
15153
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 @see
15155 @return Result of the function call
15156*/
15157WDI_Status
15158WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015159(
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 WDI_ControlBlockType* pWDICtx,
15161 WDI_EventInfoType* pEventData
15162)
15163{
15164 WDI_Status wdiStatus;
15165 eHalStatus halStatus;
15166 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15168
15169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015171 -------------------------------------------------------------------------*/
15172 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15173 ( NULL == pEventData->pEventData))
15174 {
15175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 }
15180
15181 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15182
15183 /*-------------------------------------------------------------------------
15184 Extract response and send it to UMAC
15185 -------------------------------------------------------------------------*/
15186 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015187 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015188
15189 if ( eHAL_STATUS_SUCCESS != halStatus )
15190 {
15191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15192 "Remove BSS Key failed with status %s (%d )",
15193 WDI_getHALStatusMsgString(halStatus),
15194 halStatus);
15195 /* send the status to UMAC, don't return from here*/
15196 }
15197
15198 /*Notify UMAC*/
15199 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15200
Jeff Johnsone7245742012-09-05 17:12:55 -070015201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015202}/*WDI_ProcessSetBssKeyRsp*/
15203
15204
15205/**
15206 @brief Process Set STA Key Rsp function (called when a response
15207 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015208
15209 @param pWDICtx: pointer to the WLAN DAL context
15210 pEventData: pointer to the event information structure
15211
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 @see
15213 @return Result of the function call
15214*/
15215WDI_Status
15216WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015217(
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 WDI_ControlBlockType* pWDICtx,
15219 WDI_EventInfoType* pEventData
15220)
15221{
15222 WDI_Status wdiStatus;
15223 eHalStatus halStatus;
15224 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15226
15227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 -------------------------------------------------------------------------*/
15230 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15231 ( NULL == pEventData->pEventData))
15232 {
15233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 }
15238
15239 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15240
15241 /*-------------------------------------------------------------------------
15242 Extract response and send it to UMAC
15243 -------------------------------------------------------------------------*/
15244 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015246
15247 if ( eHAL_STATUS_SUCCESS != halStatus )
15248 {
15249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15250 "Set STA Key failed with status %s (%d)",
15251 WDI_getHALStatusMsgString(halStatus),
15252 halStatus);
15253 /* send the status to UMAC, don't return from here*/
15254 }
15255
15256 /*Notify UMAC*/
15257 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15258
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015260}/*WDI_ProcessSetSTAKeyRsp*/
15261
15262/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015263 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015264 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015265
15266 @param pWDICtx: pointer to the WLAN DAL context
15267 pEventData: pointer to the event information structure
15268
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 @see
15270 @return Result of the function call
15271*/
15272WDI_Status
15273WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015274(
Jeff Johnson295189b2012-06-20 16:38:30 -070015275 WDI_ControlBlockType* pWDICtx,
15276 WDI_EventInfoType* pEventData
15277)
15278{
15279 WDI_Status wdiStatus;
15280 eHalStatus halStatus;
15281 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15283
15284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 -------------------------------------------------------------------------*/
15287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15288 ( NULL == pEventData->pEventData))
15289 {
15290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 }
15295
15296 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15297
15298 /*-------------------------------------------------------------------------
15299 Extract response and send it to UMAC
15300 -------------------------------------------------------------------------*/
15301 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015303
15304 if ( eHAL_STATUS_SUCCESS != halStatus )
15305 {
15306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15307 "Remove STA Key failed with status %s (%d)",
15308 WDI_getHALStatusMsgString(halStatus),
15309 halStatus);
15310 /* send the status to UMAC, don't return from here*/
15311 }
15312
15313 /*Notify UMAC*/
15314 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15315
Jeff Johnsone7245742012-09-05 17:12:55 -070015316 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015317}/*WDI_ProcessRemoveStaKeyRsp*/
15318
15319/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015320 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015321 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015322
15323 @param pWDICtx: pointer to the WLAN DAL context
15324 pEventData: pointer to the event information structure
15325
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 @see
15327 @return Result of the function call
15328*/
15329WDI_Status
15330WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015331(
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 WDI_ControlBlockType* pWDICtx,
15333 WDI_EventInfoType* pEventData
15334)
15335{
15336 WDI_Status wdiStatus;
15337 eHalStatus halStatus;
15338 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15340
15341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 -------------------------------------------------------------------------*/
15344 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15345 ( NULL == pEventData->pEventData))
15346 {
15347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015351 }
15352
15353 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15354
15355 /*-------------------------------------------------------------------------
15356 Extract response and send it to UMAC
15357 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015358 wpalMemoryCopy( &halStatus,
15359 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 sizeof(halStatus));
15361
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015363
15364 if ( eHAL_STATUS_SUCCESS != halStatus )
15365 {
15366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15367 "Set STA Key failed with status %s (%d)",
15368 WDI_getHALStatusMsgString(halStatus),
15369 halStatus);
15370 /* send the status to UMAC, don't return from here*/
15371 }
15372
15373 /*Notify UMAC*/
15374 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15375
Jeff Johnsone7245742012-09-05 17:12:55 -070015376 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015377}/*WDI_ProcessSetSTABcastKeyRsp*/
15378
15379/**
15380 @brief Process Remove STA Bcast Key Rsp function (called when a
15381 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015382
15383 @param pWDICtx: pointer to the WLAN DAL context
15384 pEventData: pointer to the event information structure
15385
Jeff Johnson295189b2012-06-20 16:38:30 -070015386 @see
15387 @return Result of the function call
15388*/
15389WDI_Status
15390WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015391(
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 WDI_ControlBlockType* pWDICtx,
15393 WDI_EventInfoType* pEventData
15394)
15395{
15396 WDI_Status wdiStatus;
15397 eHalStatus halStatus;
15398 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15400
15401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015402 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015403 -------------------------------------------------------------------------*/
15404 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15405 ( NULL == pEventData->pEventData))
15406 {
15407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015408 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015411 }
15412
15413 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15414
15415 /*-------------------------------------------------------------------------
15416 Extract response and send it to UMAC
15417 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015418 wpalMemoryCopy( &halStatus,
15419 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 sizeof(halStatus));
15421
Jeff Johnsone7245742012-09-05 17:12:55 -070015422 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015423
15424 if ( eHAL_STATUS_SUCCESS != halStatus )
15425 {
15426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15427 "Remove STA Key failed with status %s (%d)",
15428 WDI_getHALStatusMsgString(halStatus),
15429 halStatus);
15430 /* send the status to UMAC, don't return from here*/
15431 }
15432
15433 /*Notify UMAC*/
15434 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15435
Jeff Johnsone7245742012-09-05 17:12:55 -070015436 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015437}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15438
15439
15440/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015441 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015442==========================================================================*/
15443
15444/**
15445 @brief Process Add TSpec Rsp function (called when a response
15446 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015447
15448 @param pWDICtx: pointer to the WLAN DAL context
15449 pEventData: pointer to the event information structure
15450
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 @see
15452 @return Result of the function call
15453*/
15454WDI_Status
15455WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015456(
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 WDI_ControlBlockType* pWDICtx,
15458 WDI_EventInfoType* pEventData
15459)
15460{
15461 WDI_Status wdiStatus;
15462 eHalStatus halStatus;
15463 WDI_AddTsRspCb wdiAddTsRspCb;
15464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15465
15466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 -------------------------------------------------------------------------*/
15469 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15470 ( NULL == pEventData->pEventData))
15471 {
15472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015473 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015476 }
15477
15478 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15479
15480 /*-------------------------------------------------------------------------
15481 Extract response and send it to UMAC
15482 -------------------------------------------------------------------------*/
15483 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015484 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015485
15486 /*Notify UMAC*/
15487 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15488
Jeff Johnsone7245742012-09-05 17:12:55 -070015489 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015490}/*WDI_ProcessAddTSpecRsp*/
15491
15492
15493/**
15494 @brief Process Del TSpec Rsp function (called when a response
15495 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015496
15497 @param pWDICtx: pointer to the WLAN DAL context
15498 pEventData: pointer to the event information structure
15499
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 @see
15501 @return Result of the function call
15502*/
15503WDI_Status
15504WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015505(
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 WDI_ControlBlockType* pWDICtx,
15507 WDI_EventInfoType* pEventData
15508)
15509{
15510 WDI_Status wdiStatus;
15511 eHalStatus halStatus;
15512 WDI_DelTsRspCb wdiDelTsRspCb;
15513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15514
15515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 -------------------------------------------------------------------------*/
15518 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15519 ( NULL == pEventData->pEventData))
15520 {
15521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 }
15526
15527 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15528
15529 /*-------------------------------------------------------------------------
15530 Extract response and send it to UMAC
15531 -------------------------------------------------------------------------*/
15532 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015533 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015534
15535 /*Notify UMAC*/
15536 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15537
Jeff Johnsone7245742012-09-05 17:12:55 -070015538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015539}/*WDI_ProcessDelTSpecRsp*/
15540
15541/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015542 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015543 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015544
15545 @param pWDICtx: pointer to the WLAN DAL context
15546 pEventData: pointer to the event information structure
15547
Jeff Johnson295189b2012-06-20 16:38:30 -070015548 @see
15549 @return Result of the function call
15550*/
15551WDI_Status
15552WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015553(
Jeff Johnson295189b2012-06-20 16:38:30 -070015554 WDI_ControlBlockType* pWDICtx,
15555 WDI_EventInfoType* pEventData
15556)
15557{
15558 WDI_Status wdiStatus;
15559 eHalStatus halStatus;
15560 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15562
15563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 -------------------------------------------------------------------------*/
15566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15567 ( NULL == pEventData->pEventData))
15568 {
15569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015573 }
15574
15575 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15576
15577 /*-------------------------------------------------------------------------
15578 Extract response and send it to UMAC
15579 -------------------------------------------------------------------------*/
15580 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015581 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015582
15583 /*Notify UMAC*/
15584 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15585
Jeff Johnsone7245742012-09-05 17:12:55 -070015586 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015587}/*WDI_ProcessUpdateEDCAParamsRsp*/
15588
15589
15590/**
15591 @brief Process Add BA Rsp function (called when a response
15592 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015593
15594 @param pWDICtx: pointer to the WLAN DAL context
15595 pEventData: pointer to the event information structure
15596
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 @see
15598 @return Result of the function call
15599*/
15600WDI_Status
15601WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015602(
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 WDI_ControlBlockType* pWDICtx,
15604 WDI_EventInfoType* pEventData
15605)
15606{
15607 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15608
15609 tAddBASessionRspParams halBASessionRsp;
15610 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15611
Jeff Johnsone7245742012-09-05 17:12:55 -070015612
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15614
15615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 -------------------------------------------------------------------------*/
15618 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15619 ( NULL == pEventData->pEventData))
15620 {
15621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015622 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 }
15626
15627 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15628
15629 /*-------------------------------------------------------------------------
15630 Extract response and send it to UMAC
15631 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015632 wpalMemoryCopy( &halBASessionRsp,
15633 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 sizeof(halBASessionRsp));
15635
15636 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15637
Jeff Johnson43971f52012-07-17 12:26:56 -070015638 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015639 {
15640 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15641 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15642 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15643 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15644 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15645 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15646 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15647 }
15648
15649 /*Notify UMAC*/
15650 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15651
Jeff Johnsone7245742012-09-05 17:12:55 -070015652 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015653}/*WDI_ProcessAddSessionBARsp*/
15654
15655
15656/**
15657 @brief Process Del BA Rsp function (called when a response
15658 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015659
15660 @param pWDICtx: pointer to the WLAN DAL context
15661 pEventData: pointer to the event information structure
15662
Jeff Johnson295189b2012-06-20 16:38:30 -070015663 @see
15664 @return Result of the function call
15665*/
15666WDI_Status
15667WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015668(
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 WDI_ControlBlockType* pWDICtx,
15670 WDI_EventInfoType* pEventData
15671)
15672{
15673 WDI_Status wdiStatus;
15674 eHalStatus halStatus;
15675 WDI_DelBARspCb wdiDelBARspCb;
15676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15677
15678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 -------------------------------------------------------------------------*/
15681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15682 ( NULL == pEventData->pEventData))
15683 {
15684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 }
15689
15690 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15691
15692 /*-------------------------------------------------------------------------
15693 Extract response and send it to UMAC
15694 -------------------------------------------------------------------------*/
15695 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015696 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015697
15698 if ( eHAL_STATUS_SUCCESS == halStatus )
15699 {
15700 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15701 }
15702
15703 /*Notify UMAC*/
15704 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15705
Jeff Johnsone7245742012-09-05 17:12:55 -070015706 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015707}/*WDI_ProcessDelBARsp*/
15708
15709#ifdef FEATURE_WLAN_CCX
15710/**
15711 @brief Process TSM Stats Rsp function (called when a response
15712 is being received over the bus from HAL)
15713
15714 @param pWDICtx: pointer to the WLAN DAL context
15715 pEventData: pointer to the event information structure
15716
15717 @see
15718 @return Result of the function call
15719*/
15720WDI_Status
15721WDI_ProcessTsmStatsRsp
15722(
15723 WDI_ControlBlockType* pWDICtx,
15724 WDI_EventInfoType* pEventData
15725)
15726{
15727 WDI_TsmRspCb wdiTsmStatsRspCb;
15728 tTsmStatsRspMsg halTsmStatsRspMsg;
15729 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15731
15732 /*-------------------------------------------------------------------------
15733 Sanity check
15734 -------------------------------------------------------------------------*/
15735 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15736 ( NULL == pEventData->pEventData))
15737 {
15738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 WDI_ASSERT(0);
15741 return WDI_STATUS_E_FAILURE;
15742 }
15743
15744 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
15745
15746 /*-------------------------------------------------------------------------
15747 Unpack HAL Response Message - the header was already extracted by the
15748 main Response Handling procedure
15749 -------------------------------------------------------------------------*/
15750 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
15751 pEventData->pEventData,
15752 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
15753
15754 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
15755 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
15756 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
15757 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
15758 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
15759 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
15760 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
15761 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
15762 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
15763 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
15764 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15765 halTsmStatsRspMsg.tsmStatsRspParams.status);
15766
15767 /*Notify UMAC*/
15768 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
15769
15770 return WDI_STATUS_SUCCESS;
15771}/*WDI_ProcessTsmStatsRsp*/
15772
15773#endif
15774
15775
15776
15777/**
15778 @brief Process Flush AC Rsp function (called when a response
15779 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015780
15781 @param pWDICtx: pointer to the WLAN DAL context
15782 pEventData: pointer to the event information structure
15783
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 @see
15785 @return Result of the function call
15786*/
15787WDI_Status
15788WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015789(
Jeff Johnson295189b2012-06-20 16:38:30 -070015790 WDI_ControlBlockType* pWDICtx,
15791 WDI_EventInfoType* pEventData
15792)
15793{
15794 WDI_Status wdiStatus;
15795 eHalStatus halStatus;
15796 WDI_FlushAcRspCb wdiFlushAcRspCb;
15797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15798
15799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 -------------------------------------------------------------------------*/
15802 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15803 ( NULL == pEventData->pEventData))
15804 {
15805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 }
15810
15811 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
15812
15813 /*-------------------------------------------------------------------------
15814 Extract response and send it to UMAC
15815 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 wpalMemoryCopy( &halStatus,
15817 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015818 sizeof(halStatus));
15819
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015821
15822 /*Notify UMAC*/
15823 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15824
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015826}/*WDI_ProcessFlushAcRsp*/
15827
15828/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015829 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015830 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015831
15832 @param pWDICtx: pointer to the WLAN DAL context
15833 pEventData: pointer to the event information structure
15834
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 @see
15836 @return Result of the function call
15837*/
15838WDI_Status
15839WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015840(
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 WDI_ControlBlockType* pWDICtx,
15842 WDI_EventInfoType* pEventData
15843)
15844{
15845 WDI_Status wdiStatus;
15846 eHalStatus halStatus;
15847 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
15848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15849
15850 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015851 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015852 -------------------------------------------------------------------------*/
15853 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15854 ( NULL == pEventData->pEventData))
15855 {
15856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015857 "%s: Invalid parameters", __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
15862 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
15863
15864 /*-------------------------------------------------------------------------
15865 Extract response and send it to UMAC
15866 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015867 wpalMemoryCopy( &halStatus,
15868 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 sizeof(halStatus));
15870
Jeff Johnsone7245742012-09-05 17:12:55 -070015871 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015872
15873 /*Notify UMAC*/
15874 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15875
Jeff Johnsone7245742012-09-05 17:12:55 -070015876 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015877}/*WDI_ProcessBtAmpEventRsp*/
15878
15879
15880/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015882 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015883
15884 @param pWDICtx: pointer to the WLAN DAL context
15885 pEventData: pointer to the event information structure
15886
Jeff Johnson295189b2012-06-20 16:38:30 -070015887 @see
15888 @return Result of the function call
15889*/
15890WDI_Status
15891WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015892(
Jeff Johnson295189b2012-06-20 16:38:30 -070015893 WDI_ControlBlockType* pWDICtx,
15894 WDI_EventInfoType* pEventData
15895)
15896{
15897 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
15898 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
15899 tAddStaSelfRspMsg halAddStaSelfRsp;
15900 WDI_AddStaParams wdiAddSTAParam = {0};
15901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15902
15903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015905 -------------------------------------------------------------------------*/
15906 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15907 ( NULL == pEventData->pEventData))
15908 {
15909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 }
15914
Jeff Johnsone7245742012-09-05 17:12:55 -070015915 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015916 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
15917
15918 /*-------------------------------------------------------------------------
15919 Extract response and send it to UMAC
15920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
15922 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015923 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
15924
15925
Jeff Johnsone7245742012-09-05 17:12:55 -070015926 wdiAddSTASelfParams.wdiStatus =
15927 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015928
Jeff Johnsone7245742012-09-05 17:12:55 -070015929 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015931 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
15935
15936 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
15937 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
15938 WDI_MAC_ADDR_LEN);
15939
15940
15941#ifdef HAL_SELF_STA_PER_BSS
15942
15943 /* At this point add the self-STA */
15944
15945 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15946 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15947 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15948
15949 //all DPU indices are the same for self STA
15950
15951 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015952 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015953 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
15954 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
15955 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
15956 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
15957 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
15958
15959 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
15960 WDI_MAC_ADDR_LEN);
15961
15962 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15963 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
15964
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
15967 {
15968 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15969 }
15970#endif
15971
15972 /*Notify UMAC*/
15973 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
15974
Jeff Johnsone7245742012-09-05 17:12:55 -070015975 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015976}/*WDI_ProcessAddSTASelfRsp*/
15977
15978
15979
15980/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015983
15984 @param pWDICtx: pointer to the WLAN DAL context
15985 pEventData: pointer to the event information structure
15986
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 @see
15988 @return Result of the function call
15989*/
15990WDI_Status
15991WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015992(
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 WDI_ControlBlockType* pWDICtx,
15994 WDI_EventInfoType* pEventData
15995)
15996{
15997 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
15998 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
15999 tDelStaSelfRspParams delStaSelfRspParams;
16000 wpt_uint8 ucStaIdx;
16001
16002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16003
16004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016006 -------------------------------------------------------------------------*/
16007 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16008 ( NULL == pEventData->pEventData))
16009 {
16010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 }
16015
16016 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16017
16018 /*-------------------------------------------------------------------------
16019 Extract response and send it to UMAC
16020 -------------------------------------------------------------------------*/
16021
Jeff Johnsone7245742012-09-05 17:12:55 -070016022 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016023 (wpt_uint8*)pEventData->pEventData,
16024 sizeof(tDelStaSelfRspParams));
16025
Jeff Johnsone7245742012-09-05 17:12:55 -070016026 wdiDelStaSelfRspParams.wdiStatus =
16027 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016028
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016030 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16031 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16032 {
16033 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016034 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016035 delStaSelfRspParams.selfMacAddr,
16036 &ucStaIdx);
16037 if(WDI_STATUS_E_FAILURE == wdiStatus)
16038 {
16039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016040 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016043 }
16044 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16045 }
16046
16047 /*Notify UMAC*/
16048 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16049
16050 return WDI_STATUS_SUCCESS;
16051}
16052
Jeff Johnsone7245742012-09-05 17:12:55 -070016053#ifdef FEATURE_OEM_DATA_SUPPORT
16054/**
16055 @brief Start Oem Data Rsp function (called when a
16056 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016057
Jeff Johnsone7245742012-09-05 17:12:55 -070016058 @param pWDICtx: pointer to the WLAN DAL context
16059 pEventData: pointer to the event information structure
16060
16061 @see
16062 @return Result of the function call
16063*/
16064#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16065
16066WDI_Status
16067WDI_ProcessStartOemDataRsp
16068(
16069 WDI_ControlBlockType* pWDICtx,
16070 WDI_EventInfoType* pEventData
16071)
16072{
16073 WDI_oemDataRspCb wdiOemDataRspCb;
16074 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16075 tStartOemDataRspParams* halStartOemDataRspParams;
16076
16077 /*-------------------------------------------------------------------------
16078 Sanity check
16079 -------------------------------------------------------------------------*/
16080 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16081 ( NULL == pEventData->pEventData))
16082 {
16083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016084 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016085 WDI_ASSERT(0);
16086 return WDI_STATUS_E_FAILURE;
16087 }
16088
16089 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16090
16091 /*-------------------------------------------------------------------------
16092 Extract response and send it to UMAC
16093 -------------------------------------------------------------------------*/
16094 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16095
16096
16097 //It is the responsibility of the application code to check for failure
16098 //conditions!
16099
16100 //Allocate memory for WDI OEM DATA RSP structure
16101 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16102
16103 if(NULL == wdiOemDataRspParams)
16104 {
16105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16106 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16107 pWDICtx, pEventData, pEventData->pEventData);
16108 WDI_ASSERT(0);
16109 return WDI_STATUS_E_FAILURE;
16110 }
16111
16112 /* Populate WDI structure members */
16113 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16114
16115 /*Notify UMAC*/
16116 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16117
16118 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16119 wpalMemoryFree(wdiOemDataRspParams);
16120
16121 return WDI_STATUS_SUCCESS;
16122}/*WDI_PrcoessStartOemDataRsp*/
16123#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016124
16125/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016127===========================================================================*/
16128
16129/**
16130 @brief Process Channel Switch Rsp function (called when a response
16131 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016132
16133 @param pWDICtx: pointer to the WLAN DAL context
16134 pEventData: pointer to the event information structure
16135
Jeff Johnson295189b2012-06-20 16:38:30 -070016136 @see
16137 @return Result of the function call
16138*/
16139WDI_Status
16140WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016141(
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 WDI_ControlBlockType* pWDICtx,
16143 WDI_EventInfoType* pEventData
16144)
16145{
16146 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16147 WDI_SwitchChRspCb wdiChSwitchRspCb;
16148 tSwitchChannelRspParams halSwitchChannelRsp;
16149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16150
16151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 -------------------------------------------------------------------------*/
16154 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16155 ( NULL == pEventData->pEventData))
16156 {
16157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016161 }
16162
16163 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16164
16165 /*-------------------------------------------------------------------------
16166 Extract response and send it to UMAC
16167 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016168 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016169 (wpt_uint8*)pEventData->pEventData,
16170 sizeof(halSwitchChannelRsp));
16171
Jeff Johnsone7245742012-09-05 17:12:55 -070016172 wdiSwitchChRsp.wdiStatus =
16173 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16175
16176#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016177 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016178#endif
16179
16180 /*Notify UMAC*/
16181 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16182
Jeff Johnsone7245742012-09-05 17:12:55 -070016183 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016184}/*WDI_ProcessChannelSwitchRsp*/
16185
16186
16187/**
16188 @brief Process Config STA Rsp function (called when a response
16189 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016190
16191 @param pWDICtx: pointer to the WLAN DAL context
16192 pEventData: pointer to the event information structure
16193
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 @see
16195 @return Result of the function call
16196*/
16197WDI_Status
16198WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016199(
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 WDI_ControlBlockType* pWDICtx,
16201 WDI_EventInfoType* pEventData
16202)
16203{
16204 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16205 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16206 WDI_AddStaParams wdiAddSTAParam;
16207
16208 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016210
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16213
16214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 -------------------------------------------------------------------------*/
16217 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16218 ( NULL == pEventData->pEventData))
16219 {
16220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016221 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016224 }
16225
16226 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16227
16228 /*-------------------------------------------------------------------------
16229 Extract response and send it to UMAC
16230 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016231 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16232 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016233 sizeof(halConfigStaRsp.configStaRspParams));
16234
16235
16236 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16237 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16238 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16239 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16240 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16241
16242 /* MAC Address of STA - take from cache as it does not come back in the
16243 response*/
16244 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016247
16248 wdiCfgSTAParams.wdiStatus =
16249 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016250
16251 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16252 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16253 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16254
16255 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16256 {
16257 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16258 {
16259 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016260 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016261 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16262 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016263
Jeff Johnson295189b2012-06-20 16:38:30 -070016264 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016265 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016267 wdiAddSTAParam.ucHTCapable =
16268 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16269 wdiAddSTAParam.ucStaType =
16270 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16271
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016273 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16274 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016276
16277 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16278 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16279 WDI_MAC_ADDR_LEN);
16280
16281 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16282 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16283 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016284
16285 if ( NULL == pBSSSes )
16286 {
16287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16288 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016289
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016291 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 }
16293
16294 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016295 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016296 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016297 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016298 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016299 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 halConfigStaRsp.configStaRspParams.ucBcastSig;
16303 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16304 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016305
Jeff Johnson295189b2012-06-20 16:38:30 -070016306 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16307 }
16308 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16309 {
16310 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16311
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016314 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016316 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016317 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016318 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016319 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016320 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016322 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016324 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016325 halConfigStaRsp.configStaRspParams.ucUcastSig;
16326 }
16327 }
16328
16329 /*Notify UMAC*/
16330 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16331
Jeff Johnsone7245742012-09-05 17:12:55 -070016332 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016333}/*WDI_ProcessConfigStaRsp*/
16334
16335
16336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016337 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016338 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016339
16340 @param pWDICtx: pointer to the WLAN DAL context
16341 pEventData: pointer to the event information structure
16342
Jeff Johnson295189b2012-06-20 16:38:30 -070016343 @see
16344 @return Result of the function call
16345*/
16346WDI_Status
16347WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016348(
Jeff Johnson295189b2012-06-20 16:38:30 -070016349 WDI_ControlBlockType* pWDICtx,
16350 WDI_EventInfoType* pEventData
16351)
16352{
16353 WDI_Status wdiStatus;
16354 eHalStatus halStatus;
16355 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16356
16357 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016358 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16360
16361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016363 -------------------------------------------------------------------------*/
16364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16365 ( NULL == pEventData->pEventData))
16366 {
16367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016371 }
16372
16373 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16374
16375 wpalMutexAcquire(&pWDICtx->wptMutex);
16376
16377 /*If the link is being transitioned to idle - the BSS is to be deleted
16378 - this type of ending a session is possible when UMAC has failed an
16379 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016380 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016381 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16382 {
16383 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016384 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016385 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016386 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16387 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16388 &pBSSSes);
16389
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 /*-----------------------------------------------------------------------
16391 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016392 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016393 -----------------------------------------------------------------------*/
16394 if ( NULL == pBSSSes )
16395 {
16396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16397 "Set link response received outside association session");
16398 }
16399 else
16400 {
16401 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16402 will be del BSS coming after this to stop the beaconing & cleaning up the
16403 sessions*/
16404 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16405 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16406 {
16407 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016408 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 -----------------------------------------------------------------------*/
16410 WDI_DeleteSession(pWDICtx, pBSSSes);
16411
16412 /*-----------------------------------------------------------------------
16413 Check to see if this association is in progress - if so disable the
16414 flag as this has ended
16415 -----------------------------------------------------------------------*/
16416 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016417 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016418 /*Association no longer in progress */
16419 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16420 /*Association no longer in progress - prepare pending assoc for processing*/
16421 WDI_DequeueAssocRequest(pWDICtx);
16422 }
16423 }
16424 }
16425 }
16426 /* If the link state has been set to POST ASSOC, reset the "association in
16427 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016428 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16430 {
16431 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16432 WDI_DequeueAssocRequest(pWDICtx);
16433 }
16434
16435 wpalMutexRelease(&pWDICtx->wptMutex);
16436
16437 /*-------------------------------------------------------------------------
16438 Extract response and send it to UMAC
16439 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016440 wpalMemoryCopy( &halStatus,
16441 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016442 sizeof(halStatus));
16443
Jeff Johnsone7245742012-09-05 17:12:55 -070016444 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016445
16446 /*Notify UMAC*/
16447 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16448
Jeff Johnsone7245742012-09-05 17:12:55 -070016449 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016450}/*WDI_ProcessSetLinkStateRsp*/
16451
16452/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016453 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016454 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016455
16456 @param pWDICtx: pointer to the WLAN DAL context
16457 pEventData: pointer to the event information structure
16458
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 @see
16460 @return Result of the function call
16461*/
16462WDI_Status
16463WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016464(
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 WDI_ControlBlockType* pWDICtx,
16466 WDI_EventInfoType* pEventData
16467)
16468{
16469 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16470 WDI_GetStatsRspCb wdiGetStatsRspCb;
16471 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016472
Jeff Johnson295189b2012-06-20 16:38:30 -070016473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16474
16475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016477 -------------------------------------------------------------------------*/
16478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16479 ( NULL == pEventData->pEventData))
16480 {
16481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 }
16486
16487 /*-------------------------------------------------------------------------
16488 Extract response and send it to UMAC
16489 -------------------------------------------------------------------------*/
16490 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16491
16492 /*allocate the stats response buffer */
16493 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16494 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16495 + sizeof(WDI_GetStatsRspParamsType));
16496
16497 if(NULL == wdiGetStatsRsp)
16498 {
16499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16500 "Failed to allocate memory in Get Stats Response %x %x %x ",
16501 pWDICtx, pEventData, pEventData->pEventData);
16502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016504 }
16505
16506 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16507
16508 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16509 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16510 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16511 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16512 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16513 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16514
16515 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16516 wpalMemoryCopy(wdiGetStatsRsp + 1,
16517 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16518 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16519
16520 /*Notify UMAC*/
16521 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16522
16523 wpalMemoryFree(wdiGetStatsRsp);
16524
Jeff Johnsone7245742012-09-05 17:12:55 -070016525 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016526}/*WDI_ProcessGetStatsRsp*/
16527
16528
16529/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016530 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016531 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016532
16533 @param pWDICtx: pointer to the WLAN DAL context
16534 pEventData: pointer to the event information structure
16535
Jeff Johnson295189b2012-06-20 16:38:30 -070016536 @see
16537 @return Result of the function call
16538*/
16539WDI_Status
16540WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016541(
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 WDI_ControlBlockType* pWDICtx,
16543 WDI_EventInfoType* pEventData
16544)
16545{
16546 WDI_Status wdiStatus;
16547 eHalStatus halStatus;
16548 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16550
16551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 -------------------------------------------------------------------------*/
16554 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16555 ( NULL == pEventData->pEventData))
16556 {
16557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 }
16562
16563 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16564
16565 /*-------------------------------------------------------------------------
16566 Extract response and send it to UMAC
16567 -------------------------------------------------------------------------*/
16568 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016569 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016570
16571 /*Notify UMAC*/
16572 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16573
Jeff Johnsone7245742012-09-05 17:12:55 -070016574 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016575}/*WDI_ProcessUpdateCfgRsp*/
16576
16577
16578
16579/**
16580 @brief Process Add BA Rsp function (called when a response
16581 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016582
16583 @param pWDICtx: pointer to the WLAN DAL context
16584 pEventData: pointer to the event information structure
16585
Jeff Johnson295189b2012-06-20 16:38:30 -070016586 @see
16587 @return Result of the function call
16588*/
16589WDI_Status
16590WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016591(
Jeff Johnson295189b2012-06-20 16:38:30 -070016592 WDI_ControlBlockType* pWDICtx,
16593 WDI_EventInfoType* pEventData
16594)
16595{
16596 WDI_AddBARspCb wdiAddBARspCb;
16597
16598 tAddBARspParams halAddBARsp;
16599 WDI_AddBARspinfoType wdiAddBARsp;
16600
16601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16602
16603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 -------------------------------------------------------------------------*/
16606 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16607 ( NULL == pEventData->pEventData))
16608 {
16609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016610 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 }
16614
16615 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16616
16617 /*-------------------------------------------------------------------------
16618 Extract response and send it to UMAC
16619 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016620 wpalMemoryCopy( &halAddBARsp,
16621 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 sizeof(halAddBARsp));
16623
16624 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16625
Jeff Johnson43971f52012-07-17 12:26:56 -070016626 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 {
16628 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16629 }
16630
16631 /*Notify UMAC*/
16632 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16633
Jeff Johnsone7245742012-09-05 17:12:55 -070016634 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016635}/*WDI_ProcessAddSessionBARsp*/
16636
16637/**
16638 @brief Process Add BA Rsp function (called when a response
16639 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016640
16641 @param pWDICtx: pointer to the WLAN DAL context
16642 pEventData: pointer to the event information structure
16643
Jeff Johnson295189b2012-06-20 16:38:30 -070016644 @see
16645 @return Result of the function call
16646*/
16647WDI_Status
16648WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016649(
Jeff Johnson295189b2012-06-20 16:38:30 -070016650 WDI_ControlBlockType* pWDICtx,
16651 WDI_EventInfoType* pEventData
16652)
16653{
16654 WDI_TriggerBARspCb wdiTriggerBARspCb;
16655
16656 tTriggerBARspParams* halTriggerBARsp;
16657 tTriggerBaRspCandidate* halBaCandidate;
16658 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16659 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16660 wpt_uint16 index;
16661 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016662
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16664
16665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016666 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 -------------------------------------------------------------------------*/
16668 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16669 ( NULL == pEventData->pEventData))
16670 {
16671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016672 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016675 }
16676
16677 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16678
16679 /*-------------------------------------------------------------------------
16680 Extract response and send it to UMAC
16681 -------------------------------------------------------------------------*/
16682 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
16683
Jeff Johnsone7245742012-09-05 17:12:55 -070016684 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
16685 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070016686 sizeof(WDI_TriggerBARspCandidateType));
16687 if(NULL == wdiTriggerBARsp)
16688 {
16689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16690 "Failed to allocate memory in Trigger BA Response %x %x %x ",
16691 pWDICtx, pEventData, pEventData->pEventData);
16692 wpalMemoryFree(halTriggerBARsp);
16693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 }
16696
16697 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
16698
16699 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
16700 {
16701 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070016702 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016703 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
16704
16705 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
16706 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
16707
16708 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
16709 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016710 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016711 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
16712 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
16713 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016716 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070016717 halBaCandidate->baInfo[TidIndex].startingSeqNum;
16718 }
16719 wdiTriggerBARspCandidate++;
16720 halBaCandidate++;
16721 }
16722 }
16723
16724 /*Notify UMAC*/
16725 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
16726
16727 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070016728 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016729}/*WDI_ProcessAddSessionBARsp*/
16730
16731/**
16732 @brief Process Update Beacon Params Rsp function (called when a response
16733 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016734
16735 @param pWDICtx: pointer to the WLAN DAL context
16736 pEventData: pointer to the event information structure
16737
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 @see
16739 @return Result of the function call
16740*/
16741WDI_Status
16742WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016743(
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 WDI_ControlBlockType* pWDICtx,
16745 WDI_EventInfoType* pEventData
16746)
16747{
16748 WDI_Status wdiStatus;
16749 eHalStatus halStatus;
16750 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
16751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16752
16753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016754 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016755 -------------------------------------------------------------------------*/
16756 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16757 ( NULL == pEventData->pEventData))
16758 {
16759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 }
16764
16765 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
16766
16767 /*-------------------------------------------------------------------------
16768 Extract response and send it to UMAC
16769 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016770 wpalMemoryCopy( &halStatus,
16771 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016772 sizeof(halStatus));
16773
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016775
16776 /*Notify UMAC*/
16777 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16778
Jeff Johnsone7245742012-09-05 17:12:55 -070016779 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016780}/*WDI_ProcessUpdateBeaconParamsRsp*/
16781
16782/**
16783 @brief Process Send Beacon template Rsp function (called when a response
16784 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016785
16786 @param pWDICtx: pointer to the WLAN DAL context
16787 pEventData: pointer to the event information structure
16788
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 @see
16790 @return Result of the function call
16791*/
16792WDI_Status
16793WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016794(
Jeff Johnson295189b2012-06-20 16:38:30 -070016795 WDI_ControlBlockType* pWDICtx,
16796 WDI_EventInfoType* pEventData
16797)
16798{
16799 WDI_Status wdiStatus;
16800 eHalStatus halStatus;
16801 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
16802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16803
16804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016806 -------------------------------------------------------------------------*/
16807 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16808 ( NULL == pEventData->pEventData))
16809 {
16810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016814 }
16815
16816 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
16817
16818 /*-------------------------------------------------------------------------
16819 Extract response and send it to UMAC
16820 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016821 wpalMemoryCopy( &halStatus,
16822 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016823 sizeof(halStatus));
16824
Jeff Johnsone7245742012-09-05 17:12:55 -070016825 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016826
16827 /*Notify UMAC*/
16828 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16829
Jeff Johnsone7245742012-09-05 17:12:55 -070016830 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016831}/*WDI_ProcessSendBeaconParamsRsp*/
16832
Jeff Johnsone7245742012-09-05 17:12:55 -070016833
Jeff Johnson295189b2012-06-20 16:38:30 -070016834/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016837
16838 @param pWDICtx: pointer to the WLAN DAL context
16839 pEventData: pointer to the event information structure
16840
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 @see
16842 @return Result of the function call
16843*/
16844WDI_Status
16845WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016846(
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 WDI_ControlBlockType* pWDICtx,
16848 WDI_EventInfoType* pEventData
16849)
16850{
16851 WDI_Status wdiStatus;
16852 eHalStatus halStatus;
16853 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
16854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16855
16856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016857 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 -------------------------------------------------------------------------*/
16859 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16860 ( NULL == pEventData->pEventData))
16861 {
16862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016863 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016866 }
16867
16868 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
16869
16870 /*-------------------------------------------------------------------------
16871 Extract response and send it to UMAC
16872 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016873 wpalMemoryCopy( &halStatus,
16874 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016875 sizeof(halStatus));
16876
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016878
16879 /*Notify UMAC*/
16880 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16881
Jeff Johnsone7245742012-09-05 17:12:55 -070016882 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016883}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
16884
16885 /**
16886 @brief Process Set Max Tx Power Rsp function (called when a response
16887 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016888
16889 @param pWDICtx: pointer to the WLAN DAL context
16890 pEventData: pointer to the event information structure
16891
Jeff Johnson295189b2012-06-20 16:38:30 -070016892 @see
16893 @return Result of the function call
16894*/
16895WDI_Status
16896WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016897(
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 WDI_ControlBlockType* pWDICtx,
16899 WDI_EventInfoType* pEventData
16900)
16901{
16902 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070016903
Jeff Johnson295189b2012-06-20 16:38:30 -070016904 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070016905
Jeff Johnson295189b2012-06-20 16:38:30 -070016906 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
16907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
16922
16923 /*-------------------------------------------------------------------------
16924 Extract response and send it to UMAC
16925 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016926 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
16927 pEventData->pEventData,
16928 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016929
16930 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
16931 {
16932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16933 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070016934 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016936 }
16937
Jeff Johnsone7245742012-09-05 17:12:55 -070016938 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070016939 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070016940 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070016941
16942 /*Notify UMAC*/
16943 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
16944
Jeff Johnsone7245742012-09-05 17:12:55 -070016945 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016946}
16947
16948#ifdef WLAN_FEATURE_P2P
16949/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016950 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016951 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016952
16953 @param pWDICtx: pointer to the WLAN DAL context
16954 pEventData: pointer to the event information structure
16955
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 @see
16957 @return Result of the function call
16958*/
16959WDI_Status
16960WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016961(
Jeff Johnson295189b2012-06-20 16:38:30 -070016962 WDI_ControlBlockType* pWDICtx,
16963 WDI_EventInfoType* pEventData
16964)
16965{
16966 WDI_Status wdiStatus;
16967 eHalStatus halStatus;
16968 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
16969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16970
16971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016973 -------------------------------------------------------------------------*/
16974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16975 ( NULL == pEventData->pEventData))
16976 {
16977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016981 }
16982
16983 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
16984
16985 /*-------------------------------------------------------------------------
16986 Extract response and send it to UMAC
16987 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016988 wpalMemoryCopy( &halStatus,
16989 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 sizeof(halStatus));
16991
Jeff Johnsone7245742012-09-05 17:12:55 -070016992 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016993
16994 /*Notify UMAC*/
16995 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16996
Jeff Johnsone7245742012-09-05 17:12:55 -070016997 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016998}/*WDI_ProcessP2PGONOARsp*/
16999#endif
17000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017001 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017002 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017003
17004 @param pWDICtx: pointer to the WLAN DAL context
17005 pEventData: pointer to the event information structure
17006
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 @see
17008 @return Result of the function call
17009*/
17010WDI_Status
17011WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017012(
Jeff Johnson295189b2012-06-20 16:38:30 -070017013 WDI_ControlBlockType* pWDICtx,
17014 WDI_EventInfoType* pEventData
17015)
17016{
17017 WDI_Status wdiStatus;
17018 eHalStatus halStatus;
17019 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017020 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17022
17023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017025 -------------------------------------------------------------------------*/
17026 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17027 ( NULL == pEventData->pEventData))
17028 {
17029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017030 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 }
17034
17035 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17036
17037 /*-------------------------------------------------------------------------
17038 Extract response and send it to UMAC
17039 -------------------------------------------------------------------------*/
17040 halStatus = *((eHalStatus*)pEventData->pEventData);
17041
Jeff Johnsone7245742012-09-05 17:12:55 -070017042 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017043
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017044 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17045 * Other module states are taken care by PMC.
17046 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17047 */
17048 if (wdiStatus != WDI_STATUS_SUCCESS) {
17049
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17051 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17052 halStatus);
17053 /* Call Back is not required as we are putting the DXE in FULL
17054 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017055 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17056
17057 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17059 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17060 WDI_ASSERT(0);
17061 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017062 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 /*Notify UMAC*/
17064 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17065
Jeff Johnsone7245742012-09-05 17:12:55 -070017066 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017067}/*WDI_ProcessEnterImpsRsp*/
17068
17069/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017070 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017072
17073 @param pWDICtx: pointer to the WLAN DAL context
17074 pEventData: pointer to the event information structure
17075
Jeff Johnson295189b2012-06-20 16:38:30 -070017076 @see
17077 @return Result of the function call
17078*/
17079WDI_Status
17080WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017081(
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 WDI_ControlBlockType* pWDICtx,
17083 WDI_EventInfoType* pEventData
17084)
17085{
17086 WDI_Status wdiStatus;
17087 eHalStatus halStatus;
17088 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017089 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17091
17092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017093 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017094 -------------------------------------------------------------------------*/
17095 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17096 ( NULL == pEventData->pEventData))
17097 {
17098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017102 }
17103
17104 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17105
17106 /*-------------------------------------------------------------------------
17107 Extract response and send it to UMAC
17108 -------------------------------------------------------------------------*/
17109 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017110 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017111
17112 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017113 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17114 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17115 {
17116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17117 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17118 WDI_ASSERT(0);
17119 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 /*Notify UMAC*/
17121 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17122
Jeff Johnsone7245742012-09-05 17:12:55 -070017123 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017124}/*WDI_ProcessExitImpsRsp*/
17125
17126/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017127 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017128 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017129
17130 @param pWDICtx: pointer to the WLAN DAL context
17131 pEventData: pointer to the event information structure
17132
Jeff Johnson295189b2012-06-20 16:38:30 -070017133 @see
17134 @return Result of the function call
17135*/
17136WDI_Status
17137WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017138(
Jeff Johnson295189b2012-06-20 16:38:30 -070017139 WDI_ControlBlockType* pWDICtx,
17140 WDI_EventInfoType* pEventData
17141)
17142{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017143 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17144 tHalEnterBmpsRspParams halEnterBmpsRsp;
17145 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17146 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017147 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17149
17150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017152 -------------------------------------------------------------------------*/
17153 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17154 ( NULL == pEventData->pEventData))
17155 {
17156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017160 }
17161
Jeff Johnson295189b2012-06-20 16:38:30 -070017162 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017163 Extract response and send it to UMAC
17164 -------------------------------------------------------------------------*/
17165 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17166 {
17167 wpalMemoryCopy( &halEnterBmpsRsp,
17168 pEventData->pEventData,
17169 sizeof(halEnterBmpsRsp));
17170
17171 //Used to print debug message
17172 halStatus = halEnterBmpsRsp.status;
17173 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17174 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17175 }
17176 else
17177 {
17178 halStatus = *((eHalStatus*)pEventData->pEventData);
17179 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17180 }
17181
17182 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017183
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017184 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17185 * Other module states are taken care by PMC.
17186 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17187 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017188 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17189 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017190
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017192 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17193 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017194 /* Call Back is not required as we are putting the DXE in FULL
17195 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017196 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17197 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17198 {
17199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17200 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17201 WDI_ASSERT(0);
17202 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017203 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017204 }
17205
Jeff Johnson295189b2012-06-20 16:38:30 -070017206 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017207 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017208
Jeff Johnsone7245742012-09-05 17:12:55 -070017209 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017210}/*WDI_ProcessEnterBmpsRsp*/
17211
17212/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017213 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017214 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017215
17216 @param pWDICtx: pointer to the WLAN DAL context
17217 pEventData: pointer to the event information structure
17218
Jeff Johnson295189b2012-06-20 16:38:30 -070017219 @see
17220 @return Result of the function call
17221*/
17222WDI_Status
17223WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017224(
Jeff Johnson295189b2012-06-20 16:38:30 -070017225 WDI_ControlBlockType* pWDICtx,
17226 WDI_EventInfoType* pEventData
17227)
17228{
Jeff Johnson295189b2012-06-20 16:38:30 -070017229 eHalStatus halStatus;
17230 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017231 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017232 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17233 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17235
17236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017238 -------------------------------------------------------------------------*/
17239 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17240 ( NULL == pEventData->pEventData))
17241 {
17242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 }
17247
17248 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17249
17250 /*-------------------------------------------------------------------------
17251 Extract response and send it to UMAC
17252 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017253
17254 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17255 {
17256 wpalMemoryCopy( &halExitBmpsRsp,
17257 pEventData->pEventData,
17258 sizeof(halExitBmpsRsp));
17259
17260 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17261 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17262 }
17263 else
17264 {
17265 halStatus = *((eHalStatus*)pEventData->pEventData);
17266 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17267 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017268
17269 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017270 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17271 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17272 {
17273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17274 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17275 WDI_ASSERT(0);
17276 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017277 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17278
17279 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017280 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017281
Jeff Johnsone7245742012-09-05 17:12:55 -070017282 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017283}/*WDI_ProcessExitBmpsRsp*/
17284
17285/**
17286 @brief Process Enter UAPSD Rsp function (called when a response
17287 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017288
17289 @param pWDICtx: pointer to the WLAN DAL context
17290 pEventData: pointer to the event information structure
17291
Jeff Johnson295189b2012-06-20 16:38:30 -070017292 @see
17293 @return Result of the function call
17294*/
17295WDI_Status
17296WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017297(
Jeff Johnson295189b2012-06-20 16:38:30 -070017298 WDI_ControlBlockType* pWDICtx,
17299 WDI_EventInfoType* pEventData
17300)
17301{
Jeff Johnson295189b2012-06-20 16:38:30 -070017302 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017303 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017304 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017305 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17306
Jeff Johnson295189b2012-06-20 16:38:30 -070017307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17308
17309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017311 -------------------------------------------------------------------------*/
17312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17313 ( NULL == pEventData->pEventData))
17314 {
17315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017319 }
17320
17321 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17322
17323 /*-------------------------------------------------------------------------
17324 Extract response and send it to UMAC
17325 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017326 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17327 {
17328 wpalMemoryCopy( &halEnterUapsdRsp,
17329 pEventData->pEventData,
17330 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017331
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017332 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17333 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17334 }
17335 else
17336 {
17337 halStatus = *((eHalStatus*)pEventData->pEventData);
17338 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17339 }
17340
17341 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 {
17343 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17344 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17345 // the traffic to decide when to suspend the trigger frames when there is no traffic
17346 // activity on the trigger enabled ACs
17347 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17348
17349#ifdef WLAN_PERF
17350 // Increment the BD signature to refresh the fast path BD utilization
17351 pWDICtx->uBdSigSerialNum++;
17352#endif
17353 }
17354
17355 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017356 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017357
Jeff Johnsone7245742012-09-05 17:12:55 -070017358 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017359}/*WDI_ProcessEnterUapsdRsp*/
17360
17361/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017362 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017364
17365 @param pWDICtx: pointer to the WLAN DAL context
17366 pEventData: pointer to the event information structure
17367
Jeff Johnson295189b2012-06-20 16:38:30 -070017368 @see
17369 @return Result of the function call
17370*/
17371WDI_Status
17372WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017373(
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 WDI_ControlBlockType* pWDICtx,
17375 WDI_EventInfoType* pEventData
17376)
17377{
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 eHalStatus halStatus;
17379 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017380 tHalExitUapsdRspParams halExitUapsdRsp;
17381 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17383
17384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 -------------------------------------------------------------------------*/
17387 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17388 ( NULL == pEventData->pEventData))
17389 {
17390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017391 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017394 }
17395
17396 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17397
17398 /*-------------------------------------------------------------------------
17399 Extract response and send it to UMAC
17400 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017401 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17402 {
17403 wpalMemoryCopy( &halExitUapsdRsp,
17404 pEventData->pEventData,
17405 sizeof(halExitUapsdRsp));
17406
17407 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17408 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17409 }
17410 else
17411 {
17412 halStatus = *((eHalStatus*)pEventData->pEventData);
17413 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17414 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017415 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17416 // directly instead of the FW WQ.
17417 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17418
17419#ifdef WLAN_PERF
17420 // Increment the BD signature to refresh the fast path BD utilization
17421 pWDICtx->uBdSigSerialNum++;
17422#endif
17423
17424 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017425 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017426
Jeff Johnsone7245742012-09-05 17:12:55 -070017427 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017428}/*WDI_ProcessExitUapsdRsp*/
17429
17430/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017431 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017432 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017433
17434 @param pWDICtx: pointer to the WLAN DAL context
17435 pEventData: pointer to the event information structure
17436
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 @see
17438 @return Result of the function call
17439*/
17440WDI_Status
17441WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017442(
Jeff Johnson295189b2012-06-20 16:38:30 -070017443 WDI_ControlBlockType* pWDICtx,
17444 WDI_EventInfoType* pEventData
17445)
17446{
17447 WDI_Status wdiStatus;
17448 eHalStatus halStatus;
17449 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17451
17452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017454 -------------------------------------------------------------------------*/
17455 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17456 ( NULL == pEventData->pEventData))
17457 {
17458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017462 }
17463
17464 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17465
17466 /*-------------------------------------------------------------------------
17467 Extract response and send it to UMAC
17468 -------------------------------------------------------------------------*/
17469 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017470 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017471
17472 /*Notify UMAC*/
17473 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17474
Jeff Johnsone7245742012-09-05 17:12:55 -070017475 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017476}/*WDI_ProcessSetUapsdAcParamsRsp*/
17477
17478/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017479 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017481
17482 @param pWDICtx: pointer to the WLAN DAL context
17483 pEventData: pointer to the event information structure
17484
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 @see
17486 @return Result of the function call
17487*/
17488WDI_Status
17489WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017490(
Jeff Johnson295189b2012-06-20 16:38:30 -070017491 WDI_ControlBlockType* pWDICtx,
17492 WDI_EventInfoType* pEventData
17493)
17494{
17495 WDI_Status wdiStatus;
17496 eHalStatus halStatus;
17497 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17499
17500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017502 -------------------------------------------------------------------------*/
17503 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17504 ( NULL == pEventData->pEventData))
17505 {
17506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017510 }
17511
17512 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17513
17514 /*-------------------------------------------------------------------------
17515 Extract response and send it to UMAC
17516 -------------------------------------------------------------------------*/
17517 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017519
17520 /*Notify UMAC*/
17521 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17522
Jeff Johnsone7245742012-09-05 17:12:55 -070017523 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017524}/*WDI_ProcessUpdateUapsdParamsRsp*/
17525
17526/**
17527 @brief Process Configure RXP filter Rsp function (called when a
17528 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017529
17530 @param pWDICtx: pointer to the WLAN DAL context
17531 pEventData: pointer to the event information structure
17532
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 @see
17534 @return Result of the function call
17535*/
17536WDI_Status
17537WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017538(
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 WDI_ControlBlockType* pWDICtx,
17540 WDI_EventInfoType* pEventData
17541)
17542{
17543 WDI_Status wdiStatus;
17544 eHalStatus halStatus;
17545 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17547
17548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017550 -------------------------------------------------------------------------*/
17551 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17552 ( NULL == pEventData->pEventData))
17553 {
17554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 }
17559
17560 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17561
17562 /*-------------------------------------------------------------------------
17563 Extract response and send it to UMAC
17564 -------------------------------------------------------------------------*/
17565 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017566 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017567
17568 /*Notify UMAC*/
17569 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17570
Jeff Johnsone7245742012-09-05 17:12:55 -070017571 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017572}/*WDI_ProcessConfigureRxpFilterRsp*/
17573
17574/**
17575 @brief Process Set beacon filter Rsp function (called when a
17576 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017577
17578 @param pWDICtx: pointer to the WLAN DAL context
17579 pEventData: pointer to the event information structure
17580
Jeff Johnson295189b2012-06-20 16:38:30 -070017581 @see
17582 @return Result of the function call
17583*/
17584WDI_Status
17585WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017586(
Jeff Johnson295189b2012-06-20 16:38:30 -070017587 WDI_ControlBlockType* pWDICtx,
17588 WDI_EventInfoType* pEventData
17589)
17590{
17591 WDI_Status wdiStatus;
17592 eHalStatus halStatus;
17593 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17595
17596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017597 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 -------------------------------------------------------------------------*/
17599 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17600 ( NULL == pEventData->pEventData))
17601 {
17602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017606 }
17607
17608 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17609
17610 /*-------------------------------------------------------------------------
17611 Extract response and send it to UMAC
17612 -------------------------------------------------------------------------*/
17613 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017614 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017615
17616 /*Notify UMAC*/
17617 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17618
Jeff Johnsone7245742012-09-05 17:12:55 -070017619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017620}/*WDI_ProcessSetBeaconFilterRsp*/
17621
17622/**
17623 @brief Process remove beacon filter Rsp function (called when a
17624 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017625
17626 @param pWDICtx: pointer to the WLAN DAL context
17627 pEventData: pointer to the event information structure
17628
Jeff Johnson295189b2012-06-20 16:38:30 -070017629 @see
17630 @return Result of the function call
17631*/
17632WDI_Status
17633WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017634(
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 WDI_ControlBlockType* pWDICtx,
17636 WDI_EventInfoType* pEventData
17637)
17638{
17639 WDI_Status wdiStatus;
17640 eHalStatus halStatus;
17641 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
17642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17643
17644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017646 -------------------------------------------------------------------------*/
17647 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17648 ( NULL == pEventData->pEventData))
17649 {
17650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017654 }
17655
17656 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
17657
17658 /*-------------------------------------------------------------------------
17659 Extract response and send it to UMAC
17660 -------------------------------------------------------------------------*/
17661 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017662 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017663
17664 /*Notify UMAC*/
17665 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17666
Jeff Johnsone7245742012-09-05 17:12:55 -070017667 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017668}/*WDI_ProcessRemBeaconFilterRsp*/
17669
17670/**
17671 @brief Process set RSSI thresholds Rsp function (called when a
17672 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017673
17674 @param pWDICtx: pointer to the WLAN DAL context
17675 pEventData: pointer to the event information structure
17676
Jeff Johnson295189b2012-06-20 16:38:30 -070017677 @see
17678 @return Result of the function call
17679*/
17680WDI_Status
17681WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017682(
Jeff Johnson295189b2012-06-20 16:38:30 -070017683 WDI_ControlBlockType* pWDICtx,
17684 WDI_EventInfoType* pEventData
17685)
17686{
17687 WDI_Status wdiStatus;
17688 eHalStatus halStatus;
17689 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
17690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17691
17692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017693 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017694 -------------------------------------------------------------------------*/
17695 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17696 ( NULL == pEventData->pEventData))
17697 {
17698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017702 }
17703
17704 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
17705
17706 /*-------------------------------------------------------------------------
17707 Extract response and send it to UMAC
17708 -------------------------------------------------------------------------*/
17709 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017710 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017711
17712 /*Notify UMAC*/
17713 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
17714
Jeff Johnsone7245742012-09-05 17:12:55 -070017715 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017716}/*WDI_ProcessSetRSSIThresoldsRsp*/
17717
17718/**
17719 @brief Process host offload Rsp function (called when a
17720 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017721
17722 @param pWDICtx: pointer to the WLAN DAL context
17723 pEventData: pointer to the event information structure
17724
Jeff Johnson295189b2012-06-20 16:38:30 -070017725 @see
17726 @return Result of the function call
17727*/
17728WDI_Status
17729WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017730(
Jeff Johnson295189b2012-06-20 16:38:30 -070017731 WDI_ControlBlockType* pWDICtx,
17732 WDI_EventInfoType* pEventData
17733)
17734{
17735 WDI_Status wdiStatus;
17736 eHalStatus halStatus;
17737 WDI_HostOffloadCb wdiHostOffloadCb;
17738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17739
17740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017741 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017742 -------------------------------------------------------------------------*/
17743 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17744 ( NULL == pEventData->pEventData))
17745 {
17746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017750 }
17751
17752 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
17753
17754 /*-------------------------------------------------------------------------
17755 Extract response and send it to UMAC
17756 -------------------------------------------------------------------------*/
17757 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017758 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017759
17760 /*Notify UMAC*/
17761 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
17762
Jeff Johnsone7245742012-09-05 17:12:55 -070017763 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017764}/*WDI_ProcessHostOffloadRsp*/
17765
17766/**
17767 @brief Process keep alive Rsp function (called when a
17768 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017769
17770 @param pWDICtx: pointer to the WLAN DAL context
17771 pEventData: pointer to the event information structure
17772
Jeff Johnson295189b2012-06-20 16:38:30 -070017773 @see
17774 @return Result of the function call
17775*/
17776WDI_Status
17777WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017778(
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 WDI_ControlBlockType* pWDICtx,
17780 WDI_EventInfoType* pEventData
17781)
17782{
17783 WDI_Status wdiStatus;
17784 eHalStatus halStatus;
17785 WDI_KeepAliveCb wdiKeepAliveCb;
17786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17788 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
17789
17790
17791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 -------------------------------------------------------------------------*/
17794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17795 ( NULL == pEventData->pEventData))
17796 {
17797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017801 }
17802
Jeff Johnsone7245742012-09-05 17:12:55 -070017803 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
17804
Jeff Johnson295189b2012-06-20 16:38:30 -070017805 /*-------------------------------------------------------------------------
17806 Extract response and send it to UMAC
17807 -------------------------------------------------------------------------*/
17808 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017809 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017810
17811 /*Notify UMAC*/
17812 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
17813
Jeff Johnsone7245742012-09-05 17:12:55 -070017814 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017815}/*WDI_ProcessKeepAliveRsp*/
17816
17817/**
17818 @brief Process wowl add ptrn Rsp function (called when a
17819 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017820
17821 @param pWDICtx: pointer to the WLAN DAL context
17822 pEventData: pointer to the event information structure
17823
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 @see
17825 @return Result of the function call
17826*/
17827WDI_Status
17828WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017829(
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 WDI_ControlBlockType* pWDICtx,
17831 WDI_EventInfoType* pEventData
17832)
17833{
Jeff Johnson295189b2012-06-20 16:38:30 -070017834 eHalStatus halStatus;
17835 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017836 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
17837 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
17838
Jeff Johnson295189b2012-06-20 16:38:30 -070017839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17840
17841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017842 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017843 -------------------------------------------------------------------------*/
17844 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17845 ( NULL == pEventData->pEventData))
17846 {
17847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017848 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017851 }
17852
17853 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
17854
17855 /*-------------------------------------------------------------------------
17856 Extract response and send it to UMAC
17857 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017858 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17859 {
17860 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
17861 pEventData->pEventData,
17862 sizeof(halAddWowlBcastPtrRsp));
17863
17864 wdiWowlAddBcPtrRsp.wdiStatus =
17865 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
17866 }
17867 else
17868 {
17869 halStatus = *((eHalStatus*)pEventData->pEventData);
17870 wdiWowlAddBcPtrRsp.wdiStatus =
17871 WDI_HAL_2_WDI_STATUS(halStatus);
17872 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017873
17874 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017875 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, 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_ProcessWowlAddBcPtrnRsp*/
17879
17880/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017881 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017882 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017883
17884 @param pWDICtx: pointer to the WLAN DAL context
17885 pEventData: pointer to the event information structure
17886
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 @see
17888 @return Result of the function call
17889*/
17890WDI_Status
17891WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017892(
Jeff Johnson295189b2012-06-20 16:38:30 -070017893 WDI_ControlBlockType* pWDICtx,
17894 WDI_EventInfoType* pEventData
17895)
17896{
Jeff Johnson295189b2012-06-20 16:38:30 -070017897 eHalStatus halStatus;
17898 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017899 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
17900 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
17916
17917 /*-------------------------------------------------------------------------
17918 Extract response and send it to UMAC
17919 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017920 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17921 {
17922 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
17923 pEventData->pEventData,
17924 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017925
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017926 wdiWowlDelBcstPtrRsp.wdiStatus =
17927 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
17928 }
17929 else
17930 {
17931 halStatus = *((eHalStatus*)pEventData->pEventData);
17932 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17933 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017934 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017935 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017936
Jeff Johnsone7245742012-09-05 17:12:55 -070017937 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017938}/*WDI_ProcessWowlDelBcPtrnRsp*/
17939
17940/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017941 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017942 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017943
17944 @param pWDICtx: pointer to the WLAN DAL context
17945 pEventData: pointer to the event information structure
17946
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 @see
17948 @return Result of the function call
17949*/
17950WDI_Status
17951WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017952(
Jeff Johnson295189b2012-06-20 16:38:30 -070017953 WDI_ControlBlockType* pWDICtx,
17954 WDI_EventInfoType* pEventData
17955)
17956{
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 eHalStatus halStatus;
17958 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017959 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
17960 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17962
17963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017964 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017965 -------------------------------------------------------------------------*/
17966 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17967 ( NULL == pEventData->pEventData))
17968 {
17969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017970 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017972 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017973 }
17974
17975 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
17976
17977 /*-------------------------------------------------------------------------
17978 Extract response and send it to UMAC
17979 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017980 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17981 {
17982 wpalMemoryCopy( &halEnterWowlRspParams,
17983 (wpt_uint8*)pEventData->pEventData,
17984 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017985
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017986 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
17987 wdiwowlEnterRsp.status =
17988 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
17989 }
17990 else
17991 {
17992 halStatus = *((eHalStatus*)pEventData->pEventData);
17993 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17994 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017996 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017997
Jeff Johnsone7245742012-09-05 17:12:55 -070017998 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017999}/*WDI_ProcessWowlEnterRsp*/
18000
18001/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018002 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018003 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018004
18005 @param pWDICtx: pointer to the WLAN DAL context
18006 pEventData: pointer to the event information structure
18007
Jeff Johnson295189b2012-06-20 16:38:30 -070018008 @see
18009 @return Result of the function call
18010*/
18011WDI_Status
18012WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018013(
Jeff Johnson295189b2012-06-20 16:38:30 -070018014 WDI_ControlBlockType* pWDICtx,
18015 WDI_EventInfoType* pEventData
18016)
18017{
Jeff Johnson295189b2012-06-20 16:38:30 -070018018 eHalStatus halStatus;
18019 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018020 tHalExitWowlRspParams halExitWowlRspParams;
18021 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18022
Jeff Johnson295189b2012-06-20 16:38:30 -070018023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18024
18025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018027 -------------------------------------------------------------------------*/
18028 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18029 ( NULL == pEventData->pEventData))
18030 {
18031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018035 }
18036
18037 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18038
18039 /*-------------------------------------------------------------------------
18040 Extract response and send it to UMAC
18041 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018042 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18043 {
18044 wpalMemoryCopy( &halExitWowlRspParams,
18045 pEventData->pEventData,
18046 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018047
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018048 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18049 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18050
18051 }
18052 else
18053 {
18054 halStatus = *((eHalStatus*)pEventData->pEventData);
18055 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18056 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018057 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018058 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018059
Jeff Johnsone7245742012-09-05 17:12:55 -070018060 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018061}/*WDI_ProcessWowlExitRsp*/
18062
18063/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018064 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018065 (called when a response is being received over the bus
18066 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018067
18068 @param pWDICtx: pointer to the WLAN DAL context
18069 pEventData: pointer to the event information structure
18070
Jeff Johnson295189b2012-06-20 16:38:30 -070018071 @see
18072 @return Result of the function call
18073*/
18074WDI_Status
18075WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018076(
Jeff Johnson295189b2012-06-20 16:38:30 -070018077 WDI_ControlBlockType* pWDICtx,
18078 WDI_EventInfoType* pEventData
18079)
18080{
18081 WDI_Status wdiStatus;
18082 eHalStatus halStatus;
18083 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18085
18086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018087 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018088 -------------------------------------------------------------------------*/
18089 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18090 ( NULL == pEventData->pEventData))
18091 {
18092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 }
18097
18098 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18099
18100 /*-------------------------------------------------------------------------
18101 Extract response and send it to UMAC
18102 -------------------------------------------------------------------------*/
18103 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018105
18106 /*Notify UMAC*/
18107 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18108
Jeff Johnsone7245742012-09-05 17:12:55 -070018109 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018110}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18111
18112
18113/**
18114 @brief Process Nv download(called when a response
18115 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018116
18117 @param pWDICtx: pointer to the WLAN DAL context
18118 pEventData: pointer to the event information structure
18119
Jeff Johnson295189b2012-06-20 16:38:30 -070018120 @see
18121 @return Result of the function call
18122*/
18123WDI_Status
18124WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018125(
Jeff Johnson295189b2012-06-20 16:38:30 -070018126 WDI_ControlBlockType* pWDICtx,
18127 WDI_EventInfoType* pEventData
18128)
18129{
18130
18131 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18132 tHalNvImgDownloadRspParams halNvDownloadRsp;
18133 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18134
18135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018136 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018137 -------------------------------------------------------------------------*/
18138 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18139 ( NULL == pEventData->pEventData))
18140 {
18141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018142 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018145 }
18146
18147 /*-------------------------------------------------------------------------
18148 Extract response and send it to UMAC
18149 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018150 wpalMemoryCopy( &halNvDownloadRsp,
18151 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018152 sizeof(halNvDownloadRsp));
18153
18154 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18155
18156 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018157 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18158 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 {
18160 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018161 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 }
18163 else
18164 {
18165 /*Reset the Nv related global information in WDI context information */
18166 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18167 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18168 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18169 /*call WDA callback function for last fragment */
18170 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18171 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18172 }
18173
Jeff Johnsone7245742012-09-05 17:12:55 -070018174 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018175}
18176#ifdef WLAN_FEATURE_VOWIFI_11R
18177/**
18178 @brief Process Add TSpec Rsp function (called when a response
18179 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018180
18181 @param pWDICtx: pointer to the WLAN DAL context
18182 pEventData: pointer to the event information structure
18183
Jeff Johnson295189b2012-06-20 16:38:30 -070018184 @see
18185 @return Result of the function call
18186*/
18187WDI_Status
18188WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018189(
Jeff Johnson295189b2012-06-20 16:38:30 -070018190 WDI_ControlBlockType* pWDICtx,
18191 WDI_EventInfoType* pEventData
18192)
18193{
18194 WDI_Status wdiStatus;
18195 tAggrAddTsRspParams aggrAddTsRsp;
18196 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18198
18199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018200 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 -------------------------------------------------------------------------*/
18202 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18203 ( NULL == pEventData->pEventData))
18204 {
18205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018206 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018209 }
18210
18211 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18212
18213 /*-------------------------------------------------------------------------
18214 Extract response and send it to UMAC
18215 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018216 wpalMemoryCopy( &aggrAddTsRsp,
18217 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018218 sizeof(aggrAddTsRsp));
18219
18220 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018221 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018222
18223 /*Notify UMAC*/
18224 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18225
Jeff Johnsone7245742012-09-05 17:12:55 -070018226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018227}/*WDI_ProcessAddTSpecRsp*/
18228#endif /* WLAN_FEATURE_VOWIFI_11R */
18229
18230/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018231 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018232 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018233
18234 @param pWDICtx: pointer to the WLAN DAL context
18235 pEventData: pointer to the event information structure
18236
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 @see
18238 @return Result of the function call
18239*/
18240WDI_Status
18241WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018242(
Jeff Johnson295189b2012-06-20 16:38:30 -070018243 WDI_ControlBlockType* pWDICtx,
18244 WDI_EventInfoType* pEventData
18245)
18246{
18247 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18248 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18249 tHalHostResumeRspParams hostResumeRspMsg;
18250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18251
18252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018254 -------------------------------------------------------------------------*/
18255 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18256 ( NULL == pEventData->pEventData))
18257 {
18258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018262 }
18263
18264 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18265
18266 /*-------------------------------------------------------------------------
18267 Extract response and send it to UMAC
18268 -------------------------------------------------------------------------*/
18269
Jeff Johnsone7245742012-09-05 17:12:55 -070018270 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018271 (wpt_uint8*)pEventData->pEventData,
18272 sizeof(hostResumeRspMsg));
18273
Jeff Johnsone7245742012-09-05 17:12:55 -070018274 wdiResumeRspParams.wdiStatus =
18275 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018276
18277 /*Notify UMAC*/
18278 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18279
18280 return WDI_STATUS_SUCCESS;
18281}
18282
18283/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018284 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018285 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018286
18287 @param pWDICtx: pointer to the WLAN DAL context
18288 pEventData: pointer to the event information structure
18289
Jeff Johnson295189b2012-06-20 16:38:30 -070018290 @see
18291 @return Result of the function call
18292*/
18293WDI_Status
18294WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018295(
Jeff Johnson295189b2012-06-20 16:38:30 -070018296 WDI_ControlBlockType* pWDICtx,
18297 WDI_EventInfoType* pEventData
18298)
18299{
18300 WDI_Status wdiStatus;
18301 eHalStatus halStatus;
18302 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18304
18305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018307 -------------------------------------------------------------------------*/
18308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18309 ( NULL == pEventData->pEventData))
18310 {
18311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018315 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018316
18317 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018318
18319 /*-------------------------------------------------------------------------
18320 Extract response and send it to UMAC
18321 -------------------------------------------------------------------------*/
18322 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018323 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018324
18325 /*Notify UMAC*/
18326 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18327
Jeff Johnsone7245742012-09-05 17:12:55 -070018328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018329}/*WDI_ProcessSetTxPerTrackingRsp*/
18330
18331/*==========================================================================
18332 Indications from HAL
18333 ==========================================================================*/
18334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018335 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018336 indication of this kind is being received over the bus
18337 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018338
18339 @param pWDICtx: pointer to the WLAN DAL context
18340 pEventData: pointer to the event information structure
18341
Jeff Johnson295189b2012-06-20 16:38:30 -070018342 @see
18343 @return Result of the function call
18344*/
18345WDI_Status
18346WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018347(
Jeff Johnson295189b2012-06-20 16:38:30 -070018348 WDI_ControlBlockType* pWDICtx,
18349 WDI_EventInfoType* pEventData
18350)
18351{
18352 WDI_LowLevelIndType wdiInd;
18353 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18355
18356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018358 -------------------------------------------------------------------------*/
18359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18360 ( NULL == pEventData->pEventData))
18361 {
18362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018366 }
18367
18368 /*-------------------------------------------------------------------------
18369 Extract indication and send it to UMAC
18370 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018371 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18372 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018373 sizeof(tHalRSSINotification));
18374
18375 /*Fill in the indication parameters*/
18376 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18377 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18378 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18379 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18380 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18381 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18382 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18383 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18384 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18385 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18386 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18387 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18388 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018389 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18390 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018391
ltimariu034f7d62013-01-24 18:54:33 -080018392 if ( pWDICtx->wdiLowLevelIndCB )
18393 {
18394 /*Notify UMAC of indication*/
18395 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18396 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018397
18398 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018399}/*WDI_ProcessLowRSSIInd*/
18400
18401
18402/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018403 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018404 an indication of this kind is being received over the
18405 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018406
18407 @param pWDICtx: pointer to the WLAN DAL context
18408 pEventData: pointer to the event information structure
18409
Jeff Johnson295189b2012-06-20 16:38:30 -070018410 @see
18411 @return Result of the function call
18412*/
18413WDI_Status
18414WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018415(
Jeff Johnson295189b2012-06-20 16:38:30 -070018416 WDI_ControlBlockType* pWDICtx,
18417 WDI_EventInfoType* pEventData
18418)
18419{
18420 WDI_Status wdiStatus;
18421 eHalStatus halStatus;
18422 WDI_LowLevelIndType wdiInd;
18423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18424
18425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018426 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018427 -------------------------------------------------------------------------*/
18428 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18429 ( NULL == pEventData->pEventData))
18430 {
18431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 }
18436
18437 /*-------------------------------------------------------------------------
18438 Extract indication and send it to UMAC
18439 -------------------------------------------------------------------------*/
18440 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18441 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018442 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018443
18444 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018445 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
18446
ltimariu034f7d62013-01-24 18:54:33 -080018447 if ( pWDICtx->wdiLowLevelIndCB )
18448 {
18449 /*Notify UMAC*/
18450 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18451 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018452
18453 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018454}/*WDI_ProcessMissedBeaconInd*/
18455
18456
18457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018458 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018459 an indication of this kind is being received over the
18460 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018461
18462 @param pWDICtx: pointer to the WLAN DAL context
18463 pEventData: pointer to the event information structure
18464
Jeff Johnson295189b2012-06-20 16:38:30 -070018465 @see
18466 @return Result of the function call
18467*/
18468WDI_Status
18469WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018470(
Jeff Johnson295189b2012-06-20 16:38:30 -070018471 WDI_ControlBlockType* pWDICtx,
18472 WDI_EventInfoType* pEventData
18473)
18474{
18475 WDI_Status wdiStatus;
18476 eHalStatus halStatus;
18477 WDI_LowLevelIndType wdiInd;
18478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18479
18480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018482 -------------------------------------------------------------------------*/
18483 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18484 ( NULL == pEventData->pEventData))
18485 {
18486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018487 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 }
18491
18492 /*-------------------------------------------------------------------------
18493 Extract indication and send it to UMAC
18494 -------------------------------------------------------------------------*/
18495 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18496 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018497 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018498
18499 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018500 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018501 /* ! TO DO - fill in from HAL struct:
18502 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18503
ltimariu034f7d62013-01-24 18:54:33 -080018504 if ( pWDICtx->wdiLowLevelIndCB )
18505 {
18506 /*Notify UMAC*/
18507 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18508 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018509
18510 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018511}/*WDI_ProcessUnkAddrFrameInd*/
18512
18513
18514/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018515 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018516 indication of this kind is being received over the bus
18517 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018518
18519 @param pWDICtx: pointer to the WLAN DAL context
18520 pEventData: pointer to the event information structure
18521
Jeff Johnson295189b2012-06-20 16:38:30 -070018522 @see
18523 @return Result of the function call
18524*/
18525WDI_Status
18526WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018527(
Jeff Johnson295189b2012-06-20 16:38:30 -070018528 WDI_ControlBlockType* pWDICtx,
18529 WDI_EventInfoType* pEventData
18530)
18531{
18532 WDI_LowLevelIndType wdiInd;
18533 tpSirMicFailureInd pHalMicFailureInd;
18534
18535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18536
18537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018539 -------------------------------------------------------------------------*/
18540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18541 ( NULL == pEventData->pEventData))
18542 {
18543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018547 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018548
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18550 /*-------------------------------------------------------------------------
18551 Extract indication and send it to UMAC
18552 -------------------------------------------------------------------------*/
18553
18554 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018555 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018556 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18557 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18558 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18559 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18560 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18561 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18562 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18563 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018564 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018566 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018567 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018568 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018569 pHalMicFailureInd->info.keyId;
18570 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18571 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18572 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18573 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080018574
18575 if ( pWDICtx->wdiLowLevelIndCB )
18576 {
18577 /*Notify UMAC*/
18578 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18579 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018580
18581 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018582}/*WDI_ProcessMicFailureInd*/
18583
18584
18585/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018586 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018587 an indication of this kind is being received over the
18588 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018589
18590 @param pWDICtx: pointer to the WLAN DAL context
18591 pEventData: pointer to the event information structure
18592
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 @see
18594 @return Result of the function call
18595*/
18596WDI_Status
18597WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018598(
Jeff Johnson295189b2012-06-20 16:38:30 -070018599 WDI_ControlBlockType* pWDICtx,
18600 WDI_EventInfoType* pEventData
18601)
18602{
18603 WDI_Status wdiStatus;
18604 eHalStatus halStatus;
18605 WDI_LowLevelIndType wdiInd;
18606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18607
18608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018610 -------------------------------------------------------------------------*/
18611 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18612 ( NULL == pEventData->pEventData))
18613 {
18614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018618 }
18619
18620 /*-------------------------------------------------------------------------
18621 Extract indication and send it to UMAC
18622 -------------------------------------------------------------------------*/
18623
18624 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18625 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018626 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018627
18628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18629 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070018630
Jeff Johnson295189b2012-06-20 16:38:30 -070018631 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018632 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
18633 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018634
ltimariu034f7d62013-01-24 18:54:33 -080018635 if ( pWDICtx->wdiLowLevelIndCB )
18636 {
18637 /*Notify UMAC*/
18638 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18639 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018640
18641 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018642}/*WDI_ProcessFatalErrorInd*/
18643
18644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018645 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 an indication of this kind is being received over the
18647 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018648
18649 @param pWDICtx: pointer to the WLAN DAL context
18650 pEventData: pointer to the event information structure
18651
Jeff Johnson295189b2012-06-20 16:38:30 -070018652 @see
18653 @return Result of the function call
18654*/
18655WDI_Status
18656WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018657(
Jeff Johnson295189b2012-06-20 16:38:30 -070018658 WDI_ControlBlockType* pWDICtx,
18659 WDI_EventInfoType* pEventData
18660)
18661{
18662 tDeleteStaContextParams halDelSTACtx;
18663 WDI_LowLevelIndType wdiInd;
18664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18665
18666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018668 -------------------------------------------------------------------------*/
18669 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18670 ( NULL == pEventData->pEventData))
18671 {
18672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018673 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 }
18677
18678 /*-------------------------------------------------------------------------
18679 Extract indication and send it to UMAC
18680 -------------------------------------------------------------------------*/
18681
18682 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018683 wpalMemoryCopy( &halDelSTACtx,
18684 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018685 sizeof(halDelSTACtx));
18686
18687 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018688 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018689
18690 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
18691 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
18692 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
18693 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
18694
Jeff Johnsone7245742012-09-05 17:12:55 -070018695 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018697 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018698 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018699 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
18700 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070018701
ltimariu034f7d62013-01-24 18:54:33 -080018702 if ( pWDICtx->wdiLowLevelIndCB )
18703 {
18704 /*Notify UMAC*/
18705 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18706 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018707
18708 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018709}/*WDI_ProcessDelSTAInd*/
18710
18711/**
18712*@brief Process Coex Indication function (called when
18713 an indication of this kind is being received over the
18714 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018715
18716 @param pWDICtx: pointer to the WLAN DAL context
18717 pEventData: pointer to the event information structure
18718
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 @see
18720 @return Result of the function call
18721*/
18722WDI_Status
18723WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018724(
Jeff Johnson295189b2012-06-20 16:38:30 -070018725 WDI_ControlBlockType* pWDICtx,
18726 WDI_EventInfoType* pEventData
18727)
18728{
18729 WDI_LowLevelIndType wdiInd;
18730 tCoexIndMsg halCoexIndMsg;
18731 wpt_uint32 index;
18732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18733
18734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018736 -------------------------------------------------------------------------*/
18737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18738 ( NULL == pEventData->pEventData ))
18739 {
18740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018742 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070018743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018744 }
18745
18746 /*-------------------------------------------------------------------------
18747 Extract indication and send it to UMAC
18748 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018749 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
18750 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018751 sizeof(halCoexIndMsg.coexIndParams) );
18752
18753 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018754 wdiInd.wdiIndicationType = WDI_COEX_IND;
18755 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070018756 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
18757 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018758 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070018759 }
18760
18761 // DEBUG
18762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18763 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070018764 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
18765 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
18766 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
18767 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
18768 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070018769
ltimariu034f7d62013-01-24 18:54:33 -080018770 if ( pWDICtx->wdiLowLevelIndCB )
18771 {
18772 /*Notify UMAC*/
18773 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18774 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018775
18776 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018777}/*WDI_ProcessCoexInd*/
18778
18779/**
18780*@brief Process Tx Complete Indication function (called when
18781 an indication of this kind is being received over the
18782 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018783
18784 @param pWDICtx: pointer to the WLAN DAL context
18785 pEventData: pointer to the event information structure
18786
Jeff Johnson295189b2012-06-20 16:38:30 -070018787 @see
18788 @return Result of the function call
18789*/
18790WDI_Status
18791WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018792(
Jeff Johnson295189b2012-06-20 16:38:30 -070018793 WDI_ControlBlockType* pWDICtx,
18794 WDI_EventInfoType* pEventData
18795)
18796{
18797 WDI_LowLevelIndType wdiInd;
18798 tTxComplIndMsg halTxComplIndMsg;
18799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18800
18801 /*-------------------------------------------------------------------------
18802 Sanity check
18803 -------------------------------------------------------------------------*/
18804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18805 ( NULL == pEventData->pEventData ))
18806 {
18807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018809 WDI_ASSERT( 0 );
18810 return WDI_STATUS_E_FAILURE;
18811 }
18812
18813 /*-------------------------------------------------------------------------
18814 Extract indication and send it to UMAC
18815 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018816 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
18817 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 sizeof(halTxComplIndMsg.txComplParams) );
18819
18820 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018821 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
18822 wdiInd.wdiIndicationData.tx_complete_status
18823 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070018824
ltimariu034f7d62013-01-24 18:54:33 -080018825 if ( pWDICtx->wdiLowLevelIndCB )
18826 {
18827 /*Notify UMAC*/
18828 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18829 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018830
18831 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018832}/*WDI_ProcessTxCompleteInd*/
18833
18834#ifdef WLAN_FEATURE_P2P
18835/**
Viral Modi9dc288a2012-12-10 13:09:21 -080018836*@brief Process Noa Start Indication function (called when
18837 an indication of this kind is being received over the
18838 bus from HAL)
18839
18840 @param pWDICtx: pointer to the WLAN DAL context
18841 pEventData: pointer to the event information structure
18842
18843 @see
18844 @return Result of the function call
18845*/
18846WDI_Status
18847WDI_ProcessP2pNoaStartInd
18848(
18849 WDI_ControlBlockType* pWDICtx,
18850 WDI_EventInfoType* pEventData
18851)
18852{
18853 WDI_LowLevelIndType wdiInd;
18854 tNoaStartIndMsg halNoaStartIndMsg;
18855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18856
18857 /*-------------------------------------------------------------------------
18858 Sanity check
18859 -------------------------------------------------------------------------*/
18860 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18861 ( NULL == pEventData->pEventData ))
18862 {
18863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18864 "%s: Invalid parameters", __func__);
18865 WDI_ASSERT( 0 );
18866 return WDI_STATUS_E_FAILURE;
18867 }
18868
18869 /*-------------------------------------------------------------------------
18870 Extract indication and send it to UMAC
18871 -------------------------------------------------------------------------*/
18872 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
18873 pEventData->pEventData,
18874 sizeof(halNoaStartIndMsg.noaStartIndParams) );
18875
18876 /*Fill in the indication parameters*/
18877 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
18878
18879 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
18880 = halNoaStartIndMsg.noaStartIndParams.status;
18881
18882 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
18883 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
18884
18885 /*Notify UMAC*/
18886 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18887
18888 return WDI_STATUS_SUCCESS;
18889}/*WDI_ProcessNoaAttrInd*/
18890
18891/**
Jeff Johnson295189b2012-06-20 16:38:30 -070018892*@brief Process Noa Attr Indication function (called when
18893 an indication of this kind is being received over the
18894 bus from HAL)
18895
18896 @param pWDICtx: pointer to the WLAN DAL context
18897 pEventData: pointer to the event information structure
18898
18899 @see
18900 @return Result of the function call
18901*/
18902WDI_Status
18903WDI_ProcessP2pNoaAttrInd
18904(
18905 WDI_ControlBlockType* pWDICtx,
18906 WDI_EventInfoType* pEventData
18907)
18908{
18909 WDI_LowLevelIndType wdiInd;
18910 tNoaAttrIndMsg halNoaAttrIndMsg;
18911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18912
18913 /*-------------------------------------------------------------------------
18914 Sanity check
18915 -------------------------------------------------------------------------*/
18916 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18917 ( NULL == pEventData->pEventData ))
18918 {
18919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018921 WDI_ASSERT( 0 );
18922 return WDI_STATUS_E_FAILURE;
18923 }
18924
18925 /*-------------------------------------------------------------------------
18926 Extract indication and send it to UMAC
18927 -------------------------------------------------------------------------*/
18928 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
18929 pEventData->pEventData,
18930 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
18931
18932 /*Fill in the indication parameters*/
18933 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070018934
Jeff Johnson295189b2012-06-20 16:38:30 -070018935 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
18936 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070018937
Jeff Johnson295189b2012-06-20 16:38:30 -070018938 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
18939 = halNoaAttrIndMsg.noaAttrIndParams.index;
18940 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
18941 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
18942 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
18943 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070018944
Jeff Johnson295189b2012-06-20 16:38:30 -070018945 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
18946 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
18947 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
18948 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
18949 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
18950 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
18951 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
18952 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070018953
Jeff Johnson295189b2012-06-20 16:38:30 -070018954 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
18955 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
18956 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
18957 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
18958 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
18959 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
18960 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
18961 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
18962
ltimariu034f7d62013-01-24 18:54:33 -080018963 if ( pWDICtx->wdiLowLevelIndCB )
18964 {
18965 /*Notify UMAC*/
18966 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18967 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018968
18969 return WDI_STATUS_SUCCESS;
18970}/*WDI_ProcessNoaAttrInd*/
18971#endif
18972
18973/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018974 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 an indication of this kind is being received over the
18976 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018977
18978 @param pWDICtx: pointer to the WLAN DAL context
18979 pEventData: pointer to the event information structure
18980
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 @see
18982 @return Result of the function call
18983*/
18984WDI_Status
18985WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018986(
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 WDI_ControlBlockType* pWDICtx,
18988 WDI_EventInfoType* pEventData
18989)
18990{
18991 WDI_LowLevelIndType wdiInd;
18992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070018993
Jeff Johnson295189b2012-06-20 16:38:30 -070018994 /*-------------------------------------------------------------------------
18995 Extract indication and send it to UMAC
18996 -------------------------------------------------------------------------*/
18997 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018998 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
18999
ltimariu034f7d62013-01-24 18:54:33 -080019000 if ( pWDICtx->wdiLowLevelIndCB )
19001 {
19002 /*Notify UMAC*/
19003 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19004 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019005
Jeff Johnsone7245742012-09-05 17:12:55 -070019006 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019007}/*WDI_ProcessTxPerHitInd*/
19008
19009#ifdef ANI_MANF_DIAG
19010/**
19011 @brief WDI_ProcessFTMCommandReq
19012 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019013
19014 @param pWDICtx: pointer to the WLAN DAL context
19015 pEventData: pointer to the event information structure
19016
Jeff Johnson295189b2012-06-20 16:38:30 -070019017 @see
19018 @return Result of the function call
19019*/
19020WDI_Status
19021WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019022(
Jeff Johnson295189b2012-06-20 16:38:30 -070019023 WDI_ControlBlockType* pWDICtx,
19024 WDI_EventInfoType* pEventData
19025)
19026{
19027 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19028 wpt_uint8 *ftmCommandBuffer = NULL;
19029 wpt_uint16 dataOffset;
19030 wpt_uint16 bufferSize;
19031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019033 -------------------------------------------------------------------------*/
19034 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19035 ( NULL == pEventData->pEventData))
19036
19037 {
19038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 }
19043
19044 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19045
19046 /* Get MSG Buffer */
19047 WDI_GetMessageBuffer(pWDICtx,
19048 WDI_FTM_CMD_REQ,
19049 ftmCommandReq->bodyLength,
19050 &ftmCommandBuffer,
19051 &dataOffset,
19052 &bufferSize);
19053
19054 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19055 ftmCommandReq->FTMCommandBody,
19056 ftmCommandReq->bodyLength);
19057
19058 /* Send MSG */
19059 return WDI_SendMsg(pWDICtx,
19060 ftmCommandBuffer,
19061 bufferSize,
19062 pEventData->pCBfnc,
19063 pEventData->pUserData,
19064 WDI_FTM_CMD_RESP);
19065}
19066
19067/**
19068 @brief WDI_ProcessFTMCommandRsp
19069 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019070
19071 @param pWDICtx: pointer to the WLAN DAL context
19072 pEventData: pointer to the event information structure
19073
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 @see
19075 @return Result of the function call
19076*/
19077WDI_Status
19078WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019079(
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 WDI_ControlBlockType* pWDICtx,
19081 WDI_EventInfoType* pEventData
19082)
19083{
19084 WDI_FTMCommandRspCb ftmCMDRspCb;
19085 tProcessPttRspParams *ftmCMDRspData = NULL;
19086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19087
19088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019089 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019090 -------------------------------------------------------------------------*/
19091 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19092 ( NULL == pEventData->pEventData))
19093 {
19094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019095 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019096 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019097 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 }
19099
19100 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19101
19102 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19103
Jeff Johnsone7245742012-09-05 17:12:55 -070019104 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19105 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19107
19108 /*Notify UMAC*/
19109 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19110
Jeff Johnsone7245742012-09-05 17:12:55 -070019111 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019112}
19113#endif /* ANI_MANF_DIAG */
19114/**
19115 @brief WDI_ProcessHalDumpCmdReq
19116 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019117
19118 @param pWDICtx: pointer to the WLAN DAL context
19119 pEventData: pointer to the event information structure
19120
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 @see
19122 @return Result of the function call
19123*/
19124WDI_Status
19125WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019126(
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 WDI_ControlBlockType* pWDICtx,
19128 WDI_EventInfoType* pEventData
19129)
19130{
19131 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19132 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19133 wpt_uint16 usDataOffset = 0;
19134 wpt_uint16 usSendSize = 0;
19135 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019136 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019137
19138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019139 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019140 -------------------------------------------------------------------------*/
19141 if (( NULL == pEventData ) ||
19142 ( NULL == pEventData->pEventData) ||
19143 ( NULL == pEventData->pCBfnc ))
19144 {
19145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019146 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019147 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019149 }
19150
19151 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19152 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19153
19154 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019155 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019156 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019157 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019158 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019159 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019160 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019161 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019162 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019163 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019164 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019165
Jeff Johnson295189b2012-06-20 16:38:30 -070019166 /*-----------------------------------------------------------------------
19167 Get message buffer
19168 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019169 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019170 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19171 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019172 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019173 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19174 {
19175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19176 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19177 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019180 }
19181
Jeff Johnsone7245742012-09-05 17:12:55 -070019182 wpalMemoryCopy( pSendBuffer+usDataOffset,
19183 &halDumpCmdReqMsg.dumpCmdReqParams,
19184 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019185
19186 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019187 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019188
19189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019190 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019191 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019192 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19193 wdiHALDumpCmdRspCb, pEventData->pUserData,
19194 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019195}
19196
19197/**
19198 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019199 Process hal Dump Command Response from HAL, simply route to HDD
19200
19201 @param pWDICtx: pointer to the WLAN DAL context
19202 pEventData: pointer to the event information structure
19203
Jeff Johnson295189b2012-06-20 16:38:30 -070019204 @see
19205 @return Result of the function call
19206*/
19207WDI_Status
19208WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019209(
Jeff Johnson295189b2012-06-20 16:38:30 -070019210 WDI_ControlBlockType* pWDICtx,
19211 WDI_EventInfoType* pEventData
19212)
19213{
19214 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019215 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019216 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19217
19218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019220 -------------------------------------------------------------------------*/
19221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19222 ( NULL == pEventData->pEventData))
19223 {
19224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019228 }
19229
Jeff Johnsone7245742012-09-05 17:12:55 -070019230 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019231
19232 /*Initialize the WDI Response structure */
19233 wdiHALDumpCmdRsp.usBufferLen = 0;
19234 wdiHALDumpCmdRsp.pBuffer = NULL;
19235
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019236 wpalMemoryCopy( &halDumpCmdRspParams,
19237 pEventData->pEventData,
19238 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019239
19240 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019241 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019242
19243 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019244 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019245 {
19246 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019247 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19248 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19249
19250 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19251 &halDumpCmdRspParams.rspBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019252 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19253 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019254
Jeff Johnson295189b2012-06-20 16:38:30 -070019255 /*Notify UMAC*/
19256 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19257
19258 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19259 {
19260 /* Free the allocated buffer */
19261 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19262 }
19263 return WDI_STATUS_SUCCESS;
19264}
19265
19266/*==========================================================================
19267 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019268
Jeff Johnson295189b2012-06-20 16:38:30 -070019269 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019270 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019271==========================================================================*/
19272/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019273 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019274 when it wishes to send up a notification like the ones
19275 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019276
Jeff Johnson295189b2012-06-20 16:38:30 -070019277 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019278
19279 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019280 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019281 wctsNotifyCBData: the callback data of the user
19282
Jeff Johnson295189b2012-06-20 16:38:30 -070019283 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019284
19285 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019286*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019287void
Jeff Johnson295189b2012-06-20 16:38:30 -070019288WDI_NotifyMsgCTSCB
19289(
Jeff Johnsone7245742012-09-05 17:12:55 -070019290 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019291 WCTS_NotifyEventType wctsEvent,
19292 void* wctsNotifyCBData
19293)
19294{
Jeff Johnsone7245742012-09-05 17:12:55 -070019295 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19297
19298 if (NULL == pWDICtx )
19299 {
19300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019303 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019304 }
19305
19306 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19307 {
19308 /* callback presumably occurred after close */
19309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019310 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019311 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019312 }
19313
19314 if ( WCTS_EVENT_OPEN == wctsEvent )
19315 {
19316 /*Flag must be set atomically as it is checked from incoming request
19317 functions*/
19318 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019319 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019320
19321 /*Nothing to do - so try to dequeue any pending request that may have
19322 occurred while we were trying to establish this*/
19323 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019324 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019325 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019326 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019327 {
19328 /*Flag must be set atomically as it is checked from incoming request
19329 functions*/
19330 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019331 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019332
19333 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019334 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019335 wpalMutexRelease(&pWDICtx->wptMutex);
19336
19337 /*Notify that the Control Channel is closed */
19338 wpalEventSet(&pWDICtx->wctsActionEvent);
19339 }
19340
19341}/*WDI_NotifyMsgCTSCB*/
19342
19343
19344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019345 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019346 when it wishes to send up a packet received over the
19347 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019348
Jeff Johnson295189b2012-06-20 16:38:30 -070019349 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019350
19351 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019352 pMsg: the packet
19353 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019354 wctsRxMsgCBData: the callback data of the user
19355
Jeff Johnson295189b2012-06-20 16:38:30 -070019356 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019357
19358 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019359*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019360void
19361WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019362(
Jeff Johnsone7245742012-09-05 17:12:55 -070019363 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019364 void* pMsg,
19365 wpt_uint32 uLen,
19366 void* wctsRxMsgCBData
19367)
19368{
Jeff Johnsone7245742012-09-05 17:12:55 -070019369 tHalMsgHeader *pHalMsgHeader;
19370 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019371 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19373
19374 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019376 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019377 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 ( uLen < sizeof(tHalMsgHeader)))
19379 {
19380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019383 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019384 }
19385
19386 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19387 {
19388 /* callback presumably occurred after close */
19389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019390 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019391 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019392 }
19393
Jeff Johnsone7245742012-09-05 17:12:55 -070019394 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019395 context - so no serialization is necessary here
19396 ! - revisit this assumption */
19397
19398 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19399
19400 if ( uLen != pHalMsgHeader->msgLen )
19401 {
19402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19403 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019404 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19405 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019406 }
19407
19408 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19409
19410 /*The message itself starts after the header*/
19411 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19412 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19413 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19414 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19415
19416
19417 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19418 {
19419 /*Stop the timer as the response was received */
19420 /*!UT - check for potential race conditions between stop and response */
19421 wpalTimerStop(&pWDICtx->wptResponseTimer);
19422 }
19423 /* Check if we receive a response message which is not expected */
19424 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19425 {
19426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19427 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19428 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019429 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019430 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19431 pWDICtx->wdiExpectedResponse);
19432 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19433 return;
19434 }
19435
19436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19437 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19438
19439 /*Post response event to the state machine*/
19440 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19441
19442}/*WDI_RXMsgCTSCB*/
19443
19444
19445/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019446 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019447========================================================================*/
19448
19449/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019450 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019451 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019452
Jeff Johnson295189b2012-06-20 16:38:30 -070019453 @param pWDICtx - pointer to the control block
19454
19455 @return Result of the function call
19456*/
19457WPT_INLINE WDI_Status
19458WDI_CleanCB
19459(
19460 WDI_ControlBlockType* pWDICtx
19461)
19462{
19463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19464
19465 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019466 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019467
Jeff Johnsone7245742012-09-05 17:12:55 -070019468 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19470 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19471
19472 WDI_ResetAssocSessions( pWDICtx );
19473
19474 return WDI_STATUS_SUCCESS;
19475}/*WDI_CleanCB*/
19476
19477
19478/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019479 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019480
Jeff Johnsone7245742012-09-05 17:12:55 -070019481
19482 @param pWDICtx: pointer to the WLAN DAL context
19483 pEventData: pointer to the event information structure
19484
Jeff Johnson295189b2012-06-20 16:38:30 -070019485 @see
19486 @return Result of the function call
19487*/
19488WPT_INLINE WDI_Status
19489WDI_ProcessRequest
19490(
19491 WDI_ControlBlockType* pWDICtx,
19492 WDI_EventInfoType* pEventData
19493)
19494{
19495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19496
Jeff Johnsone7245742012-09-05 17:12:55 -070019497 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019498 already checked these pointers*/
19499
19500 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19501 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019502 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19504 "Calling request processing function for req %s (%d) %x",
19505 WDI_getReqMsgString(pEventData->wdiRequest),
19506 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19507 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19508 }
19509 else
19510 {
19511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019512 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019513 pEventData->wdiRequest);
19514 return WDI_STATUS_E_NOT_IMPLEMENT;
19515 }
19516}/*WDI_ProcessRequest*/
19517
19518
19519/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019520 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019521 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019522 prefixes it with a send message header
19523
19524 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019525 wdiReqType: type of the request being sent
19526 uBufferLen: message buffer len
19527 pMsgBuffer: resulting allocated buffer
19528 pusDataOffset: offset in the buffer where the caller
19529 can start copying its message data
19530 puBufferSize: the resulting buffer size (offset+buff
19531 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019532
Jeff Johnson295189b2012-06-20 16:38:30 -070019533 @see
19534 @return Result of the function call
19535*/
19536WDI_Status
19537WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019538(
19539 WDI_ControlBlockType* pWDICtx,
19540 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019541 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019542 wpt_uint8** pMsgBuffer,
19543 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019544 wpt_uint16* pusBufferSize
19545)
19546{
19547 tHalMsgHeader halMsgHeader;
19548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19549
Jeff Johnsone7245742012-09-05 17:12:55 -070019550 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 again*/
19552
19553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019554 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019555 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019556 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019557 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19558 if ( NULL == *pMsgBuffer )
19559 {
19560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19561 "Unable to allocate message buffer for req %s (%d)",
19562 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019563 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019565 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019566 }
19567
19568 /*-------------------------------------------------------------------------
19569 Fill in the message header
19570 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019571 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19572 /* Fill msgVersion */
19573#ifdef WLAN_FEATURE_11AC
19574 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019575 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019576 else
19577#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019578 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019579
Jeff Johnsone7245742012-09-05 17:12:55 -070019580 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19581 *pusDataOffset = sizeof(halMsgHeader);
19582 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19583
19584 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019585}/*WDI_GetMessageBuffer*/
19586
19587
19588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019590 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019591 the CB
19592
19593 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019595
Jeff Johnson295189b2012-06-20 16:38:30 -070019596 usSendSize size of the buffer to be sent
19597 pRspCb: response callback - save in the WDI
19598 CB
19599 pUserData: user data associated with the
19600 callback
19601 wdiExpectedResponse: the code of the response that is
19602 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019603
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 @see
19605 @return Result of the function call
19606*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019607WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019608WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019609(
19610 WDI_ControlBlockType* pWDICtx,
19611 wpt_uint8* pSendBuffer,
19612 wpt_uint32 usSendSize,
19613 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019614 void* pUserData,
19615 WDI_ResponseEnumType wdiExpectedResponse
19616)
19617{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019618 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019619 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070019620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19621
19622 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019624 ------------------------------------------------------------------------*/
19625 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019626 pWDICtx->pfncRspCB = pRspCb;
19627 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019628
19629 /*-----------------------------------------------------------------------
19630 Call the CTS to send this message over - free message afterwards
19631 - notify transport failure
19632 Note: CTS is reponsible for freeing the message buffer.
19633 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019634 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
19635 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
19636 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019639 "Failed to send message over the bus - catastrophic failure");
19640
Jeff Johnsond13512a2012-07-17 11:42:19 -070019641 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019642 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019643 else
19644 {
19645 /* even when message was placed in CTS deferred Q, we will treat it
19646 success but log this info
19647 */
19648 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
19649 {
19650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19651 "WDI_SendMsg: message placed in CTS deferred Q, expected "
19652 "response %s (%d)",
19653 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19654 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080019655 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019656 }
19657 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019658
Jeff Johnsond13512a2012-07-17 11:42:19 -070019659 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 if ( NULL != pWDICtx->wdiReqStatusCB )
19661 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019662 /*Inform originator whether request went through or not*/
19663 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
19664 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019665 pWDICtx->wdiReqStatusCB = NULL;
19666 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070019667 callback(wdiStatus, callbackContext);
19668
19669 /*For WDI requests which have registered a request callback,
19670 inform the WDA caller of the same via setting the return value
19671 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
19672 end up repeating the functonality in the req callback for the
19673 WDI_STATUS_E_FAILURE case*/
19674 if (wdiStatus == WDI_STATUS_E_FAILURE)
19675 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070019676 }
19677
Jeff Johnsond13512a2012-07-17 11:42:19 -070019678 if ( wdiStatus == WDI_STATUS_SUCCESS )
19679 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 /*Start timer for the expected response */
19681 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019682
19683 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080019684 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070019685 }
19686 else
19687 {
Jeff Johnson1920a722012-12-10 14:28:09 -080019688 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070019689 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19690 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019691
Jeff Johnsond13512a2012-07-17 11:42:19 -070019692 return wdiStatus;
19693
Jeff Johnson295189b2012-06-20 16:38:30 -070019694}/*WDI_SendMsg*/
19695
19696
19697
19698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019699 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019700 the bus using the control transport and saves some info
19701 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070019702
19703 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019704 pSendBuffer: buffer to be sent
19705 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019706
Jeff Johnson295189b2012-06-20 16:38:30 -070019707 @see
19708 @return Result of the function call
19709*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019710WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019711WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070019712(
19713 WDI_ControlBlockType* pWDICtx,
19714 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019715 wpt_uint32 usSendSize
19716)
19717{
19718 wpt_uint32 uStatus ;
19719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19720
19721 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019722 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 Note: CTS is reponsible for freeing the message buffer.
19724 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019725 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019726 (void*)pSendBuffer, usSendSize );
19727
19728 /*Inform Upper MAC about the outcome of the request*/
19729 if ( NULL != pWDICtx->wdiReqStatusCB )
19730 {
19731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19732 "Send indication status : %d", uStatus);
19733
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019734 /* even if CTS placed indication into its deferred Q, we treat it
19735 * as success and let CTS drain its queue as per smd interrupt to CTS
19736 */
19737 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 -070019738 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019739 }
19740
19741 /*If sending of the message failed - it is considered catastrophic and
19742 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019743 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
19744 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
19745
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 {
19747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070019748 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070019749
19750 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19751 return WDI_STATUS_E_FAILURE;
19752 }
19753
Jeff Johnsone7245742012-09-05 17:12:55 -070019754 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019755}/*WDI_SendIndication*/
19756
19757
19758/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019759 @brief WDI_DetectedDeviceError - called internally by DAL when
19760 it has detected a failure in the device
19761
19762 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019763 usErrorCode: error code detected by WDI or received
19764 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019765
Jeff Johnson295189b2012-06-20 16:38:30 -070019766 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070019767 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019768*/
19769void
19770WDI_DetectedDeviceError
19771(
19772 WDI_ControlBlockType* pWDICtx,
19773 wpt_uint16 usErrorCode
19774)
19775{
19776 WDI_LowLevelIndType wdiInd;
19777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19778
19779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19780 "Device Error detected code: %d - transitioning to stopped state",
19781 usErrorCode);
19782
19783 wpalMutexAcquire(&pWDICtx->wptMutex);
19784
19785 WDI_STATableStop(pWDICtx);
19786
19787 WDI_ResetAssocSessions(pWDICtx);
19788
19789 /*Set the expected state transition to stopped - because the device
19790 experienced a failure*/
19791 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
19792
19793 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019794 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070019795
Jeff Johnsone7245742012-09-05 17:12:55 -070019796 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019797
19798 /*TO DO: - there should be an attempt to reset the device here*/
19799
19800 wpalMutexRelease(&pWDICtx->wptMutex);
19801
19802 /*------------------------------------------------------------------------
19803 Notify UMAC if a handler is registered
19804 ------------------------------------------------------------------------*/
19805 if (pWDICtx->wdiLowLevelIndCB)
19806 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019807 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19808 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019809
19810 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
19811 }
19812}/*WDI_DetectedDeviceError*/
19813
19814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019815 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070019816 we started on send message has expire - this should
19817 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070019818 reply - trigger catastrophic failure
19819 @param
19820
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070019822
19823 @see
19824 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019825*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019826void
Jeff Johnson295189b2012-06-20 16:38:30 -070019827WDI_ResponseTimerCB
19828(
19829 void *pUserData
19830)
19831{
19832 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
19833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19834
19835 if (NULL == pWDICtx )
19836 {
19837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019838 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019840 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019841 }
19842
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019843 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080019844 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019845
19846 /* If response timer is running at this time that means this timer
19847 * event is not for the last request but rather last-to-last request and
19848 * this timer event has come after we recevied respone for last-to-last
19849 * message
19850 */
19851 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
19852 {
19853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19854 "WDI_ResponseTimerCB: timer in running state on timer event, "
19855 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19856 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
19857 return;
19858 }
19859
Jeff Johnson295189b2012-06-20 16:38:30 -070019860 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
19861 {
19862
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053019863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019864 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019865 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070019866 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019867 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19868 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019869 /* WDI timeout means Riva is not responding or SMD communication to Riva
19870 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019871 * is to initiate SSR from APPS
19872 * There is also an option to re-enable wifi, which will eventually
19873 * trigger SSR
19874 */
19875#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070019876 wpalWcnssResetIntr();
19877 /* if this timer fires, it means Riva did not receive the FIQ */
19878 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019879#else
19880 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19881 wpalWlanReload();
19882#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019883 }
19884 else
19885 {
19886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019887 "Timeout occurred but not waiting for any response %d "
19888 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19889 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19890 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019891 }
19892
19893 return;
19894
19895}/*WDI_ResponseTimerCB*/
19896
19897
19898/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019899 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019900
Jeff Johnsone7245742012-09-05 17:12:55 -070019901
19902 @param pWDICtx: pointer to the WLAN DAL context
19903 pEventData: pointer to the event information structure
19904
Jeff Johnson295189b2012-06-20 16:38:30 -070019905 @see
19906 @return Result of the function call
19907*/
19908WPT_INLINE WDI_Status
19909WDI_ProcessResponse
19910(
19911 WDI_ControlBlockType* pWDICtx,
19912 WDI_EventInfoType* pEventData
19913)
19914{
19915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19916
Jeff Johnsone7245742012-09-05 17:12:55 -070019917 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070019918 already checked these pointers
19919 ! - revisit this assumption */
19920 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
19921 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019922 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070019924 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070019925 WDI_getRespMsgString(pEventData->wdiResponse),
19926 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
19927 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
19928 }
19929 else
19930 {
19931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019932 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019933 pEventData->wdiResponse);
19934 return WDI_STATUS_E_NOT_IMPLEMENT;
19935 }
19936}/*WDI_ProcessResponse*/
19937
19938
19939/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019940 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070019941=========================================================================*/
19942
19943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019944 @brief Utility function used by the DAL Core to help queue a
19945 request that cannot be processed right away.
19946 @param
19947
Jeff Johnson295189b2012-06-20 16:38:30 -070019948 pWDICtx: - pointer to the WDI control block
19949 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019950 queued
19951
19952 @see
19953 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019954*/
19955WDI_Status
19956WDI_QueuePendingReq
19957(
19958 WDI_ControlBlockType* pWDICtx,
19959 WDI_EventInfoType* pEventData
19960)
19961{
Jeff Johnsone7245742012-09-05 17:12:55 -070019962 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070019964 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19966
19967 if ( NULL == pEventDataQueue )
19968 {
19969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019970 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 WDI_ASSERT(0);
19972 return WDI_STATUS_MEM_FAILURE;
19973 }
19974
19975 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19976 pEventDataQueue->pUserData = pEventData->pUserData;
19977 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19978 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019979 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019980
19981 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
19982 {
19983 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019984
Jeff Johnson295189b2012-06-20 16:38:30 -070019985 if ( NULL == pEventInfo )
19986 {
19987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019988 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070019989 WDI_ASSERT(0);
19990 wpalMemoryFree(pEventDataQueue);
19991 return WDI_STATUS_MEM_FAILURE;
19992 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019993
Jeff Johnson295189b2012-06-20 16:38:30 -070019994 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19995
19996 }
19997 pEventDataQueue->pEventData = pEventInfo;
19998
19999 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020000 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020001
Jeff Johnsone7245742012-09-05 17:12:55 -070020002 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020003
20004 return WDI_STATUS_SUCCESS;
20005}/*WDI_QueuePendingReq*/
20006
20007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020008 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020010 @param
20011
20012 pMsg - pointer to the message
20013
20014 @see
20015 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020016*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020017void
Jeff Johnson295189b2012-06-20 16:38:30 -070020018WDI_PALCtrlMsgCB
20019(
20020 wpt_msg *pMsg
20021)
20022{
20023 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020024 WDI_ControlBlockType* pWDICtx = NULL;
20025 WDI_Status wdiStatus;
20026 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 void* pUserData;
20028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20029
20030 if (( NULL == pMsg )||
20031 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20032 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20033 {
20034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020035 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020037 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020038 }
20039
20040 /*Transition back to the state that we had before serialization
20041 - serialization transitions us to BUSY to stop any incomming requests
20042 ! TO DO L: possible race condition here if a request comes in between the
20043 state transition and the post function*/
20044
Jeff Johnsone7245742012-09-05 17:12:55 -070020045 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020046
20047 /*-----------------------------------------------------------------------
20048 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020049 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020050 -----------------------------------------------------------------------*/
20051 switch ( pEventData->wdiRequest )
20052 {
20053
Jeff Johnsone7245742012-09-05 17:12:55 -070020054 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020055 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20056 break;
20057
Jeff Johnson295189b2012-06-20 16:38:30 -070020058 case WDI_NV_DOWNLOAD_REQ:
20059 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20060 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20061 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20062 {
20063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020064 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020065 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20066 }
20067 else
20068 {
20069 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20070 }
20071
20072 break;
20073
20074 default:
20075 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20076 break;
20077 }/*switch ( pEventData->wdiRequest )*/
20078
20079 if ( WDI_STATUS_SUCCESS != wdiStatus )
20080 {
20081 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20082
20083 if ( NULL != pfnReqStatusCB )
20084 {
20085 /*Fail the request*/
20086 pfnReqStatusCB( wdiStatus, pUserData);
20087 }
20088 }
20089
20090 /* Free data - that was allocated when queueing*/
20091 if( pEventData != NULL )
20092 {
20093 if( pEventData->pEventData != NULL )
20094 {
20095 wpalMemoryFree(pEventData->pEventData);
20096 }
20097 wpalMemoryFree(pEventData);
20098 }
20099
20100 if( pMsg != NULL )
20101 {
20102 wpalMemoryFree(pMsg);
20103 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020104
Jeff Johnson295189b2012-06-20 16:38:30 -070020105}/*WDI_PALCtrlMsgCB*/
20106
20107/**
20108 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020109 and schedule for execution a pending request
20110 @param
20111
Jeff Johnson295189b2012-06-20 16:38:30 -070020112 pWDICtx: - pointer to the WDI control block
20113 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020114 queued
20115
20116 @see
20117 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020118*/
20119WDI_Status
20120WDI_DequeuePendingReq
20121(
20122 WDI_ControlBlockType* pWDICtx
20123)
20124{
Jeff Johnsone7245742012-09-05 17:12:55 -070020125 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020126 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20129
Jeff Johnsone7245742012-09-05 17:12:55 -070020130 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020131
20132 if ( NULL == pNode )
20133 {
20134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020135 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020136 return WDI_STATUS_SUCCESS;
20137 }
20138
20139 /*The node actually points to the 1st element inside the Event Data struct -
20140 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020141 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020142
20143 /*Serialize processing in the control thread
20144 !TO DO: - check to see if these are all the messages params that need
20145 to be filled in*/
20146 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20147
20148 if ( NULL == palMsg )
20149 {
20150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020151 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020153 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020154 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020155 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020156 palMsg->callback = WDI_PALCtrlMsgCB;
20157 palMsg->ptr = pEventData;
20158
20159 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020160 palMsg->val = pWDICtx->uGlobalState;
20161
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 /*Transition back to BUSY as we need to handle a queued request*/
20163 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020164
Jeff Johnson295189b2012-06-20 16:38:30 -070020165 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20166
20167 return WDI_STATUS_PENDING;
20168}/*WDI_DequeuePendingReq*/
20169
20170
20171/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020172 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020174 away.- The assoc requests will be queued by BSSID
20175 @param
20176
Jeff Johnson295189b2012-06-20 16:38:30 -070020177 pWDICtx: - pointer to the WDI control block
20178 pEventData: pointer to the evnt info that needs to be queued
20179 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020180
20181 @see
20182 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020183*/
20184WDI_Status
20185WDI_QueueNewAssocRequest
20186(
20187 WDI_ControlBlockType* pWDICtx,
20188 WDI_EventInfoType* pEventData,
20189 wpt_macAddr macBSSID
20190)
20191{
Jeff Johnsone7245742012-09-05 17:12:55 -070020192 wpt_uint8 i;
20193 WDI_BSSSessionType* pSession = NULL;
20194 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020195 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020196 void* pEventInfo;
20197 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020199
Jeff Johnsone7245742012-09-05 17:12:55 -070020200
20201 /*------------------------------------------------------------------------
20202 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020203 ------------------------------------------------------------------------*/
20204 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20205 {
20206 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20207 {
20208 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020209 pSession = &pWDICtx->aBSSSessions[i];
20210 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 }
20212 }
20213
20214 if ( i >= WDI_MAX_BSS_SESSIONS )
20215 {
20216 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020218 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020219
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 /*------------------------------------------------------------------------
20221 Fill in the BSSID for this session and set the usage flag
20222 ------------------------------------------------------------------------*/
20223 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020224 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020225
20226 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020227 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020228 ------------------------------------------------------------------------*/
20229 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20230 if ( NULL == pEventDataQueue )
20231 {
20232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020233 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 WDI_ASSERT(0);
20235 return WDI_STATUS_MEM_FAILURE;
20236 }
20237
20238 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20239 if ( NULL == pSessionIdElement )
20240 {
20241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020242 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020243 WDI_ASSERT(0);
20244 wpalMemoryFree(pEventDataQueue);
20245 return WDI_STATUS_MEM_FAILURE;
20246 }
20247
20248 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20249 if ( NULL == pEventInfo )
20250 {
20251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020252 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020253 WDI_ASSERT(0);
20254 wpalMemoryFree(pSessionIdElement);
20255 wpalMemoryFree(pEventDataQueue);
20256 return WDI_STATUS_MEM_FAILURE;
20257 }
20258
20259 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20260 pEventDataQueue->pUserData = pEventData->pUserData;
20261 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20262 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020263 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020264
20265 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20266 pEventDataQueue->pEventData = pEventInfo;
20267
20268 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020269 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020270
20271 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020272 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020273
Jeff Johnsone7245742012-09-05 17:12:55 -070020274 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020275
20276 /*We need to maintain a separate list that keeps track of the order in which
20277 the new assoc requests are being queued such that we can start processing
20278 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020279 pSessionIdElement->ucIndex = i;
20280 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020281
20282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20283 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020284 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020285
20286 /*Return pending as this is what the status of the request is since it has
20287 been queued*/
20288 return WDI_STATUS_PENDING;
20289}/*WDI_QueueNewAssocRequest*/
20290
20291/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020292 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 away.- The assoc requests will be queued by BSSID
20295 @param
20296
Jeff Johnson295189b2012-06-20 16:38:30 -070020297 pWDICtx: - pointer to the WDI control block
20298 pSession: - session in which to queue
20299 pEventData: pointer to the event info that needs to be
20300 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020301
20302 @see
20303 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020304*/
20305WDI_Status
20306WDI_QueueAssocRequest
20307(
20308 WDI_ControlBlockType* pWDICtx,
20309 WDI_BSSSessionType* pSession,
20310 WDI_EventInfoType* pEventData
20311)
20312{
Jeff Johnsone7245742012-09-05 17:12:55 -070020313 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020314 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020315 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020317
20318 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020319 Sanity check
20320 ------------------------------------------------------------------------*/
20321 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20322 {
20323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020324 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020325
Jeff Johnsone7245742012-09-05 17:12:55 -070020326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020327 }
20328
20329 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020330 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020331 ------------------------------------------------------------------------*/
20332 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20333 if ( NULL == pEventDataQueue )
20334 {
20335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020336 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020337 WDI_ASSERT(0);
20338 return WDI_STATUS_MEM_FAILURE;
20339 }
20340
20341 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20342 if ( NULL == pEventInfo )
20343 {
20344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20345 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020346 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020347 WDI_ASSERT(0);
20348 wpalMemoryFree(pEventDataQueue);
20349 return WDI_STATUS_MEM_FAILURE;
20350 }
20351
20352 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20353 pEventDataQueue->pUserData = pEventData->pUserData;
20354 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20355 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020356 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020357 pEventDataQueue->pEventData = pEventInfo;
20358
20359 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20360
20361 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020362 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020363
20364 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020366
Jeff Johnsone7245742012-09-05 17:12:55 -070020367 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020368
20369 /*The result of this operation is pending because the request has been
20370 queued and it will be processed at a later moment in time */
20371 return WDI_STATUS_PENDING;
20372}/*WDI_QueueAssocRequest*/
20373
20374/**
20375 @brief Utility function used by the DAL Core to help dequeue
20376 an association request that was pending
20377 The request will be queued up in front of the main
20378 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020379 @param
20380
Jeff Johnson295189b2012-06-20 16:38:30 -070020381 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020382
20383
20384 @see
20385 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020386*/
20387WDI_Status
20388WDI_DequeueAssocRequest
20389(
20390 WDI_ControlBlockType* pWDICtx
20391)
20392{
Jeff Johnsone7245742012-09-05 17:12:55 -070020393 wpt_list_node* pNode = NULL;
20394 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020395 WDI_BSSSessionType* pSession;
20396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020397
20398 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020399 Sanity check
20400 ------------------------------------------------------------------------*/
20401 if ( NULL == pWDICtx )
20402 {
20403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020405
Jeff Johnsone7245742012-09-05 17:12:55 -070020406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 }
20408
20409 /*------------------------------------------------------------------------
20410 An association has been completed => a new association can occur
20411 Check to see if there are any pending associations ->
20412 If so , transfer all the pending requests into the busy queue for
20413 processing
20414 These requests have arrived prior to the requests in the busy queue
20415 (bc they needed to be processed in order to be placed in this queue)
20416 => they will be placed at the front of the busy queue
20417 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020418 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020419
20420 if ( NULL == pNode )
20421 {
20422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020423 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020424 return WDI_STATUS_SUCCESS;
20425 }
20426
20427 /*The node actually points to the 1st element inside the Session Id struct -
20428 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020429 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020430
20431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20432 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20433
20434 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20435 {
20436 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020437
Jeff Johnson295189b2012-06-20 16:38:30 -070020438 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020439 the front of the main waiting queue for subsequent execution*/
20440 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020441 while ( NULL != pNode )
20442 {
20443 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020444 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20445 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020446 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020447 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020448 }
20449 else
20450 {
20451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020452 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020453 WPAL_ASSERT(0);
20454 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020456 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020457
Jeff Johnson295189b2012-06-20 16:38:30 -070020458 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20459 wpalMemoryFree(pSessionIdElement);
20460 return WDI_STATUS_SUCCESS;
20461}/*WDI_DequeueAssocRequest*/
20462
20463/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020464 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020465 pending requests - all req cb will be called with
20466 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020467 @param
20468
Jeff Johnson295189b2012-06-20 16:38:30 -070020469 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020470
20471 @see
20472 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020473*/
20474WDI_Status
20475WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020476(
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 WDI_ControlBlockType* pWDICtx
20478)
20479{
Jeff Johnsone7245742012-09-05 17:12:55 -070020480 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020481 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020482 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 void* pUserData;
20484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20485
Jeff Johnsone7245742012-09-05 17:12:55 -070020486 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020487
20488 /*------------------------------------------------------------------------
20489 Go through all the requests and fail them - this will only be called
20490 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020491 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 ------------------------------------------------------------------------*/
20493 while( pNode )
20494 {
20495 /*The node actually points to the 1st element inside the Event Data struct -
20496 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020497 pEventDataQueue = (WDI_EventInfoType*)pNode;
20498
Jeff Johnson295189b2012-06-20 16:38:30 -070020499 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20500 if ( NULL != pfnReqStatusCB )
20501 {
20502 /*Fail the request*/
20503 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20504 }
20505 /* Free data - that was allocated when queueing */
20506 if ( pEventDataQueue->pEventData != NULL )
20507 {
20508 wpalMemoryFree(pEventDataQueue->pEventData);
20509 }
20510 wpalMemoryFree(pEventDataQueue);
20511
20512 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20513 {
20514 break;
20515 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020516 }
20517
Jeff Johnson295189b2012-06-20 16:38:30 -070020518 return WDI_STATUS_SUCCESS;
20519}/*WDI_ClearPendingRequests*/
20520
20521/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020522 @brief Helper routine used to init the BSS Sessions in the WDI control block
20523
20524
20525 @param pWDICtx: pointer to the WLAN DAL context
20526
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 @see
20528*/
20529void
20530WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020531(
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 WDI_ControlBlockType* pWDICtx
20533)
20534{
Jeff Johnsone7245742012-09-05 17:12:55 -070020535 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20537
20538 /*-------------------------------------------------------------------------
20539 No Sanity check
20540 -------------------------------------------------------------------------*/
20541 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20542 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020543 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20545 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20546 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20547 }
20548}/*WDI_ResetAssocSessions*/
20549
20550/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020551 @brief Helper routine used to find a session based on the BSSID
20552
20553
20554 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020555 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 pSession: pointer to the session (if found)
20557
Jeff Johnson295189b2012-06-20 16:38:30 -070020558 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020559 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020560*/
20561wpt_uint8
20562WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020563(
Jeff Johnson295189b2012-06-20 16:38:30 -070020564 WDI_ControlBlockType* pWDICtx,
20565 wpt_macAddr macBSSID,
20566 WDI_BSSSessionType** ppSession
20567)
20568{
Jeff Johnsone7245742012-09-05 17:12:55 -070020569 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20571
20572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 -------------------------------------------------------------------------*/
20575 if ( NULL == ppSession )
20576 {
20577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020578 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020579 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 }
20581
Jeff Johnsone7245742012-09-05 17:12:55 -070020582 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020583
Jeff Johnsone7245742012-09-05 17:12:55 -070020584 /*------------------------------------------------------------------------
20585 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 ------------------------------------------------------------------------*/
20587 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20588 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020589 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20590 (eWLAN_PAL_TRUE ==
20591 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20592 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020593 {
20594 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020595 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020596 return i;
20597 }
20598 }
20599
Jeff Johnsone7245742012-09-05 17:12:55 -070020600 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020601}/*WDI_FindAssocSession*/
20602
20603/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020604 @brief Helper routine used to find a session based on the BSSID
20605
20606
20607 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020608 ucBSSIdx: BSS Index of the session
20609 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020610
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020612 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020613*/
20614wpt_uint8
20615WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020616(
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 WDI_ControlBlockType* pWDICtx,
20618 wpt_uint16 ucBSSIdx,
20619 WDI_BSSSessionType** ppSession
20620)
20621{
Jeff Johnsone7245742012-09-05 17:12:55 -070020622 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20624
20625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020626 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020627 -------------------------------------------------------------------------*/
20628 if ( NULL == ppSession )
20629 {
20630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020631 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020632 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020633 }
20634
Jeff Johnsone7245742012-09-05 17:12:55 -070020635 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020636
Jeff Johnsone7245742012-09-05 17:12:55 -070020637 /*------------------------------------------------------------------------
20638 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020639 ------------------------------------------------------------------------*/
20640 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20641 {
20642 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
20643 {
20644 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020645 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020646 return i;
20647 }
20648 }
20649
Jeff Johnsone7245742012-09-05 17:12:55 -070020650 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020651}/*WDI_FindAssocSessionByBSSIdx*/
20652
20653/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020654 @brief Helper routine used to find a session based on the BSSID
20655
20656
20657 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020658 ucBSSIdx: BSS Index of the session
20659 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020660
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020662 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020663*/
20664wpt_uint8
20665WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020666(
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 WDI_ControlBlockType* pWDICtx,
20668 wpt_uint16 usIdx,
20669 WDI_BSSSessionType** ppSession
20670)
20671{
20672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20673
20674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020676 -------------------------------------------------------------------------*/
20677 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
20678 {
20679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020680 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 }
20683
20684 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020685 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070020686
20687 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020688
Jeff Johnson295189b2012-06-20 16:38:30 -070020689}/*WDI_FindAssocSessionByBSSIdx*/
20690
20691/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020692 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020694
20695
20696 @param pWDICtx: pointer to the WLAN DAL context
20697 pSession: pointer to the session (if found)
20698
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020700 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020701*/
20702wpt_uint8
20703WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070020704(
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 WDI_ControlBlockType* pWDICtx,
20706 WDI_BSSSessionType** ppSession
20707)
20708{
Jeff Johnsone7245742012-09-05 17:12:55 -070020709 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 -------------------------------------------------------------------------*/
20714 if ( NULL == ppSession )
20715 {
20716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020717 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020718 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 }
20720
Jeff Johnsone7245742012-09-05 17:12:55 -070020721 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020722
Jeff Johnsone7245742012-09-05 17:12:55 -070020723 /*------------------------------------------------------------------------
20724 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070020725 ------------------------------------------------------------------------*/
20726 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20727 {
20728 if ( ! pWDICtx->aBSSSessions[i].bInUse )
20729 {
20730 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020731 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020732 return i;
20733 }
20734 }
20735
Jeff Johnsone7245742012-09-05 17:12:55 -070020736 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020737}/*WDI_FindEmptySession*/
20738
20739
20740/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020741 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070020742 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020743
20744
20745 @param pWDICtx: pointer to the WLAN DAL context
20746
Jeff Johnson295189b2012-06-20 16:38:30 -070020747 @see
20748 @return Number of sessions in use
20749*/
20750wpt_uint8
20751WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070020752(
Jeff Johnson295189b2012-06-20 16:38:30 -070020753 WDI_ControlBlockType* pWDICtx
20754)
20755{
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020758
20759 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 Count all sessions in use
20761 ------------------------------------------------------------------------*/
20762 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20763 {
20764 if ( pWDICtx->aBSSSessions[i].bInUse )
20765 {
20766 ucCount++;
20767 }
20768 }
20769
Jeff Johnsone7245742012-09-05 17:12:55 -070020770 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070020771}/*WDI_GetActiveSessionsCount*/
20772
20773/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020774 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020775 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020776
20777
20778 @param pWDICtx: pointer to the WLAN DAL context
20779 pSession: pointer to the session (if found)
20780
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020782 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020783*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020784void
Jeff Johnson295189b2012-06-20 16:38:30 -070020785WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020786(
Jeff Johnson295189b2012-06-20 16:38:30 -070020787 WDI_ControlBlockType* pWDICtx,
20788 WDI_BSSSessionType* ppSession
20789)
20790{
20791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 -------------------------------------------------------------------------*/
20794 if ( NULL == ppSession )
20795 {
20796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020797 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020798 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020799 }
20800
Jeff Johnsone7245742012-09-05 17:12:55 -070020801 /*------------------------------------------------------------------------
20802 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070020803 ------------------------------------------------------------------------*/
20804 wpal_list_destroy(&ppSession->wptPendingQueue);
20805 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070020806 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
20807 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020808 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
20809 wpal_list_init(&ppSession->wptPendingQueue);
20810
20811}/*WDI_DeleteSession*/
20812
20813/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020814 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070020816 @param
20817
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 WDI_AddStaParams: - pointer to the WDI Add STA params
20819 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020820
20821 @see
20822 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070020823*/
20824void
20825WDI_AddBcastSTAtoSTATable
20826(
20827 WDI_ControlBlockType* pWDICtx,
20828 WDI_AddStaParams * staParams,
20829 wpt_uint16 usBcastStaIdx
20830)
20831{
20832 WDI_AddStaParams wdiAddSTAParam = {0};
20833 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
20834 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20835
20836 /*---------------------------------------------------------------------
20837 Sanity check
20838 ---------------------------------------------------------------------*/
20839 if ( NULL == staParams )
20840 {
20841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020843
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 }
20846
20847 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
20848 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
20849 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
20850 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
20851 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
20852 wdiAddSTAParam.dpuSig = staParams->dpuSig;
20853 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
20854 WDI_MAC_ADDR_LEN );
20855 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
20856 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
20857 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
20858 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
20859 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
20860 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
20861 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020862
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
20864}
20865
20866/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020867 @brief NV blob will be divided into fragments of size 4kb and
20868 Sent to HAL
20869
20870 @param pWDICtx: pointer to the WLAN DAL context
20871 pEventData: pointer to the event information structure
20872
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 @see
20874 @return Result of the function call
20875 */
20876
20877WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020878(
Jeff Johnson295189b2012-06-20 16:38:30 -070020879 WDI_ControlBlockType* pWDICtx,
20880 WDI_EventInfoType* pEventData
20881)
20882{
20883
20884 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
20885 wpt_uint8* pSendBuffer = NULL;
20886 wpt_uint16 usDataOffset = 0;
20887 wpt_uint16 usSendSize = 0;
20888 wpt_uint16 usCurrentFragmentSize =0;
20889 wpt_uint8* pSrcBuffer = NULL;
20890 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
20891 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20892
20893 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
20894 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
20895 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
20896
Jeff Johnsone7245742012-09-05 17:12:55 -070020897 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070020898 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
20899
20900 /* Update the current Fragment Number */
20901 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
20902
20903 /*Update the HAL REQ structure */
20904 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
20905 halNvImgDownloadParam.nvImageReqParams.fragNumber =
20906 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
20907
20908 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070020909 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 image will be sent to HAL*/
20911
Jeff Johnsone7245742012-09-05 17:12:55 -070020912 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070020913 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070020914 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020915 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070020916 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070020917 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
20918 usCurrentFragmentSize = FRAGMENT_SIZE;
20919
20920 /*Update the HAL REQ structure */
20921 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
20922 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
20923
20924 }
20925 else
Jeff Johnsone7245742012-09-05 17:12:55 -070020926 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020927 usCurrentFragmentSize = FRAGMENT_SIZE;
20928
20929 /*Update the HAL REQ structure */
20930 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
20931 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
20932 }
20933
20934 /*-----------------------------------------------------------------------
20935 Get message buffer
20936 -----------------------------------------------------------------------*/
20937 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
20938 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
20939 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020940 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
20942 {
20943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20944 "Unable to get send buffer in NV Download req %x %x ",
20945 pEventData, pwdiNvDownloadReqParams);
20946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020948 }
20949
20950 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070020951 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020952 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
20953
20954 /* Appending the NV image fragment */
20955 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
20956 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
20957 usCurrentFragmentSize);
20958
20959 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020960 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020961
Jeff Johnsone7245742012-09-05 17:12:55 -070020962 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20963 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020964 WDI_NV_DOWNLOAD_RESP);
20965
20966}
Jeff Johnsone7245742012-09-05 17:12:55 -070020967/*============================================================================
20968 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070020969 ============================================================================*/
20970/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020971 @brief Helper routine used to find a session based on the BSSID
20972 @param pContext: pointer to the WLAN DAL context
20973 @param pDPContext: pointer to the Datapath context
20974
Jeff Johnson295189b2012-06-20 16:38:30 -070020975 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020976 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070020977*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020978WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020979WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
20980{
20981 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20982
20983 pCB->pDPContext = pDPContext;
20984 return;
20985}
20986
20987/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020988 @brief Helper routine used to find a session based on the BSSID
20989
20990
20991 @param pContext: pointer to the WLAN DAL context
20992
Jeff Johnson295189b2012-06-20 16:38:30 -070020993 @see
20994 @return pointer to Datapath context
20995*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020996WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020997WDI_DS_GetDatapathContext (void *pContext)
20998{
20999 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21000 return pCB->pDPContext;
21001}
21002/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021003 @brief Helper routine used to find a session based on the BSSID
21004
21005
21006 @param pContext: pointer to the WLAN DAL context
21007 @param pDTDriverContext: pointer to the Transport Driver context
21008
Jeff Johnson295189b2012-06-20 16:38:30 -070021009 @see
21010 @return void
21011*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021012WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021013WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21014{
21015 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21016
21017 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021018 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021019}
21020
21021/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021022 @brief Helper routine used to find a session based on the BSSID
21023
21024
21025 @param pWDICtx: pointer to the WLAN DAL context
21026
Jeff Johnson295189b2012-06-20 16:38:30 -070021027 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021029*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021030WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021031WDT_GetTransportDriverContext (void *pContext)
21032{
21033 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021034 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021035}
21036
Jeff Johnsone7245742012-09-05 17:12:55 -070021037/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021038 Helper inline converters
21039 ============================================================================*/
21040/*Convert WDI driver type into HAL driver type*/
21041WPT_STATIC WPT_INLINE WDI_Status
21042WDI_HAL_2_WDI_STATUS
21043(
21044 eHalStatus halStatus
21045)
21046{
Jeff Johnsone7245742012-09-05 17:12:55 -070021047 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021048 the chances of getting inlined*/
21049 switch( halStatus )
21050 {
21051 case eHAL_STATUS_SUCCESS:
21052 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21053 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21054 return WDI_STATUS_SUCCESS;
21055 case eHAL_STATUS_FAILURE:
21056 return WDI_STATUS_E_FAILURE;
21057 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021058 return WDI_STATUS_MEM_FAILURE;
21059 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021060 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021061 default:
21062 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21063 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021064
Jeff Johnsone7245742012-09-05 17:12:55 -070021065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021066}/*WDI_HAL_2_WDI_STATUS*/
21067
21068/*Convert WDI request type into HAL request type*/
21069WPT_STATIC WPT_INLINE tHalHostMsgType
21070WDI_2_HAL_REQ_TYPE
21071(
21072 WDI_RequestEnumType wdiReqType
21073)
21074{
Jeff Johnsone7245742012-09-05 17:12:55 -070021075 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021076 the chances of getting inlined*/
21077 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021078 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021079 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021082 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021083 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021084 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021085 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021086 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021089 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021090 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021091 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021092 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021093 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021094 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021095 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021096 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021097 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021098 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021099 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021100 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021101 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021104 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021106 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021108 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021109 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021110 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021111 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021112 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021113 return WLAN_HAL_RMV_STAKEY_REQ;
21114 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021116 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021119 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021120 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021121 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021122 case WDI_DEL_BA_REQ:
21123 return WLAN_HAL_DEL_BA_REQ;
21124#ifdef FEATURE_WLAN_CCX
21125 case WDI_TSM_STATS_REQ:
21126 return WLAN_HAL_TSM_STATS_REQ;
21127#endif
21128 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021129 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021130 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021131 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021132 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021134 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021135 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021136 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021137 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021138 case WDI_ADD_BA_SESSION_REQ:
21139 return WLAN_HAL_ADD_BA_SESSION_REQ;
21140 case WDI_TRIGGER_BA_REQ:
21141 return WLAN_HAL_TRIGGER_BA_REQ;
21142 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021144 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021145 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021146 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21147 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21148 case WDI_SET_MAX_TX_POWER_REQ:
21149 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
21150#ifdef WLAN_FEATURE_P2P
21151 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21152 return WLAN_HAL_SET_P2P_GONOA_REQ;
21153#endif
21154 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021155 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021156 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021157 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021158 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021160 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021161 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021162 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021167 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021168 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021169 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021173 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021174 case WDI_REM_BEACON_FILTER_REQ:
21175 return WLAN_HAL_REM_BCN_FILTER_REQ;
21176 case WDI_SET_RSSI_THRESHOLDS_REQ:
21177 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21178 case WDI_HOST_OFFLOAD_REQ:
21179 return WLAN_HAL_HOST_OFFLOAD_REQ;
21180 case WDI_WOWL_ADD_BC_PTRN_REQ:
21181 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21182 case WDI_WOWL_DEL_BC_PTRN_REQ:
21183 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21184 case WDI_WOWL_ENTER_REQ:
21185 return WLAN_HAL_ENTER_WOWL_REQ;
21186 case WDI_WOWL_EXIT_REQ:
21187 return WLAN_HAL_EXIT_WOWL_REQ;
21188 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21189 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21190 case WDI_NV_DOWNLOAD_REQ:
21191 return WLAN_HAL_DOWNLOAD_NV_REQ;
21192 case WDI_FLUSH_AC_REQ:
21193 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21194 case WDI_BTAMP_EVENT_REQ:
21195 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21196#ifdef WLAN_FEATURE_VOWIFI_11R
21197 case WDI_AGGR_ADD_TS_REQ:
21198 return WLAN_HAL_AGGR_ADD_TS_REQ;
21199#endif /* WLAN_FEATURE_VOWIFI_11R */
21200#ifdef ANI_MANF_DIAG
21201 case WDI_FTM_CMD_REQ:
21202 return WLAN_HAL_PROCESS_PTT_REQ;
21203#endif /* ANI_MANF_DIAG */
21204 case WDI_ADD_STA_SELF_REQ:
21205 return WLAN_HAL_ADD_STA_SELF_REQ;
21206 case WDI_DEL_STA_SELF_REQ:
21207 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021208#ifdef FEATURE_OEM_DATA_SUPPORT
21209 case WDI_START_OEM_DATA_REQ:
21210 return WLAN_HAL_START_OEM_DATA_REQ;
21211#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021212 case WDI_HOST_RESUME_REQ:
21213 return WLAN_HAL_HOST_RESUME_REQ;
21214 case WDI_HOST_SUSPEND_IND:
21215 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021216 case WDI_TRAFFIC_STATS_IND:
21217 return WLAN_HAL_CLASS_B_STATS_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021218 case WDI_KEEP_ALIVE_REQ:
21219 return WLAN_HAL_KEEP_ALIVE_REQ;
21220
21221#ifdef FEATURE_WLAN_SCAN_PNO
21222 case WDI_SET_PREF_NETWORK_REQ:
21223 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21224 case WDI_SET_RSSI_FILTER_REQ:
21225 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21226 case WDI_UPDATE_SCAN_PARAMS_REQ:
21227 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21228#endif // FEATURE_WLAN_SCAN_PNO
21229 case WDI_SET_TX_PER_TRACKING_REQ:
21230 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21231#ifdef WLAN_FEATURE_PACKET_FILTERING
21232 case WDI_8023_MULTICAST_LIST_REQ:
21233 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21234 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021235 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021236 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21237 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21238 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21239 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21240#endif // WLAN_FEATURE_PACKET_FILTERING
21241 case WDI_HAL_DUMP_CMD_REQ:
21242 return WLAN_HAL_DUMP_COMMAND_REQ;
21243#ifdef WLAN_FEATURE_GTK_OFFLOAD
21244 case WDI_GTK_OFFLOAD_REQ:
21245 return WLAN_HAL_GTK_OFFLOAD_REQ;
21246 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21247 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21248#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21249
21250 case WDI_INIT_SCAN_CON_REQ:
21251 return WLAN_HAL_INIT_SCAN_CON_REQ;
21252 case WDI_SET_POWER_PARAMS_REQ:
21253 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21254 case WDI_SET_TM_LEVEL_REQ:
21255 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21256 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21257 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021258#ifdef WLAN_FEATURE_11AC
21259 case WDI_UPDATE_VHT_OP_MODE_REQ:
21260 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21261#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021262 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021263 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021264 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021265
Jeff Johnson295189b2012-06-20 16:38:30 -070021266}/*WDI_2_HAL_REQ_TYPE*/
21267
21268/*Convert WDI response type into HAL response type*/
21269WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21270HAL_2_WDI_RSP_TYPE
21271(
21272 tHalHostMsgType halMsg
21273)
21274{
Jeff Johnsone7245742012-09-05 17:12:55 -070021275 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 the chances of getting inlined*/
21277 switch( halMsg )
21278 {
21279 case WLAN_HAL_START_RSP:
21280 return WDI_START_RESP;
21281 case WLAN_HAL_STOP_RSP:
21282 return WDI_STOP_RESP;
21283 case WLAN_HAL_INIT_SCAN_RSP:
21284 return WDI_INIT_SCAN_RESP;
21285 case WLAN_HAL_START_SCAN_RSP:
21286 return WDI_START_SCAN_RESP;
21287 case WLAN_HAL_END_SCAN_RSP:
21288 return WDI_END_SCAN_RESP;
21289 case WLAN_HAL_FINISH_SCAN_RSP:
21290 return WDI_FINISH_SCAN_RESP;
21291 case WLAN_HAL_CONFIG_STA_RSP:
21292 return WDI_CONFIG_STA_RESP;
21293 case WLAN_HAL_DELETE_STA_RSP:
21294 return WDI_DEL_STA_RESP;
21295 case WLAN_HAL_CONFIG_BSS_RSP:
21296 return WDI_CONFIG_BSS_RESP;
21297 case WLAN_HAL_DELETE_BSS_RSP:
21298 return WDI_DEL_BSS_RESP;
21299 case WLAN_HAL_JOIN_RSP:
21300 return WDI_JOIN_RESP;
21301 case WLAN_HAL_POST_ASSOC_RSP:
21302 return WDI_POST_ASSOC_RESP;
21303 case WLAN_HAL_SET_BSSKEY_RSP:
21304 return WDI_SET_BSS_KEY_RESP;
21305 case WLAN_HAL_SET_STAKEY_RSP:
21306 return WDI_SET_STA_KEY_RESP;
21307 case WLAN_HAL_RMV_BSSKEY_RSP:
21308 return WDI_RMV_BSS_KEY_RESP;
21309 case WLAN_HAL_RMV_STAKEY_RSP:
21310 return WDI_RMV_STA_KEY_RESP;
21311 case WLAN_HAL_SET_BCASTKEY_RSP:
21312 return WDI_SET_STA_BCAST_KEY_RESP;
21313 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21314 // return WDI_RMV_STA_BCAST_KEY_RESP;
21315 case WLAN_HAL_ADD_TS_RSP:
21316 return WDI_ADD_TS_RESP;
21317 case WLAN_HAL_DEL_TS_RSP:
21318 return WDI_DEL_TS_RESP;
21319 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21320 return WDI_UPD_EDCA_PRMS_RESP;
21321 case WLAN_HAL_ADD_BA_RSP:
21322 return WDI_ADD_BA_RESP;
21323 case WLAN_HAL_DEL_BA_RSP:
21324 return WDI_DEL_BA_RESP;
21325#ifdef FEATURE_WLAN_CCX
21326 case WLAN_HAL_TSM_STATS_RSP:
21327 return WDI_TSM_STATS_RESP;
21328#endif
21329 case WLAN_HAL_CH_SWITCH_RSP:
21330 return WDI_CH_SWITCH_RESP;
21331 case WLAN_HAL_SET_LINK_ST_RSP:
21332 return WDI_SET_LINK_ST_RESP;
21333 case WLAN_HAL_GET_STATS_RSP:
21334 return WDI_GET_STATS_RESP;
21335 case WLAN_HAL_UPDATE_CFG_RSP:
21336 return WDI_UPDATE_CFG_RESP;
21337 case WLAN_HAL_ADD_BA_SESSION_RSP:
21338 return WDI_ADD_BA_SESSION_RESP;
21339 case WLAN_HAL_TRIGGER_BA_RSP:
21340 return WDI_TRIGGER_BA_RESP;
21341 case WLAN_HAL_UPDATE_BEACON_RSP:
21342 return WDI_UPD_BCON_PRMS_RESP;
21343 case WLAN_HAL_SEND_BEACON_RSP:
21344 return WDI_SND_BCON_RESP;
21345 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21346 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21347 /*Indications*/
21348 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21349 return WDI_HAL_RSSI_NOTIFICATION_IND;
21350 case WLAN_HAL_MISSED_BEACON_IND:
21351 return WDI_HAL_MISSED_BEACON_IND;
21352 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21353 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21354 case WLAN_HAL_MIC_FAILURE_IND:
21355 return WDI_HAL_MIC_FAILURE_IND;
21356 case WLAN_HAL_FATAL_ERROR_IND:
21357 return WDI_HAL_FATAL_ERROR_IND;
21358 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21359 return WDI_HAL_DEL_STA_IND;
21360 case WLAN_HAL_COEX_IND:
21361 return WDI_HAL_COEX_IND;
21362 case WLAN_HAL_OTA_TX_COMPL_IND:
21363 return WDI_HAL_TX_COMPLETE_IND;
21364#ifdef WLAN_FEATURE_P2P
21365 case WLAN_HAL_P2P_NOA_ATTR_IND:
21366 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021367 case WLAN_HAL_P2P_NOA_START_IND:
21368 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021369#endif
21370 case WLAN_HAL_TX_PER_HIT_IND:
21371 return WDI_HAL_TX_PER_HIT_IND;
21372 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21373 return WDI_SET_MAX_TX_POWER_RESP;
21374#ifdef WLAN_FEATURE_P2P
21375 case WLAN_HAL_SET_P2P_GONOA_RSP:
21376 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
21377#endif
21378 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021379 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021381 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021382 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021383 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021384 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021385 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021386 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021387 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021388 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021389 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021390 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021391 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021392 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021393 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021394 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021395 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021396 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21397 return WDI_SET_BEACON_FILTER_RESP;
21398 case WLAN_HAL_REM_BCN_FILTER_RSP:
21399 return WDI_REM_BEACON_FILTER_RESP;
21400 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21401 return WDI_SET_RSSI_THRESHOLDS_RESP;
21402 case WLAN_HAL_HOST_OFFLOAD_RSP:
21403 return WDI_HOST_OFFLOAD_RESP;
21404 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21405 return WDI_WOWL_ADD_BC_PTRN_RESP;
21406 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21407 return WDI_WOWL_DEL_BC_PTRN_RESP;
21408 case WLAN_HAL_ENTER_WOWL_RSP:
21409 return WDI_WOWL_ENTER_RESP;
21410 case WLAN_HAL_EXIT_WOWL_RSP:
21411 return WDI_WOWL_EXIT_RESP;
21412 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21413 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21414 case WLAN_HAL_DOWNLOAD_NV_RSP:
21415 return WDI_NV_DOWNLOAD_RESP;
21416 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21417 return WDI_FLUSH_AC_RESP;
21418 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21419 return WDI_BTAMP_EVENT_RESP;
21420#ifdef ANI_MANF_DIAG
21421 case WLAN_HAL_PROCESS_PTT_RSP:
21422 return WDI_FTM_CMD_RESP;
21423#endif /* ANI_MANF_DIAG */
21424 case WLAN_HAL_ADD_STA_SELF_RSP:
21425 return WDI_ADD_STA_SELF_RESP;
21426case WLAN_HAL_DEL_STA_SELF_RSP:
21427 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021428#ifdef FEATURE_OEM_DATA_SUPPORT
21429 case WLAN_HAL_START_OEM_DATA_RSP:
21430 return WDI_START_OEM_DATA_RESP;
21431#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021432 case WLAN_HAL_HOST_RESUME_RSP:
21433 return WDI_HOST_RESUME_RESP;
21434 case WLAN_HAL_KEEP_ALIVE_RSP:
21435 return WDI_KEEP_ALIVE_RESP;
21436#ifdef FEATURE_WLAN_SCAN_PNO
21437 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21438 return WDI_SET_PREF_NETWORK_RESP;
21439 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021440 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021441 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21442 return WDI_UPDATE_SCAN_PARAMS_RESP;
21443 case WLAN_HAL_PREF_NETW_FOUND_IND:
21444 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21445#endif // FEATURE_WLAN_SCAN_PNO
21446 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21447 return WDI_SET_TX_PER_TRACKING_RESP;
21448#ifdef WLAN_FEATURE_PACKET_FILTERING
21449 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21450 return WDI_8023_MULTICAST_LIST_RESP;
21451 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21452 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21453 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21454 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21455 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21456 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21457#endif // WLAN_FEATURE_PACKET_FILTERING
21458
21459 case WLAN_HAL_DUMP_COMMAND_RSP:
21460 return WDI_HAL_DUMP_CMD_RESP;
21461 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21462 return WDI_SET_POWER_PARAMS_RESP;
21463#ifdef WLAN_FEATURE_VOWIFI_11R
21464 case WLAN_HAL_AGGR_ADD_TS_RSP:
21465 return WDI_AGGR_ADD_TS_RESP;
21466#endif
21467
21468#ifdef WLAN_FEATURE_GTK_OFFLOAD
21469 case WLAN_HAL_GTK_OFFLOAD_RSP:
21470 return WDI_GTK_OFFLOAD_RESP;
21471 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21472 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21473#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21474#ifdef WLAN_WAKEUP_EVENTS
21475 case WLAN_HAL_WAKE_REASON_IND:
21476 return WDI_HAL_WAKE_REASON_IND;
21477#endif // WLAN_WAKEUP_EVENTS
21478
21479 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21480 return WDI_SET_TM_LEVEL_RESP;
21481 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21482 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021483#ifdef WLAN_FEATURE_11AC
21484 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21485 return WDI_UPDATE_VHT_OP_MODE_RESP;
21486#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021487 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021488 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021489 }
21490
21491}/*HAL_2_WDI_RSP_TYPE*/
21492
21493
21494/*Convert WDI driver type into HAL driver type*/
21495WPT_STATIC WPT_INLINE tDriverType
21496WDI_2_HAL_DRV_TYPE
21497(
21498 WDI_DriverType wdiDriverType
21499)
21500{
Jeff Johnsone7245742012-09-05 17:12:55 -070021501 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021502 the chances of getting inlined*/
21503 switch( wdiDriverType )
21504 {
21505 case WDI_DRIVER_TYPE_PRODUCTION:
21506 return eDRIVER_TYPE_PRODUCTION;
21507 case WDI_DRIVER_TYPE_MFG:
21508 return eDRIVER_TYPE_MFG;
21509 case WDI_DRIVER_TYPE_DVT:
21510 return eDRIVER_TYPE_DVT;
21511 }
21512
Jeff Johnsone7245742012-09-05 17:12:55 -070021513 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021514}/*WDI_2_HAL_DRV_TYPE*/
21515
21516
21517/*Convert WDI stop reason into HAL stop reason*/
21518WPT_STATIC WPT_INLINE tHalStopType
21519WDI_2_HAL_STOP_REASON
21520(
21521 WDI_StopType wdiDriverType
21522)
21523{
Jeff Johnsone7245742012-09-05 17:12:55 -070021524 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021525 the chances of getting inlined*/
21526 switch( wdiDriverType )
21527 {
21528 case WDI_STOP_TYPE_SYS_RESET:
21529 return HAL_STOP_TYPE_SYS_RESET;
21530 case WDI_DRIVER_TYPE_MFG:
21531 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21532 case WDI_STOP_TYPE_RF_KILL:
21533 return HAL_STOP_TYPE_RF_KILL;
21534 }
21535
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021537}/*WDI_2_HAL_STOP_REASON*/
21538
21539
21540/*Convert WDI scan mode type into HAL scan mode type*/
21541WPT_STATIC WPT_INLINE eHalSysMode
21542WDI_2_HAL_SCAN_MODE
21543(
21544 WDI_ScanMode wdiScanMode
21545)
21546{
Jeff Johnsone7245742012-09-05 17:12:55 -070021547 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021548 the chances of getting inlined*/
21549 switch( wdiScanMode )
21550 {
21551 case WDI_SCAN_MODE_NORMAL:
21552 return eHAL_SYS_MODE_NORMAL;
21553 case WDI_SCAN_MODE_LEARN:
21554 return eHAL_SYS_MODE_LEARN;
21555 case WDI_SCAN_MODE_SCAN:
21556 return eHAL_SYS_MODE_SCAN;
21557 case WDI_SCAN_MODE_PROMISC:
21558 return eHAL_SYS_MODE_PROMISC;
21559 case WDI_SCAN_MODE_SUSPEND_LINK:
21560 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021561 case WDI_SCAN_MODE_ROAM_SCAN:
21562 return eHAL_SYS_MODE_ROAM_SCAN;
21563 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21564 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021565 }
21566
Jeff Johnsone7245742012-09-05 17:12:55 -070021567 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021568}/*WDI_2_HAL_SCAN_MODE*/
21569
21570/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021571WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021572WDI_2_HAL_SEC_CH_OFFSET
21573(
21574 WDI_HTSecondaryChannelOffset wdiSecChOffset
21575)
21576{
Jeff Johnsone7245742012-09-05 17:12:55 -070021577 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021578 the chances of getting inlined*/
21579 switch( wdiSecChOffset )
21580 {
21581 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021582 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021583 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021584 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021585 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021586 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21587#ifdef WLAN_FEATURE_11AC
21588 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21589 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21590 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21591 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21592 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21593 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21594 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21595 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21596 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21597 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21598 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21599 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21600 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21601 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21602#endif
21603 default:
21604 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021605 }
21606
Jeff Johnsone7245742012-09-05 17:12:55 -070021607 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021608}/*WDI_2_HAL_SEC_CH_OFFSET*/
21609
21610/*Convert WDI BSS type into HAL BSS type*/
21611WPT_STATIC WPT_INLINE tSirBssType
21612WDI_2_HAL_BSS_TYPE
21613(
21614 WDI_BssType wdiBSSType
21615)
21616{
Jeff Johnsone7245742012-09-05 17:12:55 -070021617 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021618 the chances of getting inlined*/
21619 switch( wdiBSSType )
21620 {
21621 case WDI_INFRASTRUCTURE_MODE:
21622 return eSIR_INFRASTRUCTURE_MODE;
21623 case WDI_INFRA_AP_MODE:
21624 return eSIR_INFRA_AP_MODE;
21625 case WDI_IBSS_MODE:
21626 return eSIR_IBSS_MODE;
21627 case WDI_BTAMP_STA_MODE:
21628 return eSIR_BTAMP_STA_MODE;
21629 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021630 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021631 case WDI_BSS_AUTO_MODE:
21632 return eSIR_AUTO_MODE;
21633 }
21634
Jeff Johnsone7245742012-09-05 17:12:55 -070021635 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021636}/*WDI_2_HAL_BSS_TYPE*/
21637
21638/*Convert WDI NW type into HAL NW type*/
21639WPT_STATIC WPT_INLINE tSirNwType
21640WDI_2_HAL_NW_TYPE
21641(
21642 WDI_NwType wdiNWType
21643)
21644{
Jeff Johnsone7245742012-09-05 17:12:55 -070021645 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021646 the chances of getting inlined*/
21647 switch( wdiNWType )
21648 {
21649 case WDI_11A_NW_TYPE:
21650 return eSIR_11A_NW_TYPE;
21651 case WDI_11B_NW_TYPE:
21652 return eSIR_11B_NW_TYPE;
21653 case WDI_11G_NW_TYPE:
21654 return eSIR_11G_NW_TYPE;
21655 case WDI_11N_NW_TYPE:
21656 return eSIR_11N_NW_TYPE;
21657 }
21658
Jeff Johnsone7245742012-09-05 17:12:55 -070021659 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021660}/*WDI_2_HAL_NW_TYPE*/
21661
21662/*Convert WDI chanel bonding type into HAL cb type*/
21663WPT_STATIC WPT_INLINE ePhyChanBondState
21664WDI_2_HAL_CB_STATE
21665(
21666 WDI_PhyChanBondState wdiCbState
21667)
21668{
Jeff Johnsone7245742012-09-05 17:12:55 -070021669 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021670 the chances of getting inlined*/
21671 switch ( wdiCbState )
21672 {
21673 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
21674 return PHY_SINGLE_CHANNEL_CENTERED;
21675 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
21676 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
21677 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
21678 return PHY_DOUBLE_CHANNEL_CENTERED;
21679 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
21680 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070021681#ifdef WLAN_FEATURE_11AC
21682 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21683 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21684 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21685 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
21686 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21687 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21688 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21689 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21690 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21691 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
21692 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21693 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21694 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21695 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21696#endif
21697 case WDI_MAX_CB_STATE:
21698 default:
21699 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021700 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021701
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 return PHY_CHANNEL_BONDING_STATE_MAX;
21703}/*WDI_2_HAL_CB_STATE*/
21704
21705/*Convert WDI chanel bonding type into HAL cb type*/
21706WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
21707WDI_2_HAL_HT_OPER_MODE
21708(
21709 WDI_HTOperatingMode wdiHTOperMode
21710)
21711{
Jeff Johnsone7245742012-09-05 17:12:55 -070021712 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021713 the chances of getting inlined*/
21714 switch ( wdiHTOperMode )
21715 {
21716 case WDI_HT_OP_MODE_PURE:
21717 return eSIR_HT_OP_MODE_PURE;
21718 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
21719 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
21720 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
21721 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
21722 case WDI_HT_OP_MODE_MIXED:
21723 return eSIR_HT_OP_MODE_MIXED;
21724 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021725
Jeff Johnson295189b2012-06-20 16:38:30 -070021726 return eSIR_HT_OP_MODE_MAX;
21727}/*WDI_2_HAL_HT_OPER_MODE*/
21728
21729/*Convert WDI mimo PS type into HAL mimo PS type*/
21730WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
21731WDI_2_HAL_MIMO_PS
21732(
21733 WDI_HTMIMOPowerSaveState wdiHTOperMode
21734)
21735{
Jeff Johnsone7245742012-09-05 17:12:55 -070021736 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021737 the chances of getting inlined*/
21738 switch ( wdiHTOperMode )
21739 {
21740 case WDI_HT_MIMO_PS_STATIC:
21741 return eSIR_HT_MIMO_PS_STATIC;
21742 case WDI_HT_MIMO_PS_DYNAMIC:
21743 return eSIR_HT_MIMO_PS_DYNAMIC;
21744 case WDI_HT_MIMO_PS_NA:
21745 return eSIR_HT_MIMO_PS_NA;
21746 case WDI_HT_MIMO_PS_NO_LIMIT:
21747 return eSIR_HT_MIMO_PS_NO_LIMIT;
21748 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021749
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 return eSIR_HT_MIMO_PS_MAX;
21751}/*WDI_2_HAL_MIMO_PS*/
21752
21753/*Convert WDI ENC type into HAL ENC type*/
21754WPT_STATIC WPT_INLINE tAniEdType
21755WDI_2_HAL_ENC_TYPE
21756(
21757 WDI_EncryptType wdiEncType
21758)
21759{
Jeff Johnsone7245742012-09-05 17:12:55 -070021760 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021761 the chances of getting inlined*/
21762 switch ( wdiEncType )
21763 {
21764 case WDI_ENCR_NONE:
21765 return eSIR_ED_NONE;
21766
21767 case WDI_ENCR_WEP40:
21768 return eSIR_ED_WEP40;
21769
21770 case WDI_ENCR_WEP104:
21771 return eSIR_ED_WEP104;
21772
21773 case WDI_ENCR_TKIP:
21774 return eSIR_ED_TKIP;
21775
21776 case WDI_ENCR_CCMP:
21777 return eSIR_ED_CCMP;
21778
21779 case WDI_ENCR_AES_128_CMAC:
21780 return eSIR_ED_AES_128_CMAC;
21781#if defined(FEATURE_WLAN_WAPI)
21782 case WDI_ENCR_WPI:
21783 return eSIR_ED_WPI;
21784#endif
21785 default:
21786 return eSIR_ED_NOT_IMPLEMENTED;
21787 }
21788
21789}/*WDI_2_HAL_ENC_TYPE*/
21790
21791/*Convert WDI WEP type into HAL WEP type*/
21792WPT_STATIC WPT_INLINE tAniWepType
21793WDI_2_HAL_WEP_TYPE
21794(
21795 WDI_WepType wdiWEPType
21796)
21797{
Jeff Johnsone7245742012-09-05 17:12:55 -070021798 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 the chances of getting inlined*/
21800 switch ( wdiWEPType )
21801 {
21802 case WDI_WEP_STATIC:
21803 return eSIR_WEP_STATIC;
21804
21805 case WDI_WEP_DYNAMIC:
21806 return eSIR_WEP_DYNAMIC;
21807 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021808
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 return eSIR_WEP_MAX;
21810}/*WDI_2_HAL_WEP_TYPE*/
21811
21812WPT_STATIC WPT_INLINE tSirLinkState
21813WDI_2_HAL_LINK_STATE
21814(
21815 WDI_LinkStateType wdiLinkState
21816)
21817{
Jeff Johnsone7245742012-09-05 17:12:55 -070021818 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021819 the chances of getting inlined*/
21820 switch ( wdiLinkState )
21821 {
21822 case WDI_LINK_IDLE_STATE:
21823 return eSIR_LINK_IDLE_STATE;
21824
21825 case WDI_LINK_PREASSOC_STATE:
21826 return eSIR_LINK_PREASSOC_STATE;
21827
21828 case WDI_LINK_POSTASSOC_STATE:
21829 return eSIR_LINK_POSTASSOC_STATE;
21830
21831 case WDI_LINK_AP_STATE:
21832 return eSIR_LINK_AP_STATE;
21833
21834 case WDI_LINK_IBSS_STATE:
21835 return eSIR_LINK_IBSS_STATE;
21836
21837 case WDI_LINK_BTAMP_PREASSOC_STATE:
21838 return eSIR_LINK_BTAMP_PREASSOC_STATE;
21839
21840 case WDI_LINK_BTAMP_POSTASSOC_STATE:
21841 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
21842
21843 case WDI_LINK_BTAMP_AP_STATE:
21844 return eSIR_LINK_BTAMP_AP_STATE;
21845
21846 case WDI_LINK_BTAMP_STA_STATE:
21847 return eSIR_LINK_BTAMP_STA_STATE;
21848
21849 case WDI_LINK_LEARN_STATE:
21850 return eSIR_LINK_LEARN_STATE;
21851
21852 case WDI_LINK_SCAN_STATE:
21853 return eSIR_LINK_SCAN_STATE;
21854
21855 case WDI_LINK_FINISH_SCAN_STATE:
21856 return eSIR_LINK_FINISH_SCAN_STATE;
21857
21858 case WDI_LINK_INIT_CAL_STATE:
21859 return eSIR_LINK_INIT_CAL_STATE;
21860
21861 case WDI_LINK_FINISH_CAL_STATE:
21862 return eSIR_LINK_FINISH_CAL_STATE;
21863
21864#ifdef WLAN_FEATURE_P2P
21865 case WDI_LINK_LISTEN_STATE:
21866 return eSIR_LINK_LISTEN_STATE;
21867#endif
21868
21869 default:
21870 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070021871 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021872}
21873
Jeff Johnsone7245742012-09-05 17:12:55 -070021874/*Translate a STA Context from WDI into HAL*/
21875WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070021876void
21877WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070021878(
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 tConfigStaParams* phalConfigSta,
21880 WDI_ConfigStaReqInfoType* pwdiConfigSta
21881)
21882{
21883 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070021884#ifdef WLAN_FEATURE_11AC
21885 /* Get the Version 1 Handler */
21886 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
21887 if (WDI_getFwWlanFeatCaps(DOT11AC))
21888 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021889 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070021890 }
21891#endif
21892 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 the chances of getting inlined*/
21894
Jeff Johnsone7245742012-09-05 17:12:55 -070021895 wpalMemoryCopy(phalConfigSta->bssId,
21896 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
21897
21898 wpalMemoryCopy(phalConfigSta->staMac,
21899 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070021900
21901 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
21902 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
21903 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
21904 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
21905 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
21906 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
21907 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
21908 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
21909 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
21910 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
21911 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
21912 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
21913 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
21914 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
21915 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
21916 phalConfigSta->action = pwdiConfigSta->wdiAction;
21917 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
21918 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
21919 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
21920 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
21921 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
21922 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
21923 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070021924
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
21926
Jeff Johnsone7245742012-09-05 17:12:55 -070021927 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070021928 pwdiConfigSta->wdiSupportedRates.opRateMode;
21929 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
21930 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021931 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021932 pwdiConfigSta->wdiSupportedRates.llbRates[i];
21933 }
21934 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
21935 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021936 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021937 pwdiConfigSta->wdiSupportedRates.llaRates[i];
21938 }
21939 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
21940 {
21941 phalConfigSta->supportedRates.aniLegacyRates[i] =
21942 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
21943 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070021945 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
21946 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
21947 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021948 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021949 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
21950 }
21951 phalConfigSta->supportedRates.rxHighestDataRate =
21952 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
21953
Jeff Johnsone7245742012-09-05 17:12:55 -070021954#ifdef WLAN_FEATURE_11AC
21955 if(phalConfigSta_V1 != NULL)
21956 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021957 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
21958 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
21959 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
21960 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070021961 }
21962#endif
21963
Jeff Johnson295189b2012-06-20 16:38:30 -070021964#ifdef WLAN_FEATURE_P2P
21965 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
21966#endif
21967
Jeff Johnsone7245742012-09-05 17:12:55 -070021968#ifdef WLAN_FEATURE_11AC
21969 if(phalConfigSta_V1 != NULL)
21970 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021971 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
21972 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080021973 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080021974 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
21975 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
21976
Jeff Johnsone7245742012-09-05 17:12:55 -070021977 }
21978#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021979}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070021980
21981/*Translate a Rate set info from WDI into HAL*/
21982WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021983WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070021984(
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 tSirMacRateSet* pHalRateSet,
21986 WDI_RateSet* pwdiRateSet
21987)
21988{
Jeff Johnsone7245742012-09-05 17:12:55 -070021989 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21991
21992 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
21993 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
21994
21995 for ( i = 0; i < pHalRateSet->numRates; i++ )
21996 {
21997 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
21998 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021999
Jeff Johnson295189b2012-06-20 16:38:30 -070022000}/*WDI_CopyWDIRateSetToHALRateSet*/
22001
22002
22003/*Translate an EDCA Parameter Record from WDI into HAL*/
22004WPT_STATIC WPT_INLINE void
22005WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022006(
Jeff Johnson295189b2012-06-20 16:38:30 -070022007 tSirMacEdcaParamRecord* phalEdcaParam,
22008 WDI_EdcaParamRecord* pWDIEdcaParam
22009)
22010{
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022012 the chances of getting inlined*/
22013
22014 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22015 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22016 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22017 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22018
22019 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22020 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22021 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22022}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22023
22024
22025/*Copy a management frame header from WDI fmt into HAL fmt*/
22026WPT_STATIC WPT_INLINE void
22027WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22028(
22029 tSirMacMgmtHdr* pmacMgmtHdr,
22030 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22031)
22032{
22033 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22034 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22035 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22036 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22037 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22038 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22039 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22040 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22041 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22042 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22043 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22044
22045 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22046 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22047
Jeff Johnsone7245742012-09-05 17:12:55 -070022048 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022049 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022050 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022051 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022052 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022053 pwdiMacMgmtHdr->bssId, 6);
22054
22055 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22056 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22057 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22058
22059}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22060
22061
22062/*Copy config bss parameters from WDI fmt into HAL fmt*/
22063WPT_STATIC WPT_INLINE void
22064WDI_CopyWDIConfigBSSToHALConfigBSS
22065(
22066 tConfigBssParams* phalConfigBSS,
22067 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22068)
22069{
22070
22071 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022072#ifdef WLAN_FEATURE_11AC
22073 /* Get the Version 1 Handler */
22074 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22075 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022076 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022077#endif
22078
Jeff Johnson295189b2012-06-20 16:38:30 -070022079 wpalMemoryCopy( phalConfigBSS->bssId,
22080 pwdiConfigBSS->macBSSID,
22081 WDI_MAC_ADDR_LEN);
22082
22083#ifdef HAL_SELF_STA_PER_BSS
22084 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22085 pwdiConfigBSS->macSelfAddr,
22086 WDI_MAC_ADDR_LEN);
22087#endif
22088
22089 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22090
22091 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22092 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22093
Jeff Johnsone7245742012-09-05 17:12:55 -070022094 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022095 pwdiConfigBSS->ucShortSlotTimeSupported;
22096 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22097 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22098 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22099 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22100 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022101 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22103 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22104 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22105 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22106 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22107 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22108 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22109 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22110 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22111 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22112 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22113
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 phalConfigBSS->htOperMode =
22115 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022116
22117 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22118 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22119 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22120 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22121
22122#ifdef WLAN_FEATURE_VOWIFI
22123 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22124#endif
22125
22126 /*! Used 32 as magic number because that is how the ssid is declared inside the
22127 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22130 pwdiConfigBSS->wdiSSID.ucLength : 32;
22131 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 pwdiConfigBSS->wdiSSID.sSSID,
22133 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022134
22135 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22136 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022137
Jeff Johnson295189b2012-06-20 16:38:30 -070022138 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22139 &pwdiConfigBSS->wdiRateSet);
22140
22141 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22142
22143 if(phalConfigBSS->edcaParamsValid)
22144 {
22145 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22146 &pwdiConfigBSS->wdiBEEDCAParams);
22147 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22148 &pwdiConfigBSS->wdiBKEDCAParams);
22149 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22150 &pwdiConfigBSS->wdiVIEDCAParams);
22151 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22152 &pwdiConfigBSS->wdiVOEDCAParams);
22153 }
22154
Jeff Johnsone7245742012-09-05 17:12:55 -070022155 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022156
22157 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22158
22159#ifdef WLAN_FEATURE_VOWIFI_11R
22160
Jeff Johnsone7245742012-09-05 17:12:55 -070022161 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022163
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 if( phalConfigBSS->extSetStaKeyParamValid )
22165 {
22166 /*-----------------------------------------------------------------------
22167 Copy the STA Key parameters into the HAL message
22168 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022169 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022170 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22171
Jeff Johnsone7245742012-09-05 17:12:55 -070022172 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22174
22175 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22176
22177 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22178
22179 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22180
22181#ifdef WLAN_SOFTAP_FEATURE
22182 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22183 keyIndex++)
22184 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022185 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22187 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22188 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22189 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22190 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22191 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022192 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022193 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022194 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022195 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022196 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022197 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22198 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022199 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022200 WDI_MAX_KEY_LENGTH);
22201 }
22202#else
Jeff Johnsone7245742012-09-05 17:12:55 -070022203 phalConfigBSS->extSetStaKeyParam.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022204 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyId;
22205 phalConfigBSS->extSetStaKeyParam.key.unicast =
22206 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].unicast;
22207 phalConfigBSS->extSetStaKeyParam.key.keyDirection =
22208 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyDirection;
22209 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022210 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022211 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022212 phalConfigBSS->extSetStaKeyParam.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022213 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022214 phalConfigBSS->extSetStaKeyParam.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022215 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyLength;
22216 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022217 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022218 WDI_MAX_KEY_LENGTH);
22219#endif
22220 }
22221 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22222 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022223 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022224 sizeof(phalConfigBSS->extSetStaKeyParam) );
22225 }
22226
22227#endif /*WLAN_FEATURE_VOWIFI_11R*/
22228
Jeff Johnsone7245742012-09-05 17:12:55 -070022229#ifdef WLAN_FEATURE_11AC
22230 if(phalConfigBSS_V1 != NULL)
22231 {
22232 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22233 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22234 }
22235#endif
22236
Jeff Johnson295189b2012-06-20 16:38:30 -070022237}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22238
22239
Jeff Johnsone7245742012-09-05 17:12:55 -070022240/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022241 pointed to by user data */
22242WPT_STATIC WPT_INLINE void
22243WDI_ExtractRequestCBFromEvent
22244(
22245 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022246 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022247 void** ppUserData
22248)
22249{
22250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22251 switch ( pEvent->wdiRequest )
22252 {
22253 case WDI_START_REQ:
22254 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22255 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22256 break;
22257 case WDI_STOP_REQ:
22258 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22259 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22260 break;
22261 case WDI_INIT_SCAN_REQ:
22262 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22263 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22264 break;
22265 case WDI_START_SCAN_REQ:
22266 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22267 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22268 break;
22269 case WDI_END_SCAN_REQ:
22270 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22271 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22272 break;
22273 case WDI_FINISH_SCAN_REQ:
22274 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22275 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22276 break;
22277 case WDI_JOIN_REQ:
22278 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22279 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22280 break;
22281 case WDI_CONFIG_BSS_REQ:
22282 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22283 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22284 break;
22285 case WDI_DEL_BSS_REQ:
22286 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22287 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22288 break;
22289 case WDI_POST_ASSOC_REQ:
22290 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22291 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22292 break;
22293 case WDI_DEL_STA_REQ:
22294 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22295 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22296 break;
22297 case WDI_DEL_STA_SELF_REQ:
22298 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22299 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22300 break;
22301
22302 case WDI_SET_BSS_KEY_REQ:
22303 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22304 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22305 break;
22306 case WDI_RMV_BSS_KEY_REQ:
22307 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22308 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22309 break;
22310 case WDI_SET_STA_KEY_REQ:
22311 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22312 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22313 break;
22314 case WDI_RMV_STA_KEY_REQ:
22315 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22316 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22317 break;
22318 case WDI_ADD_TS_REQ:
22319 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22320 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22321 break;
22322 case WDI_DEL_TS_REQ:
22323 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22324 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22325 break;
22326 case WDI_UPD_EDCA_PRMS_REQ:
22327 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22328 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22329 break;
22330 case WDI_ADD_BA_SESSION_REQ:
22331 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22332 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22333 break;
22334 case WDI_DEL_BA_REQ:
22335 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22336 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22337 break;
22338#ifdef FEATURE_WLAN_CCX
22339 case WDI_TSM_STATS_REQ:
22340 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22341 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22342 break;
22343#endif
22344 case WDI_CH_SWITCH_REQ:
22345 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22346 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22347 break;
22348 case WDI_CONFIG_STA_REQ:
22349 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22350 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22351 break;
22352 case WDI_SET_LINK_ST_REQ:
22353 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22354 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22355 break;
22356 case WDI_GET_STATS_REQ:
22357 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22358 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22359 break;
22360 case WDI_UPDATE_CFG_REQ:
22361 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22362 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22363 break;
22364 case WDI_ADD_BA_REQ:
22365 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22366 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22367 break;
22368 case WDI_TRIGGER_BA_REQ:
22369 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22370 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22371 break;
22372 case WDI_UPD_BCON_PRMS_REQ:
22373 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22374 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22375 break;
22376 case WDI_SND_BCON_REQ:
22377 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22378 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22379 break;
22380 case WDI_ENTER_BMPS_REQ:
22381 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22382 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22383 break;
22384 case WDI_EXIT_BMPS_REQ:
22385 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22386 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22387 break;
22388 case WDI_ENTER_UAPSD_REQ:
22389 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22390 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22391 break;
22392 case WDI_UPDATE_UAPSD_PARAM_REQ:
22393 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22394 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22395 break;
22396 case WDI_CONFIGURE_RXP_FILTER_REQ:
22397 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22398 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22399 break;
22400 case WDI_SET_BEACON_FILTER_REQ:
22401 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22402 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22403 break;
22404 case WDI_REM_BEACON_FILTER_REQ:
22405 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22406 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022407 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022408 case WDI_SET_RSSI_THRESHOLDS_REQ:
22409 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22410 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22411 break;
22412 case WDI_HOST_OFFLOAD_REQ:
22413 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22414 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22415 break;
22416 case WDI_WOWL_ADD_BC_PTRN_REQ:
22417 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22418 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22419 break;
22420 case WDI_WOWL_DEL_BC_PTRN_REQ:
22421 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22422 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22423 break;
22424 case WDI_WOWL_ENTER_REQ:
22425 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22426 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22427 break;
22428 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22429 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22430 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22431 break;
22432 case WDI_FLUSH_AC_REQ:
22433 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22434 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22435 break;
22436 case WDI_BTAMP_EVENT_REQ:
22437 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22438 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22439 break;
22440 case WDI_KEEP_ALIVE_REQ:
22441 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22442 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22443 break;
22444 case WDI_SET_TX_PER_TRACKING_REQ:
22445 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22446 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
22447 default:
22448 *ppfnReqCB = NULL;
22449 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022450 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022451 }
22452}/*WDI_ExtractRequestCBFromEvent*/
22453
22454
22455/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022456 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022457 frame xtl is enabled for a particular STA.
22458
22459 WDI_PostAssocReq must have been called.
22460
Jeff Johnsone7245742012-09-05 17:12:55 -070022461 @param uSTAIdx: STA index
22462
Jeff Johnson295189b2012-06-20 16:38:30 -070022463 @see WDI_PostAssocReq
22464 @return Result of the function call
22465*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022466wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022467WDI_IsHwFrameTxTranslationCapable
22468(
22469 wpt_uint8 uSTAIdx
22470)
22471{
Jeff Johnsone7245742012-09-05 17:12:55 -070022472 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022473 uma value*/
22474 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 ------------------------------------------------------------------------*/
22477 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22478 {
22479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22480 "WDI API call before module is initialized - Fail request");
22481
Jeff Johnsone7245742012-09-05 17:12:55 -070022482 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022483 }
22484
Gopichand Nakkalaba261272013-01-03 15:45:56 -080022485#ifdef WLAN_SOFTAP_VSTA_FEATURE
22486 if (IS_VSTA_IDX(uSTAIdx))
22487 {
22488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22489 "STA %d is a Virtual STA, "
22490 "HW frame translation disabled", uSTAIdx);
22491 return eWLAN_PAL_FALSE;
22492 }
22493#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070022494
Jeff Johnson295189b2012-06-20 16:38:30 -070022495 return gWDICb.bFrameTransEnabled;
22496}/*WDI_IsHwFrameTxTranslationCapable*/
22497
22498#ifdef FEATURE_WLAN_SCAN_PNO
22499/**
22500 @brief WDI_SetPreferredNetworkList
22501
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022504
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 wdiPNOScanCb: callback for passing back the response
22506 of the Set PNO operation received from the
22507 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022508
Jeff Johnson295189b2012-06-20 16:38:30 -070022509 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022510 callback
22511
Jeff Johnson295189b2012-06-20 16:38:30 -070022512 @return Result of the function call
22513*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022514WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022515WDI_SetPreferredNetworkReq
22516(
22517 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22518 WDI_PNOScanCb wdiPNOScanCb,
22519 void* pUserData
22520)
22521{
22522 WDI_EventInfoType wdiEventData = {{0}};
22523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22524
22525 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 ------------------------------------------------------------------------*/
22528 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22529 {
22530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22531 "WDI API call before module is initialized - Fail request");
22532
Jeff Johnsone7245742012-09-05 17:12:55 -070022533 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022534 }
22535
22536 /*------------------------------------------------------------------------
22537 Fill in Event data and post to the Main FSM
22538 ------------------------------------------------------------------------*/
22539 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022540 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022541 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 wdiEventData.pUserData = pUserData;
22544
22545 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22546}
22547
22548
22549/**
22550 @brief WDI_SetRssiFilterReq
22551
Jeff Johnsone7245742012-09-05 17:12:55 -070022552 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022554
Jeff Johnson295189b2012-06-20 16:38:30 -070022555 wdiRssiFilterCb: callback for passing back the response
22556 of the Set RSSI Filter operation received from the
22557 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022558
Jeff Johnson295189b2012-06-20 16:38:30 -070022559 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022560 callback
22561
Jeff Johnson295189b2012-06-20 16:38:30 -070022562 @return Result of the function call
22563*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022564WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022565WDI_SetRssiFilterReq
22566(
22567 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22568 WDI_RssiFilterCb wdiRssiFilterCb,
22569 void* pUserData
22570)
22571{
22572 WDI_EventInfoType wdiEventData = {{0}};
22573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22574
22575 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 ------------------------------------------------------------------------*/
22578 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22579 {
22580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22581 "WDI API call before module is initialized - Fail request");
22582
Jeff Johnsone7245742012-09-05 17:12:55 -070022583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 }
22585
22586 /*------------------------------------------------------------------------
22587 Fill in Event data and post to the Main FSM
22588 ------------------------------------------------------------------------*/
22589 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022590 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022592 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022593 wdiEventData.pUserData = pUserData;
22594
22595 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22596}/*WDI_SetRssiFilterReq*/
22597
22598/**
22599 @brief WDI_UpdateScanParamsReq
22600
Jeff Johnsone7245742012-09-05 17:12:55 -070022601 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022603
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 wdiUpdateScanParamsCb: callback for passing back the response
22605 of the Set PNO operation received from the
22606 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022607
Jeff Johnson295189b2012-06-20 16:38:30 -070022608 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022609 callback
22610
Jeff Johnson295189b2012-06-20 16:38:30 -070022611 @return Result of the function call
22612*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022613WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022614WDI_UpdateScanParamsReq
22615(
22616 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22617 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22618 void* pUserData
22619)
22620{
22621 WDI_EventInfoType wdiEventData = {{0}};
22622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22623
22624 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022625 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022626 ------------------------------------------------------------------------*/
22627 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22628 {
22629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22630 "WDI API call before module is initialized - Fail request");
22631
Jeff Johnsone7245742012-09-05 17:12:55 -070022632 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022633 }
22634
22635 /*------------------------------------------------------------------------
22636 Fill in Event data and post to the Main FSM
22637 ------------------------------------------------------------------------*/
22638 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070022641 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022642 wdiEventData.pUserData = pUserData;
22643
22644 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22645}
22646
22647/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022648 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022649 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022650
22651 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022652 pwdiPNOScanReqParams: pointer to the info received
22653 from upper layers
22654 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022655 and its size
22656
Jeff Johnson295189b2012-06-20 16:38:30 -070022657 @return Result of the function call
22658*/
22659
22660WDI_Status
22661WDI_PackPreferredNetworkList
22662(
22663 WDI_ControlBlockType* pWDICtx,
22664 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22665 wpt_uint8** ppSendBuffer,
22666 wpt_uint16* pSize
22667)
22668{
Jeff Johnsone7245742012-09-05 17:12:55 -070022669 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022670 wpt_uint16 usDataOffset = 0;
22671 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022672 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022673 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 /*-----------------------------------------------------------------------
22675 Get message buffer
22676 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022677 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022678 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070022679 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022680 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022681 {
22682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22683 "Unable to get send buffer in Set PNO req %x ",
22684 pwdiPNOScanReqParams);
22685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022687 }
22688
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022689 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
22690
Jeff Johnson295189b2012-06-20 16:38:30 -070022691 /*-------------------------------------------------------------------------
22692 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22693 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022694 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022696 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22698
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022699 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022700 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022701 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22704
22705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022706 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022707 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22708 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22709 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22710
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022711 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022712 {
22713 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022714 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022715 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22716
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022717 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022718 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022719 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022720
22721 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022722 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022723 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022724
22725 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022726 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022727 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022728
Jeff Johnsone7245742012-09-05 17:12:55 -070022729 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022730 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022731 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070022732 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
22733 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22734 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
22735 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022736
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022737 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022738 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022739 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022740
22741 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022742 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022743 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22744
22745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022746 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022747 pPrefNetwListParams->aNetworks[i].ssId.length,
22748 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022749 }
22750
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022751 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022752 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22754 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22755 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22756
22757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022758 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022759 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22761 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22762
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022763 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022765 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022767 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022768 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22769 }
22770
22771 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022772 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022773 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22774 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22775 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022776 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022777
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022778 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022779 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022780 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022781
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022782 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022783 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22784 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22785 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022786 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022787
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022788 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022789 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022790 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022791
22792 /*Set the output values*/
22793 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022794 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022795
22796 return WDI_STATUS_SUCCESS;
22797}/*WDI_PackPreferredNetworkList*/
22798
22799/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022800 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022801 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022802
22803 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 pwdiPNOScanReqParams: pointer to the info received
22805 from upper layers
22806 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022807 and its size
22808
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 @return Result of the function call
22810*/
22811
22812WDI_Status
22813WDI_PackPreferredNetworkListNew
22814(
22815 WDI_ControlBlockType* pWDICtx,
22816 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22817 wpt_uint8** ppSendBuffer,
22818 wpt_uint16* pSize
22819)
22820{
Jeff Johnsone7245742012-09-05 17:12:55 -070022821 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 wpt_uint16 usDataOffset = 0;
22823 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022824 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022825 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022826
22827 /*-----------------------------------------------------------------------
22828 Get message buffer
22829 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022830 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022831 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022833 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022834 {
22835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22836 "Unable to get send buffer in Set PNO req %x ",
22837 pwdiPNOScanReqParams);
22838 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
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022842 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
22843
Jeff Johnson295189b2012-06-20 16:38:30 -070022844 /*-------------------------------------------------------------------------
22845 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22846 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022847 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022848 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022849 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022850 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22851
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022852 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022853 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022854 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022855 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022856 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22857
22858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022859 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022860 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22861 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22862 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22863
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022864 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022865 {
22866 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022867 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022868 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22869
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022870 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022871 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022872 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022873
22874 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022875 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022876 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022877
22878 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022879 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022880 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022881
22882 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022883 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070022884 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022885
Jeff Johnsone7245742012-09-05 17:12:55 -070022886 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022887 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022888 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070022889 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
22890
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022891 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022892 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022893 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022894
22895 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022896 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022897 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22898
22899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022900 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022901 pPrefNetwListParams->aNetworks[i].ssId.length,
22902 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022903 }
22904
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022905 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022906 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022907 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22908 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22909 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22910
22911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022912 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022913 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022914 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22915 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22916
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022917 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022918 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022919 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022920 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022921 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022922 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22923 }
22924
22925 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022926 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022927 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22928 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22929 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022930 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022931
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022932 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022933 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022934 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022935
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022936 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022937 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22938 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22939 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022940 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022941
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022942 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022943 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022944 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022945
Jeff Johnson295189b2012-06-20 16:38:30 -070022946
22947 /*Set the output values*/
22948 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022949 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022950
22951 return WDI_STATUS_SUCCESS;
22952}/*WDI_PackPreferredNetworkListNew*/
22953
22954/**
22955 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022956
22957 @param pWDICtx: pointer to the WLAN DAL context
22958 pEventData: pointer to the event information structure
22959
Jeff Johnson295189b2012-06-20 16:38:30 -070022960 @return Result of the function call
22961*/
22962WDI_Status
22963WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022964(
Jeff Johnson295189b2012-06-20 16:38:30 -070022965 WDI_ControlBlockType* pWDICtx,
22966 WDI_EventInfoType* pEventData
22967)
22968{
22969 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
22970 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022971 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022973 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022974
22975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022977 -------------------------------------------------------------------------*/
22978 if (( NULL == pEventData ) ||
22979 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
22980 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
22981 {
22982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022986 }
22987
22988 /*-------------------------------------------------------------------------
22989 Pack the PNO request structure based on version
22990 -------------------------------------------------------------------------*/
22991 if ( pWDICtx->wdiPNOVersion > 0 )
22992 {
22993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022994 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022995 pWDICtx->wdiPNOVersion);
22996
22997 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
22998 &pSendBuffer, &usSendSize);
22999 }
23000 else
23001 {
23002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023003 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023004 pWDICtx->wdiPNOVersion);
23005
23006 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23007 &pSendBuffer, &usSendSize);
23008 }
23009
23010 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23011 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23012 {
23013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023014 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023016 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023017 }
23018
23019 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023020 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023021
23022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023023 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023024 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023025 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23026 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023027}
23028
23029/**
23030 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023031
23032 @param pWDICtx: pointer to the WLAN DAL context
23033 pEventData: pointer to the event information structure
23034
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 @see
23036 @return Result of the function call
23037*/
23038WDI_Status
23039WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023040(
Jeff Johnson295189b2012-06-20 16:38:30 -070023041 WDI_ControlBlockType* pWDICtx,
23042 WDI_EventInfoType* pEventData
23043)
23044{
23045 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23046 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023047 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023048 wpt_uint16 usDataOffset = 0;
23049 wpt_uint16 usSendSize = 0;
23050 wpt_uint8 ucRssiThreshold;
23051
23052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023054 -------------------------------------------------------------------------*/
23055 if (( NULL == pEventData ) ||
23056 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23057 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23058 {
23059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023063 }
23064
23065 /*-----------------------------------------------------------------------
23066 Get message buffer
23067 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 sizeof(ucRssiThreshold),
23070 &pSendBuffer, &usDataOffset, &usSendSize))||
23071 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
23072 {
23073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23074 "Unable to get send buffer in Set PNO req %x %x %x",
23075 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023078 }
23079
23080 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23081
Jeff Johnsone7245742012-09-05 17:12:55 -070023082 wpalMemoryCopy( pSendBuffer+usDataOffset,
23083 &ucRssiThreshold,
23084 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023085
23086 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023087 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023088
23089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023090 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023091 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023092 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23093 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023094}
23095
23096
23097/**
23098 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070023099
23100 @param pWDICtx: pointer to the WLAN DAL context
23101 pEventData: pointer to the event information structure
23102
Jeff Johnson295189b2012-06-20 16:38:30 -070023103 @see
23104 @return Result of the function call
23105*/
23106WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023107WDI_PackUpdateScanParamsReq
23108(
23109 WDI_ControlBlockType* pWDICtx,
23110 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23111 wpt_uint8** ppSendBuffer,
23112 wpt_uint16* pSize
23113)
23114{
23115 wpt_uint8* pSendBuffer = NULL;
23116 wpt_uint16 usDataOffset = 0;
23117 wpt_uint16 usSendSize = 0;
23118 tUpdateScanParams updateScanParams = {0};
23119
23120
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023122 "Begin WDI Update Scan Parameters Old Style Params");
23123 /*-----------------------------------------------------------------------
23124 Get message buffer
23125 -----------------------------------------------------------------------*/
23126 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23127 sizeof(updateScanParams),
23128 &pSendBuffer, &usDataOffset, &usSendSize))||
23129 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23130 {
23131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23132 "Unable to get send buffer in Update Scan Params req %x",
23133 pwdiUpdateScanParams);
23134 WDI_ASSERT(0);
23135 return WDI_STATUS_E_FAILURE;
23136 }
23137
23138 //
23139 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23140 //
23141
23142 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23143 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23144
23145 updateScanParams.ucChannelCount =
23146 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23147 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23148 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23149 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
23150
23151 wpalMemoryCopy( updateScanParams.aChannels,
23152 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23153 updateScanParams.ucChannelCount);
23154
23155
23156 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23157 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23158 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23159 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23160 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23161
23162 wpalMemoryCopy( pSendBuffer+usDataOffset,
23163 &updateScanParams,
23164 sizeof(updateScanParams));
23165
23166 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23167 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23168
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023170 "End Update Scan Parameters Old Style");
23171
23172 /*Set the output values*/
23173 *ppSendBuffer = pSendBuffer;
23174 *pSize = usSendSize;
23175
23176 return WDI_STATUS_SUCCESS;
23177}
23178
23179/**
23180 @brief Process Update Scan Params function
23181
23182 @param pWDICtx: pointer to the WLAN DAL context
23183 pEventData: pointer to the event information structure
23184
23185 @see
23186 @return Result of the function call
23187*/
23188WDI_Status
23189WDI_PackUpdateScanParamsReqEx
23190(
23191 WDI_ControlBlockType* pWDICtx,
23192 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23193 wpt_uint8** ppSendBuffer,
23194 wpt_uint16* pSize
23195)
23196{
23197 wpt_uint8* pSendBuffer = NULL;
23198 wpt_uint16 usDataOffset = 0;
23199 wpt_uint16 usSendSize = 0;
23200 tUpdateScanParamsEx updateScanParams = {0};
23201
23202
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023204 "Begin WDI Update Scan Parameters New Style Params");
23205 /*-----------------------------------------------------------------------
23206 Get message buffer
23207 -----------------------------------------------------------------------*/
23208 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23209 sizeof(updateScanParams),
23210 &pSendBuffer, &usDataOffset, &usSendSize))||
23211 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23212 {
23213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23214 "Unable to get send buffer in Update Scan Params Ex req %x",
23215 pwdiUpdateScanParams);
23216 WDI_ASSERT(0);
23217 return WDI_STATUS_E_FAILURE;
23218 }
23219
23220 //
23221 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23222 //
23223
23224 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23225 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23226
23227 updateScanParams.ucChannelCount =
23228 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23229 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23230 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23231 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23232
23233 wpalMemoryCopy( updateScanParams.aChannels,
23234 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23235 updateScanParams.ucChannelCount);
23236
23237
23238 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23239 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23240 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23241 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23242 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23243
23244 wpalMemoryCopy( pSendBuffer+usDataOffset,
23245 &updateScanParams,
23246 sizeof(updateScanParams));
23247
23248 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23249 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23250
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023252 "End Update Scan Parameters New Style");
23253
23254 /*Set the output values*/
23255 *ppSendBuffer = pSendBuffer;
23256 *pSize = usSendSize;
23257
23258 return WDI_STATUS_SUCCESS;
23259}
23260
23261/**
23262 @brief Process Update Scan Params function
23263
23264 @param pWDICtx: pointer to the WLAN DAL context
23265 pEventData: pointer to the event information structure
23266
23267 @see
23268 @return Result of the function call
23269*/
23270WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023271WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023272(
Jeff Johnson295189b2012-06-20 16:38:30 -070023273 WDI_ControlBlockType* pWDICtx,
23274 WDI_EventInfoType* pEventData
23275)
23276{
23277 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23278 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023279 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023280 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023281 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023282
23283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023285 -------------------------------------------------------------------------*/
23286 if (( NULL == pEventData ) ||
23287 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23288 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23289 {
23290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023294 }
23295
23296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23297 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023298
23299 //
23300 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23301 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023302 if ( pWDICtx->wlanVersion.revision < 1 )
23303 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023304 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023305 &pSendBuffer, &usSendSize);
23306 }
23307 else
23308 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023309 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23310 &pSendBuffer, &usSendSize);
23311 }
23312
23313 if(WDI_STATUS_SUCCESS != wdiStatus)
23314 {
23315 //memory allocation failed
23316 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023317 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023318
Jeff Johnson295189b2012-06-20 16:38:30 -070023319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023320 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023321 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023322 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023323 wdiUpdateScanParamsCb, pEventData->pUserData,
23324 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023325}
23326
23327/**
23328 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023329
23330 @param pWDICtx: pointer to the WLAN DAL context
23331 pEventData: pointer to the event information structure
23332
Jeff Johnson295189b2012-06-20 16:38:30 -070023333 @see
23334 @return Result of the function call
23335*/
23336WDI_Status
23337WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023338(
Jeff Johnson295189b2012-06-20 16:38:30 -070023339 WDI_ControlBlockType* pWDICtx,
23340 WDI_EventInfoType* pEventData
23341)
23342{
23343 WDI_LowLevelIndType wdiInd;
23344 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23345
23346
23347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023349 -------------------------------------------------------------------------*/
23350 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23351 ( NULL == pEventData->pEventData ))
23352 {
23353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023355 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023357 }
23358
23359 /*-------------------------------------------------------------------------
23360 Extract indication and send it to UMAC
23361 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023362 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23363 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 sizeof(tPrefNetwFoundParams));
23365
23366 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023367 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023368
23369 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23370
Jeff Johnsone7245742012-09-05 17:12:55 -070023371 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023372 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023374
Jeff Johnsone7245742012-09-05 17:12:55 -070023375 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23376 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023377 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23378
23379 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23380 prefNetwFoundInd.prefNetwFoundParams.rssi;
23381
23382 // DEBUG
23383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23384 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23385 wdiInd.wdiIndicationType,
23386 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23387 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23388
ltimariu034f7d62013-01-24 18:54:33 -080023389 if ( pWDICtx->wdiLowLevelIndCB )
23390 {
23391 /*Notify UMAC*/
23392 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
23393 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023394
23395 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023396}
23397
23398/**
23399 @brief Process PNO Rsp function (called when a
23400 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023401
23402 @param pWDICtx: pointer to the WLAN DAL context
23403 pEventData: pointer to the event information structure
23404
Jeff Johnson295189b2012-06-20 16:38:30 -070023405 @see
23406 @return Result of the function call
23407*/
23408WDI_Status
23409WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023410(
Jeff Johnson295189b2012-06-20 16:38:30 -070023411 WDI_ControlBlockType* pWDICtx,
23412 WDI_EventInfoType* pEventData
23413)
23414{
23415 WDI_Status wdiStatus;
23416 eHalStatus halStatus;
23417 WDI_PNOScanCb wdiPNOScanCb = NULL;
23418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23419
23420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023422 -------------------------------------------------------------------------*/
23423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23424 ( NULL == pEventData->pEventData ))
23425 {
23426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023430 }
23431
23432
Jeff Johnsone7245742012-09-05 17:12:55 -070023433 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023434
23435 /*-------------------------------------------------------------------------
23436 Extract response and send it to UMAC
23437 -------------------------------------------------------------------------*/
23438 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023440
23441 /*Notify UMAC*/
23442 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23443
Jeff Johnsone7245742012-09-05 17:12:55 -070023444 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023445}/*WDI_ProcessSetPreferredNetworkRsp*/
23446
23447/**
23448 @brief Process RSSI Filter Rsp function (called when a
23449 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023450
23451 @param pWDICtx: pointer to the WLAN DAL context
23452 pEventData: pointer to the event information structure
23453
Jeff Johnson295189b2012-06-20 16:38:30 -070023454 @see
23455 @return Result of the function call
23456*/
23457WDI_Status
23458WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023459(
Jeff Johnson295189b2012-06-20 16:38:30 -070023460 WDI_ControlBlockType* pWDICtx,
23461 WDI_EventInfoType* pEventData
23462)
23463{
23464 WDI_Status wdiStatus;
23465 eHalStatus halStatus;
23466 WDI_RssiFilterCb wdiRssiFilterCb;
23467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23468
23469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023471 -------------------------------------------------------------------------*/
23472 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23473 ( NULL == pEventData->pEventData ))
23474 {
23475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023476 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023479 }
23480
Jeff Johnsone7245742012-09-05 17:12:55 -070023481 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023482
23483 /*-------------------------------------------------------------------------
23484 Extract response and send it to UMAC
23485 -------------------------------------------------------------------------*/
23486 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023487 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023488
23489 /*Notify UMAC*/
23490 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23491
Jeff Johnsone7245742012-09-05 17:12:55 -070023492 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023493}/*WDI_ProcessSetRssiFilterRsp*/
23494
23495/**
23496 @brief Process Update Scan Params Rsp function (called when a
23497 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023498
23499 @param pWDICtx: pointer to the WLAN DAL context
23500 pEventData: pointer to the event information structure
23501
Jeff Johnson295189b2012-06-20 16:38:30 -070023502 @see
23503 @return Result of the function call
23504*/
23505WDI_Status
23506WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023507(
Jeff Johnson295189b2012-06-20 16:38:30 -070023508 WDI_ControlBlockType* pWDICtx,
23509 WDI_EventInfoType* pEventData
23510)
23511{
23512 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023513 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023514 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023515 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23517
23518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023519 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023520 -------------------------------------------------------------------------*/
23521 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23522 ( NULL == pEventData->pEventData ))
23523 {
23524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023528 }
23529
23530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023531 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023532
Jeff Johnsone7245742012-09-05 17:12:55 -070023533 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023534
23535 /*-------------------------------------------------------------------------
23536 Extract response and send it to UMAC
23537 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023538 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23539 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023540 sizeof(halUpdScanParams.status));
23541
23542 uStatus = halUpdScanParams.status;
23543
23544 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023545 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023546
23547 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023548 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023549
Jeff Johnsone7245742012-09-05 17:12:55 -070023550 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023551
23552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023553 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023554 halUpdScanParams.status);
23555
23556 /*Notify UMAC*/
23557 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23558
Jeff Johnsone7245742012-09-05 17:12:55 -070023559 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023560}
23561#endif // FEATURE_WLAN_SCAN_PNO
23562
23563#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023564WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023565WDI_8023MulticastListReq
23566(
23567 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23568 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23569 void* pUserData
23570)
23571{
23572 WDI_EventInfoType wdiEventData;
23573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23574
23575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023576 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023577
23578 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 ------------------------------------------------------------------------*/
23581 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23582 {
23583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23584 "WDI API call before module is initialized - Fail request");
23585
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 }
23588
23589 /*------------------------------------------------------------------------
23590 Fill in Event data and post to the Main FSM
23591 ------------------------------------------------------------------------*/
23592 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023593 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023594 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023595 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023596 wdiEventData.pUserData = pUserData;
23597
23598 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23599}
23600
Jeff Johnsone7245742012-09-05 17:12:55 -070023601WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023602WDI_ReceiveFilterSetFilterReq
23603(
23604 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23605 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23606 void* pUserData
23607)
23608{
23609 WDI_EventInfoType wdiEventData;
23610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23611
23612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023613 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023614
23615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023617 ------------------------------------------------------------------------*/
23618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23619 {
23620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23621 "WDI API call before module is initialized - Fail request");
23622
Jeff Johnsone7245742012-09-05 17:12:55 -070023623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023624 }
23625
23626 /*------------------------------------------------------------------------
23627 Fill in Event data and post to the Main FSM
23628 ------------------------------------------------------------------------*/
23629 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023630 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23631 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
23632 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams
Jeff Johnson295189b2012-06-20 16:38:30 -070023633 * sizeof(WDI_RcvPktFilterFieldParams) - 1);
Jeff Johnsone7245742012-09-05 17:12:55 -070023634 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023635 wdiEventData.pUserData = pUserData;
23636
23637
23638 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23639}
23640
Jeff Johnsone7245742012-09-05 17:12:55 -070023641WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023642WDI_FilterMatchCountReq
23643(
23644 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
23645 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
23646 void* pUserData
23647)
23648{
23649 WDI_EventInfoType wdiEventData;
23650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23651
23652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023653 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023654
23655 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023656 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023657 ------------------------------------------------------------------------*/
23658 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23659 {
23660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23661 "WDI API call before module is initialized - Fail request");
23662
Jeff Johnsone7245742012-09-05 17:12:55 -070023663 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023664 }
23665
23666 /*------------------------------------------------------------------------
23667 Fill in Event data and post to the Main FSM
23668 ------------------------------------------------------------------------*/
23669 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023670 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023671 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023672 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023673 wdiEventData.pUserData = pUserData;
23674
23675
23676 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23677}
23678
Jeff Johnsone7245742012-09-05 17:12:55 -070023679WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023680WDI_ReceiveFilterClearFilterReq
23681(
23682 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
23683 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
23684 void* pUserData
23685)
23686{
23687 WDI_EventInfoType wdiEventData;
23688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23689
23690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023691 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023692
23693 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023694 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023695 ------------------------------------------------------------------------*/
23696 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23697 {
23698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23699 "WDI API call before module is initialized - Fail request");
23700
Jeff Johnsone7245742012-09-05 17:12:55 -070023701 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023702 }
23703
23704 /*------------------------------------------------------------------------
23705 Fill in Event data and post to the Main FSM
23706 ------------------------------------------------------------------------*/
23707 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023708 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023709 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023710 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023711 wdiEventData.pUserData = pUserData;
23712
23713
23714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23715}
23716
23717/**
23718 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023719
23720 @param pWDICtx: pointer to the WLAN DAL context
23721 pEventData: pointer to the event information structure
23722
Jeff Johnson295189b2012-06-20 16:38:30 -070023723 @see
23724 @return Result of the function call
23725*/
23726WDI_Status
23727WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023728(
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 WDI_ControlBlockType* pWDICtx,
23730 WDI_EventInfoType* pEventData
23731)
23732{
23733 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
23734 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023735 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 wpt_uint16 usDataOffset = 0;
23737 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023738 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023739 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023740 wpt_uint8 ucCurrentBSSSesIdx = 0;
23741 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023742
23743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023744 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023745
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023746 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
23747 if( NULL == pRcvFltMcAddrListType )
23748 {
23749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23750 "Failed to alloc in WDI_Process8023MulticastListReq");
23751 return WDI_STATUS_E_FAILURE;
23752 }
23753
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023755 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 -------------------------------------------------------------------------*/
23757 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023758 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023759 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023760 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023761 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
23762 {
23763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023764 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023765 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023767 return WDI_STATUS_E_FAILURE;
23768 }
23769
23770 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23771 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
23772 &pBSSSes);
23773 if ( NULL == pBSSSes )
23774 {
23775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023776 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023777 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023779 }
23780
23781 /*-----------------------------------------------------------------------
23782 Get message buffer
23783 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023784 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23785 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023786 sizeof(tHalRcvFltMcAddrListType),
23787 &pSendBuffer, &usDataOffset, &usSendSize))||
23788 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
23789 {
23790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23791 "Unable to get send buffer in "
23792 "WDI_Process8023MulticastListReq() %x %x %x",
23793 pEventData, pwdiFltPktSetMcListReqParamsType,
23794 wdi8023MulticastListCb);
23795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 }
23798
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023799 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070023800 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023801 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023802 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023803 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070023804 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
23805 sizeof(tSirMacAddr));
23806 }
23807
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023808 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023810 pRcvFltMcAddrListType,
23811 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070023812
23813 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023814 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023815
23816
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023817 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023819 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023820 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023821 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023822 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023823 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023824}
23825
23826/**
23827 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023828
23829 @param pWDICtx: pointer to the WLAN DAL context
23830 pEventData: pointer to the event information structure
23831
Jeff Johnson295189b2012-06-20 16:38:30 -070023832 @see
23833 @return Result of the function call
23834*/
23835WDI_Status
23836WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023837(
Jeff Johnson295189b2012-06-20 16:38:30 -070023838 WDI_ControlBlockType* pWDICtx,
23839 WDI_EventInfoType* pEventData
23840)
23841{
23842 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
23843 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023844 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 wpt_uint16 usDataOffset = 0;
23846 wpt_uint16 usSendSize = 0;
23847 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023848 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023850 wpt_uint8 ucCurrentBSSSesIdx = 0;
23851 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023852 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
23853 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023854
23855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023856 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023857
23858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023860 -------------------------------------------------------------------------*/
23861 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023862 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070023863 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023864 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023865 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
23866 {
23867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023868 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023870 return WDI_STATUS_E_FAILURE;
23871 }
23872
23873 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23874 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
23875 &pBSSSes);
23876 if ( NULL == pBSSSes )
23877 {
23878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023879 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023881 }
23882
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023883 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
23884 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023885
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023886 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
23887 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23888 * sizeof(tHalSessionizedRcvPktFilterCfgType));
23889
23890 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
23891 usSessRcvPktFilterCfgSize);
23892
23893 if(NULL == pSessRcvPktFilterCfg)
23894 {
23895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23896 "%s: Failed to allocate memory for "
23897 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023898 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023899 WDI_ASSERT(0);
23900 return WDI_STATUS_E_FAILURE;
23901 }
23902
23903 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
23904
23905 /*-----------------------------------------------------------------------
23906 Get message buffer
23907 -----------------------------------------------------------------------*/
23908
23909 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
23910 usSessRcvPktFilterCfgSize,
23911 &pSendBuffer, &usDataOffset, &usSendSize))||
23912 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
23913 {
23914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23915 "Unable to get send buffer in "
23916 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23917 pEventData, pwdiSetRcvPktFilterReqInfo,
23918 wdiReceiveFilterSetFilterCb);
23919 WDI_ASSERT(0);
23920 wpalMemoryFree(pSessRcvPktFilterCfg);
23921 return WDI_STATUS_E_FAILURE;
23922 }
23923
23924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23925 "UsData Off %d UsSend %d cfg %d",usDataOffset,
23926 usSendSize,pSessRcvPktFilterCfg);
23927
23928 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23929 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23930 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23931 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
23932
23933 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
23934
23935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23936 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
23937 pSessRcvPktFilterCfg->filterType);
23938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23939 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
23940 pSessRcvPktFilterCfg->coleasceTime);
23941
23942 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
23943 {
23944 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
23945 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23946 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
23947 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23948 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
23949 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23950 pSessRcvPktFilterCfg->paramsData[i].dataLength =
23951 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
23952
23953 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
23954 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23955 8);
23956 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
23957 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23958 8);
23959
23960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23961 "Out:Proto %d Comp Flag %d \n",
23962 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
23963 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
23964
23965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23966 "Data Offset %d Data Len %d\n",
23967 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
23968 pSessRcvPktFilterCfg->paramsData[i].dataLength);
23969
23970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23971 "CData: %d:%d:%d:%d:%d:%d\n",
23972 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
23973 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
23974 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
23975 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
23976 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
23977 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
23978
23979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23980 "MData: %d:%d:%d:%d:%d:%d\n",
23981 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
23982 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
23983 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
23984 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
23985 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
23986 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
23987 }
23988
23989 wpalMemoryCopy( pSendBuffer+usDataOffset,
23990 pSessRcvPktFilterCfg,
23991 usSessRcvPktFilterCfgSize);
23992
23993
23994 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23995 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
23996
23997 wpalMemoryFree(pSessRcvPktFilterCfg);
23998
23999 }
24000 /*If SLM_SESSIONIZATION is not supported then do this */
24001 else
24002 {
24003 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
24004 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24005 * sizeof(tHalRcvPktFilterParams));
24006
24007 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070024008 usRcvPktFilterCfgSize);
24009
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024010 if(NULL == pRcvPktFilterCfg)
24011 {
24012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24013 "%s: Failed to allocate memory for "
24014 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024015 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024016 WDI_ASSERT(0);
24017 return WDI_STATUS_E_FAILURE;
24018 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024019
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024020 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024021
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024022 /*-----------------------------------------------------------------------
24023 Get message buffer
24024 -----------------------------------------------------------------------*/
24025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 usRcvPktFilterCfgSize,
24027 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024028 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
24029 {
24030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 "Unable to get send buffer in "
24032 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24033 pEventData, pwdiSetRcvPktFilterReqInfo,
24034 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024035 WDI_ASSERT(0);
24036 wpalMemoryFree(pRcvPktFilterCfg);
24037 return WDI_STATUS_E_FAILURE;
24038 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024039
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024041 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070024042 usSendSize,usRcvPktFilterCfgSize);
24043
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024044 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24045 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24046 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24047 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070024048
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024050 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024051 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070024054 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070024055
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024056 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
24057 {
24058 pRcvPktFilterCfg->paramsData[i].protocolLayer =
24059 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24060 pRcvPktFilterCfg->paramsData[i].cmpFlag =
24061 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24062 pRcvPktFilterCfg->paramsData[i].dataOffset =
24063 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24064 pRcvPktFilterCfg->paramsData[i].dataLength =
24065 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070024066
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024067 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024068 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24069 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024070 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070024071 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24072 8);
24073
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024075 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070024076 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070024077 pRcvPktFilterCfg->paramsData[i].cmpFlag);
24078
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24080 "Data Offset %d Data Len %d\n",
24081 pRcvPktFilterCfg->paramsData[i].dataOffset,
24082 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024083
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24085 "CData: %d:%d:%d:%d:%d:%d\n",
24086 pRcvPktFilterCfg->paramsData[i].compareData[0],
24087 pRcvPktFilterCfg->paramsData[i].compareData[1],
24088 pRcvPktFilterCfg->paramsData[i].compareData[2],
24089 pRcvPktFilterCfg->paramsData[i].compareData[3],
24090 pRcvPktFilterCfg->paramsData[i].compareData[4],
24091 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070024092
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24094 "MData: %d:%d:%d:%d:%d:%d\n",
24095 pRcvPktFilterCfg->paramsData[i].dataMask[0],
24096 pRcvPktFilterCfg->paramsData[i].dataMask[1],
24097 pRcvPktFilterCfg->paramsData[i].dataMask[2],
24098 pRcvPktFilterCfg->paramsData[i].dataMask[3],
24099 pRcvPktFilterCfg->paramsData[i].dataMask[4],
24100 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
24101 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024102
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024103 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070024104 pRcvPktFilterCfg,
24105 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024106
24107
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024108 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24109 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024110
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024112 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024113 wpalMemoryFree(pRcvPktFilterCfg);
24114 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024116 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024117 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024118 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024120 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024121}
24122
24123/**
24124 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024125
24126 @param pWDICtx: pointer to the WLAN DAL context
24127 pEventData: pointer to the event information structure
24128
Jeff Johnson295189b2012-06-20 16:38:30 -070024129 @see
24130 @return Result of the function call
24131*/
24132WDI_Status
24133WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024134(
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 WDI_ControlBlockType* pWDICtx,
24136 WDI_EventInfoType* pEventData
24137)
24138{
24139 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
24140 NULL;
24141 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
24142 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024143 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024144 wpt_uint16 usDataOffset = 0;
24145 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024146 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
24147 wpt_uint8 ucCurrentBSSSesIdx = 0;
24148 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024149
24150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024151 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024152
24153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024155 -------------------------------------------------------------------------*/
24156 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024157 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024158 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024159 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024160 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
24161 {
24162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024166 }
24167
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024168 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24169 pwdiRcvFltPktMatchCntReqParamsType->bssId,
24170 &pBSSSes);
24171 if ( NULL == pBSSSes )
24172 {
24173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024174 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024175 return WDI_STATUS_E_FAILURE;
24176 }
24177
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 /*-----------------------------------------------------------------------
24179 Get message buffer
24180 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024181 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24182 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024183 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024184 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024185 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070024186 {
24187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24188 "Unable to get send buffer in "
24189 "WDI_ProcessFilterMatchCountReq() %x %x %x",
24190 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
24191 wdiFilterMatchCountCb);
24192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024194 }
24195
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024196 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
24197 wpalMemoryCopy( pSendBuffer+usDataOffset,
24198 &rcvFltPktMatchCntReqParam,
24199 sizeof(rcvFltPktMatchCntReqParam));
24200
Jeff Johnson295189b2012-06-20 16:38:30 -070024201 //
24202 // Don't need to fill send buffer other than header
24203 //
24204 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024205 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024206
24207
24208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024209 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024211 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24212 wdiFilterMatchCountCb,
24213 pEventData->pUserData,
24214 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024215}
24216
24217/**
24218 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024219
24220 @param pWDICtx: pointer to the WLAN DAL context
24221 pEventData: pointer to the event information structure
24222
Jeff Johnson295189b2012-06-20 16:38:30 -070024223 @see
24224 @return Result of the function call
24225*/
24226WDI_Status
24227WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024228(
Jeff Johnson295189b2012-06-20 16:38:30 -070024229 WDI_ControlBlockType* pWDICtx,
24230 WDI_EventInfoType* pEventData
24231)
Jeff Johnsone7245742012-09-05 17:12:55 -070024232{
Jeff Johnson295189b2012-06-20 16:38:30 -070024233 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24234 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024235 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024236 wpt_uint16 usDataOffset = 0;
24237 wpt_uint16 usSendSize = 0;
24238 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024239 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024240 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024241
24242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024243 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024244
24245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024247 -------------------------------------------------------------------------*/
24248 if (( NULL == pEventData ) ||
24249 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24250 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024251 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24253 {
24254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024257 return WDI_STATUS_E_FAILURE;
24258 }
24259
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024260 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024261 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24262 &pBSSSes);
24263 if ( NULL == pBSSSes )
24264 {
24265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024266 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 }
24269
24270 /*-----------------------------------------------------------------------
24271 Get message buffer
24272 -----------------------------------------------------------------------*/
24273 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024274 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 sizeof(tHalRcvFltPktClearParam),
24276 &pSendBuffer, &usDataOffset, &usSendSize))||
24277 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24278 {
24279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24280 "Unable to get send buffer in "
24281 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24282 pEventData, pwdiRcvFltPktClearReqParamsType,
24283 wdiRcvFltPktClearFilterCb);
24284 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024286 }
24287
24288
24289 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024290 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024291 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024292 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024293
Jeff Johnsone7245742012-09-05 17:12:55 -070024294 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24295 wpalMemoryCopy( pSendBuffer+usDataOffset,
24296 &rcvFltPktClearParam,
24297 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024298
24299 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024300 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024301
24302
24303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024304 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024306 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024307 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024308 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024309}
24310
24311/**
24312 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024313
24314 @param pWDICtx: pointer to the WLAN DAL context
24315 pEventData: pointer to the event information structure
24316
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 @see
24318 @return Result of the function call
24319*/
24320WDI_Status
24321WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024322(
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 WDI_ControlBlockType* pWDICtx,
24324 WDI_EventInfoType* pEventData
24325)
24326{
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 eHalStatus halStatus;
24328 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024329 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24330 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24332
24333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024334 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024335
24336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024337 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 -------------------------------------------------------------------------*/
24339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24340 ( NULL == pEventData->pEventData ))
24341 {
24342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024343 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 }
24347
Jeff Johnsone7245742012-09-05 17:12:55 -070024348 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024349
24350 /*-------------------------------------------------------------------------
24351 Extract response and send it to UMAC
24352 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024353 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24354 {
24355 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24356 pEventData->pEventData,
24357 sizeof(halRcvFltPktSetMcListRsp));
24358
24359 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24360 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24361 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24362 halRcvFltPktSetMcListRsp.bssIdx;
24363 }
24364 else
24365 {
24366 halStatus = *((eHalStatus*)pEventData->pEventData);
24367 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24368 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024369
24370 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024371 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024372
Jeff Johnsone7245742012-09-05 17:12:55 -070024373 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024374}
24375
24376/**
24377 @brief Process Set Rsp function (called when a
24378 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024379
24380 @param pWDICtx: pointer to the WLAN DAL context
24381 pEventData: pointer to the event information structure
24382
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 @see
24384 @return Result of the function call
24385*/
24386WDI_Status
24387WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024388(
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 WDI_ControlBlockType* pWDICtx,
24390 WDI_EventInfoType* pEventData
24391)
24392{
Jeff Johnson295189b2012-06-20 16:38:30 -070024393 eHalStatus halStatus;
24394 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024395 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24396 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24398
24399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024400 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024401
24402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024404 -------------------------------------------------------------------------*/
24405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24406 ( NULL == pEventData->pEventData ))
24407 {
24408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 }
24413
24414 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024415 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024416
24417 /*-------------------------------------------------------------------------
24418 Extract response and send it to UMAC
24419 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024420 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24421 {
24422 wpalMemoryCopy( &halSetPktFilterRspParams,
24423 pEventData->pEventData,
24424 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024425
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024426 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24427 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24428 }
24429 else
24430 {
24431 halStatus = *((eHalStatus*)pEventData->pEventData);
24432 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24433 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024434 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024435 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024436
Jeff Johnsone7245742012-09-05 17:12:55 -070024437 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024438}
24439
24440/**
24441 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024442
24443 @param pWDICtx: pointer to the WLAN DAL context
24444 pEventData: pointer to the event information structure
24445
Jeff Johnson295189b2012-06-20 16:38:30 -070024446 @see
24447 @return Result of the function call
24448*/
24449WDI_Status
24450WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024451(
Jeff Johnson295189b2012-06-20 16:38:30 -070024452 WDI_ControlBlockType* pWDICtx,
24453 WDI_EventInfoType* pEventData
24454)
24455{
Jeff Johnson295189b2012-06-20 16:38:30 -070024456 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024457 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024458 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24459 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024460
24461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24462
24463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024464 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024465
24466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024468 -------------------------------------------------------------------------*/
24469 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24470 ( NULL == pEventData->pEventData ))
24471 {
24472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024473 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024476 }
24477
Jeff Johnsone7245742012-09-05 17:12:55 -070024478 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024479
24480 /*-------------------------------------------------------------------------
24481 Extract response and send it to UMAC
24482 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024483 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24484 {
24485 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24486 pEventData->pEventData,
24487 sizeof(halRcvFltrPktMatachRsp));
24488
24489 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24490 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24491 }
24492 else
24493 {
24494 halStatus = *((eHalStatus*)pEventData->pEventData);
24495 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24496 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024497
24498 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024499 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024500
Jeff Johnsone7245742012-09-05 17:12:55 -070024501 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024502}
24503
24504/**
24505 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024506
24507 @param pWDICtx: pointer to the WLAN DAL context
24508 pEventData: pointer to the event information structure
24509
Jeff Johnson295189b2012-06-20 16:38:30 -070024510 @see
24511 @return Result of the function call
24512*/
24513WDI_Status
24514WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024515(
Jeff Johnson295189b2012-06-20 16:38:30 -070024516 WDI_ControlBlockType* pWDICtx,
24517 WDI_EventInfoType* pEventData
24518)
24519{
Jeff Johnson295189b2012-06-20 16:38:30 -070024520 eHalStatus halStatus;
24521 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024522 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24523 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24525
24526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024527 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024528
24529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024530 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 -------------------------------------------------------------------------*/
24532 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24533 ( NULL == pEventData->pEventData ))
24534 {
24535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024536 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024539 }
24540
24541 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024542 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024543
24544 /*-------------------------------------------------------------------------
24545 Extract response and send it to UMAC
24546 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024547 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24548 {
24549 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24550 pEventData->pEventData,
24551 sizeof(halRcvFltPktClearRspMsg));
24552
24553 wdiRcvFltPktClearRspParamsType.wdiStatus =
24554 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24555 wdiRcvFltPktClearRspParamsType.bssIdx =
24556 halRcvFltPktClearRspMsg.bssIdx;
24557 }
24558 else
24559 {
24560 halStatus = *((eHalStatus*)pEventData->pEventData);
24561 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24562 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024563
24564 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024565 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024566
Jeff Johnsone7245742012-09-05 17:12:55 -070024567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024568}
24569#endif // WLAN_FEATURE_PACKET_FILTERING
24570
24571/**
24572 @brief Process Shutdown Rsp function
24573 There is no shutdown response comming from HAL
24574 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024575
Jeff Johnson295189b2012-06-20 16:38:30 -070024576 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024577 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024578
24579 @see
24580 @return Result of the function call
24581*/
24582WDI_Status
24583WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024584(
Jeff Johnson295189b2012-06-20 16:38:30 -070024585 WDI_ControlBlockType* pWDICtx,
24586 WDI_EventInfoType* pEventData
24587)
24588{
24589 /*There is no shutdown response comming from HAL - function just kept for
24590 simmetry */
24591 WDI_ASSERT(0);
24592 return WDI_STATUS_SUCCESS;
24593}/*WDI_ProcessShutdownRsp*/
24594
24595/**
24596 @brief WDI_SetPowerParamsReq
24597
Jeff Johnsone7245742012-09-05 17:12:55 -070024598 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024599 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024600
Jeff Johnson295189b2012-06-20 16:38:30 -070024601 wdiPowerParamsCb: callback for passing back the response
24602 of the Set Power Params operation received from the
24603 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024604
Jeff Johnson295189b2012-06-20 16:38:30 -070024605 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024606 callback
24607
Jeff Johnson295189b2012-06-20 16:38:30 -070024608 @return Result of the function call
24609*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024610WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024611WDI_SetPowerParamsReq
24612(
24613 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24614 WDI_SetPowerParamsCb wdiPowerParamsCb,
24615 void* pUserData
24616)
24617{
24618 WDI_EventInfoType wdiEventData;
24619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24620
24621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024622 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024623 ------------------------------------------------------------------------*/
24624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24625 {
24626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24627 "WDI API call before module is initialized - Fail request");
24628
Jeff Johnsone7245742012-09-05 17:12:55 -070024629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024630 }
24631
24632 /*------------------------------------------------------------------------
24633 Fill in Event data and post to the Main FSM
24634 ------------------------------------------------------------------------*/
24635 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024636 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024637 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024638 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024639 wdiEventData.pUserData = pUserData;
24640
24641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24642}/*WDI_SetPowerParamsReq*/
24643
24644/**
24645 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024646
24647 @param pWDICtx: pointer to the WLAN DAL context
24648 pEventData: pointer to the event information structure
24649
Jeff Johnson295189b2012-06-20 16:38:30 -070024650 @see
24651 @return Result of the function call
24652*/
24653WDI_Status
24654WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024655(
Jeff Johnson295189b2012-06-20 16:38:30 -070024656 WDI_ControlBlockType* pWDICtx,
24657 WDI_EventInfoType* pEventData
24658)
24659{
24660 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
24661 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024662 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024663 wpt_uint16 usDataOffset = 0;
24664 wpt_uint16 usSendSize = 0;
24665 tSetPowerParamsType powerParams;
24666
24667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024669 -------------------------------------------------------------------------*/
24670 if (( NULL == pEventData ) ||
24671 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
24672 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
24673 {
24674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024678 }
24679
24680 /*-----------------------------------------------------------------------
24681 Get message buffer
24682 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024684 sizeof(powerParams),
24685 &pSendBuffer, &usDataOffset, &usSendSize))||
24686 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
24687 {
24688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24689 "Unable to get send buffer in Set PNO req %x %x %x",
24690 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
24691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024693 }
24694
24695 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070024696 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070024697 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
24698
24699 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024700 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070024701 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
24702
24703 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024704 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070024705 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
24706
24707 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070024708 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070024709 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
24710
24711 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070024712 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070024713 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
24714
24715 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024716 powerParams.uBETInterval =
24717 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070024718
Jeff Johnsone7245742012-09-05 17:12:55 -070024719
24720 wpalMemoryCopy( pSendBuffer+usDataOffset,
24721 &powerParams,
24722 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024723
24724 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024725 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024726
24727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024728 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024729 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024730 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24731 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024732}
24733
24734/**
24735 @brief Process Power Params Rsp function (called when a
24736 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024737
24738 @param pWDICtx: pointer to the WLAN DAL context
24739 pEventData: pointer to the event information structure
24740
Jeff Johnson295189b2012-06-20 16:38:30 -070024741 @see
24742 @return Result of the function call
24743*/
24744WDI_Status
24745WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024746(
Jeff Johnson295189b2012-06-20 16:38:30 -070024747 WDI_ControlBlockType* pWDICtx,
24748 WDI_EventInfoType* pEventData
24749)
24750{
24751 WDI_Status wdiStatus;
24752 eHalStatus halStatus;
24753 WDI_SetPowerParamsCb wdiPowerParamsCb;
24754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24755
24756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 -------------------------------------------------------------------------*/
24759 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24760 ( NULL == pEventData->pEventData ))
24761 {
24762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024766 }
24767
Jeff Johnsone7245742012-09-05 17:12:55 -070024768 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024769
24770 /*-------------------------------------------------------------------------
24771 Extract response and send it to UMAC
24772 -------------------------------------------------------------------------*/
24773 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024774 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024775
24776 /*Notify UMAC*/
24777 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24778
Jeff Johnsone7245742012-09-05 17:12:55 -070024779 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024780}/*WDI_ProcessSetPowerParamsRsp*/
24781
24782#ifdef WLAN_FEATURE_GTK_OFFLOAD
24783/**
24784 @brief WDI_GTKOffloadReq will be called when the upper MAC
24785 wants to set GTK Rekey Counter while in power save. Upon
24786 the call of this API the WLAN DAL will pack and send a
24787 HAL GTK offload request message to the lower RIVA
24788 sub-system if DAL is in state STARTED.
24789
24790 In state BUSY this request will be queued. Request won't
24791 be allowed in any other state.
24792
24793 WDI_PostAssocReq must have been called.
24794
24795 @param pwdiGtkOffloadParams: the GTK offload as specified
24796 by the Device Interface
24797
24798 wdiGtkOffloadCb: callback for passing back the response
24799 of the GTK offload operation received from the device
24800
24801 pUserData: user data will be passed back with the
24802 callback
24803
24804 @see WDI_PostAssocReq
24805 @return Result of the function call
24806*/
24807WDI_Status
24808WDI_GTKOffloadReq
24809(
24810 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
24811 WDI_GtkOffloadCb wdiGtkOffloadCb,
24812 void* pUserData
24813)
24814{
24815 WDI_EventInfoType wdiEventData = {0};
24816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24817
24818 /*------------------------------------------------------------------------
24819 Sanity Check
24820 ------------------------------------------------------------------------*/
24821 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24822 {
24823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24824 "WDI API call before module is initialized - Fail request");
24825
24826 return WDI_STATUS_E_NOT_ALLOWED;
24827 }
24828
24829 /*------------------------------------------------------------------------
24830 Fill in Event data and post to the Main FSM
24831 ------------------------------------------------------------------------*/
24832 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
24833 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070024834 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070024835 wdiEventData.pCBfnc = wdiGtkOffloadCb;
24836 wdiEventData.pUserData = pUserData;
24837
24838 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24839}
24840
24841
24842/**
24843 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
24844 MAC wants to get GTK Rekey Counter while in power save.
24845 Upon the call of this API the WLAN DAL will pack and
24846 send a HAL GTK offload request message to the lower RIVA
24847 sub-system if DAL is in state STARTED.
24848
24849 In state BUSY this request will be queued. Request won't
24850 be allowed in any other state.
24851
24852 WDI_PostAssocReq must have been called.
24853
24854 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
24855 Information Message as specified by the
24856 Device Interface
24857
24858 wdiGtkOffloadGetInfoCb: callback for passing back the
24859 response of the GTK offload operation received from the
24860 device
24861
24862 pUserData: user data will be passed back with the
24863 callback
24864
24865 @see WDI_PostAssocReq
24866 @return Result of the function call
24867*/
24868WDI_Status
24869WDI_GTKOffloadGetInfoReq
24870(
24871 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
24872 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
24873 void* pUserData
24874)
24875{
24876 WDI_EventInfoType wdiEventData = {0};
24877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24878
24879 /*------------------------------------------------------------------------
24880 Sanity Check
24881 ------------------------------------------------------------------------*/
24882 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24883 {
24884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24885 "WDI API call before module is initialized - Fail request");
24886
24887 return WDI_STATUS_E_NOT_ALLOWED;
24888 }
24889
24890 /*------------------------------------------------------------------------
24891 Fill in Event data and post to the Main FSM
24892 ------------------------------------------------------------------------*/
24893 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
24894 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
24895 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
24896 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
24897 wdiEventData.pUserData = pUserData;
24898
24899 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24900}
24901
24902
24903/**
24904 @brief Process set GTK Offload Request function
24905
24906 @param pWDICtx: pointer to the WLAN DAL context
24907 pEventData: pointer to the event information structure
24908
24909 @see
24910 @return Result of the function call
24911*/
24912WDI_Status
24913WDI_ProcessGTKOffloadReq
24914(
24915 WDI_ControlBlockType* pWDICtx,
24916 WDI_EventInfoType* pEventData
24917)
24918{
24919 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
24920 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
24921 wpt_uint8* pSendBuffer = NULL;
24922 wpt_uint16 usDataOffset = 0;
24923 wpt_uint16 usSendSize = 0;
24924 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024925 wpt_uint8 ucCurrentSessionId = 0;
24926 WDI_BSSSessionType* pBSSSes = NULL;
24927
Jeff Johnson295189b2012-06-20 16:38:30 -070024928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24929
24930 /*-------------------------------------------------------------------------
24931 Sanity check
24932 -------------------------------------------------------------------------*/
24933 if (( NULL == pEventData ) ||
24934 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
24935 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
24936 {
24937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024939 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080024940 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070024941 }
24942
24943 /*-----------------------------------------------------------------------
24944 Get message buffer
24945 -----------------------------------------------------------------------*/
24946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
24947 sizeof(gtkOffloadReqParams),
24948 &pSendBuffer, &usDataOffset, &usSendSize))||
24949 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
24950 {
24951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24952 "Unable to get send buffer in GTK offload req %x %x %x",
24953 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
24954 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080024955 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070024956 }
24957
24958 //
24959 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
24960 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024961 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24962 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
24963 &pBSSSes);
24964 if ( NULL == pBSSSes )
24965 {
24966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024967 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080024968 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024969 }
24970
24971 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
24972
Jeff Johnson295189b2012-06-20 16:38:30 -070024973 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
24974 // Copy KCK
24975 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
24976 // Copy KEK
24977 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
24978 // Copy KeyReplayCounter
24979 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
24980
24981 wpalMemoryCopy( pSendBuffer+usDataOffset,
24982 &gtkOffloadReqParams,
24983 sizeof(gtkOffloadReqParams));
24984
24985 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
24986 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
24987
24988 /*-------------------------------------------------------------------------
24989 Send Get STA Request to HAL
24990 -------------------------------------------------------------------------*/
24991 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24992 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080024993
24994fail:
24995 // Release the message buffer so we don't leak
24996 wpalMemoryFree(pSendBuffer);
24997
24998failRequest:
24999 //WDA should have failure check to avoid the memory leak
25000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025001}
25002
25003
25004/**
25005 @brief Process GTK Offload Get Information Request function
25006
25007 @param pWDICtx: pointer to the WLAN DAL context
25008 pEventData: pointer to the event information structure
25009
25010 @see
25011 @return Result of the function call
25012*/
25013WDI_Status
25014WDI_ProcessGTKOffloadGetInfoReq
25015(
25016 WDI_ControlBlockType* pWDICtx,
25017 WDI_EventInfoType* pEventData
25018)
25019{
25020 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
25021 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
25022 wpt_uint8* pSendBuffer = NULL;
25023 wpt_uint16 usDataOffset = 0;
25024 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025025 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
25026 wpt_uint8 ucCurrentSessionId = 0;
25027 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025028
25029 /*-------------------------------------------------------------------------
25030 Sanity check
25031 -------------------------------------------------------------------------*/
25032 if (( NULL == pEventData ) ||
25033 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
25034 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
25035 {
25036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025038 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025039 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025040 }
25041
25042 /*-----------------------------------------------------------------------
25043 Get message buffer
25044 -----------------------------------------------------------------------*/
25045 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025046 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025047 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025048 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070025049 {
25050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25051 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
25052 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
25053 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025054 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025056 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25057 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
25058 &pBSSSes);
25059 if ( NULL == pBSSSes )
25060 {
25061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025062 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025063 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025064 }
25065 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025066
25067 //
25068 // Don't need to fill send buffer other than header
25069 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025070 wpalMemoryCopy( pSendBuffer+usDataOffset,
25071 &halGtkOffloadGetInfoReqParams,
25072 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025073
25074 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
25075 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
25076
25077 /*-------------------------------------------------------------------------
25078 Send Get STA Request to HAL
25079 -------------------------------------------------------------------------*/
25080 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25081 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025082fail:
25083 // Release the message buffer so we don't leak
25084 wpalMemoryFree(pSendBuffer);
25085
25086failRequest:
25087 //WDA should have failure check to avoid the memory leak
25088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025089}
25090
25091/**
25092 @brief Process host offload Rsp function (called when a
25093 response is being received over the bus from HAL)
25094
25095 @param pWDICtx: pointer to the WLAN DAL context
25096 pEventData: pointer to the event information structure
25097
25098 @see
25099 @return Result of the function call
25100*/
25101WDI_Status
25102WDI_ProcessGtkOffloadRsp
25103(
25104 WDI_ControlBlockType* pWDICtx,
25105 WDI_EventInfoType* pEventData
25106)
25107{
Jeff Johnson295189b2012-06-20 16:38:30 -070025108 eHalStatus halStatus;
25109 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025110 tHalGtkOffloadRspParams halGtkOffloadRspParams;
25111 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25113
25114 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
25115
25116 /*-------------------------------------------------------------------------
25117 Sanity check
25118 -------------------------------------------------------------------------*/
25119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25120 ( NULL == pEventData->pEventData))
25121 {
25122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025124 WDI_ASSERT(0);
25125 return WDI_STATUS_E_FAILURE;
25126 }
25127
25128 /*-------------------------------------------------------------------------
25129 Extract response and send it to UMAC
25130 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025131 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25132 {
25133 wpalMemoryCopy( &halGtkOffloadRspParams,
25134 pEventData->pEventData,
25135 sizeof(halGtkOffloadRspParams));
25136
25137 wdiGtkOffloadRsparams.ulStatus =
25138 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
25139 wdiGtkOffloadRsparams.bssIdx =
25140 halGtkOffloadRspParams.bssIdx;
25141 }
25142 else
25143 {
25144 halStatus = *((eHalStatus*)pEventData->pEventData);
25145 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25146 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025147
25148 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025149 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025150
25151 return WDI_STATUS_SUCCESS;
25152}
25153
25154/**
25155 @brief Process GTK Offload Get Information Response function
25156
25157 @param pWDICtx: pointer to the WLAN DAL context
25158 pEventData: pointer to the event information structure
25159
25160 @see
25161 @return Result of the function call
25162*/
25163WDI_Status
25164WDI_ProcessGTKOffloadGetInfoRsp
25165(
25166 WDI_ControlBlockType* pWDICtx,
25167 WDI_EventInfoType* pEventData
25168)
25169{
Jeff Johnson295189b2012-06-20 16:38:30 -070025170 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025171 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025172 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
25173 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025174
25175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25176
25177 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
25178
25179 /*-------------------------------------------------------------------------
25180 Sanity check
25181 -------------------------------------------------------------------------*/
25182 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25183 ( NULL == pEventData->pEventData ))
25184 {
25185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025187 WDI_ASSERT(0);
25188 return WDI_STATUS_E_FAILURE;
25189 }
25190
25191 /*-------------------------------------------------------------------------
25192 Extract response and send it to UMAC
25193 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025194 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25195 {
25196 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
25197 pEventData->pEventData,
25198 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025199
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025200 wdiGtkOffloadGetInfoRsparams.ulStatus =
25201 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
25202 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
25203 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
25204 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
25205 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
25206 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
25207 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
25208 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
25209 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
25210 wdiGtkOffloadGetInfoRsparams.bssIdx =
25211 halGtkOffloadGetInfoRspParams.bssIdx;
25212 }
25213 else
25214 {
25215 halStatus = *((eHalStatus*)pEventData->pEventData);
25216 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25217 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025218 /*Notify UMAC*/
25219 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25220 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025221 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025222
25223 return WDI_STATUS_SUCCESS;
25224}
25225#endif // WLAN_FEATURE_GTK_OFFLOAD
25226
25227#ifdef WLAN_WAKEUP_EVENTS
25228WDI_Status
25229WDI_ProcessWakeReasonInd
25230(
25231 WDI_ControlBlockType* pWDICtx,
25232 WDI_EventInfoType* pEventData
25233)
25234{
25235 WDI_LowLevelIndType *pWdiInd;
25236 tpWakeReasonParams pWakeReasonParams;
25237 wpt_uint32 allocSize = 0;
25238
25239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025240 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025241
25242 /*-------------------------------------------------------------------------
25243 Sanity check
25244 -------------------------------------------------------------------------*/
25245 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25246 ( NULL == pEventData->pEventData ))
25247 {
25248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025250 WDI_ASSERT( 0 );
25251 return WDI_STATUS_E_FAILURE;
25252 }
25253
25254 /*-------------------------------------------------------------------------
25255 Extract indication and send it to UMAC
25256 -------------------------------------------------------------------------*/
25257 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25258
25259 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25260
25261 //Allocate memory for WDI_WakeReasonIndType structure
25262 pWdiInd = wpalMemoryAllocate(allocSize) ;
25263
25264 if(NULL == pWdiInd)
25265 {
25266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25267 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025268 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025269 WDI_ASSERT(0);
25270 return WDI_STATUS_E_FAILURE;
25271 }
25272
25273 wpalMemoryZero(pWdiInd, allocSize);
25274
25275 /* Fill in the indication parameters*/
25276 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25277 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25278 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25279 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25280 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25281 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25282 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25283 &(pWakeReasonParams->aDataStart[0]),
25284 pWakeReasonParams->ulStoredDataLen);
25285
ltimariu034f7d62013-01-24 18:54:33 -080025286
25287 if ( pWDICtx->wdiLowLevelIndCB )
25288 {
25289 /*Notify UMAC*/
25290 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25291 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025292
25293 //Free memory allocated for WDI_WakeReasonIndType structure
25294 wpalMemoryFree(pWdiInd);
25295
25296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025297 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025298
25299 return WDI_STATUS_SUCCESS;
25300}
25301#endif // WLAN_WAKEUP_EVENTS
25302
25303void WDI_GetWcnssCompiledApiVersion
25304(
25305 WDI_WlanVersionType *pWcnssApiVersion
25306)
25307{
25308 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25309 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25310 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25311 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25312}
25313
25314/**
25315 @brief Process Set TM Level Rsp function (called when a
25316 response is being received over the bus from HAL)
25317
25318 @param pWDICtx: pointer to the WLAN DAL context
25319 pEventData: pointer to the event information structure
25320
25321 @see
25322 @return Result of the function call
25323*/
25324WDI_Status
25325WDI_ProcessSetTmLevelRsp
25326(
25327 WDI_ControlBlockType* pWDICtx,
25328 WDI_EventInfoType* pEventData
25329)
25330{
25331 WDI_Status wdiStatus;
25332 eHalStatus halStatus;
25333 WDI_SetTmLevelCb wdiSetTmLevelCb;
25334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25335
25336 /*-------------------------------------------------------------------------
25337 Sanity check
25338 -------------------------------------------------------------------------*/
25339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25340 ( NULL == pEventData->pEventData ))
25341 {
25342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025343 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025344 WDI_ASSERT(0);
25345 return WDI_STATUS_E_FAILURE;
25346 }
25347
25348 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25349
25350 /*-------------------------------------------------------------------------
25351 Extract response and send it to UMAC
25352 -------------------------------------------------------------------------*/
25353 halStatus = *((eHalStatus*)pEventData->pEventData);
25354 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25355
25356 /*Notify UMAC*/
25357 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25358
25359 return WDI_STATUS_SUCCESS;
25360}/*WDI_ProcessSetTmLevelRsp*/
25361
25362/**
25363 @brief Process Set Thermal Mitigation level Changed request
25364
25365 @param pWDICtx: pointer to the WLAN DAL context
25366 pEventData: pointer to the event information structure
25367
25368 @see
25369 @return Result of the function call
25370*/
25371WDI_Status
25372WDI_ProcessSetTmLevelReq
25373(
25374 WDI_ControlBlockType* pWDICtx,
25375 WDI_EventInfoType* pEventData
25376)
25377{
25378 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25379 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25380 wpt_uint8* pSendBuffer = NULL;
25381 wpt_uint16 usDataOffset = 0;
25382 wpt_uint16 usSendSize = 0;
25383 tSetThermalMitgationType halTmMsg;
25384
25385 /*-------------------------------------------------------------------------
25386 Sanity check
25387 -------------------------------------------------------------------------*/
25388 if (( NULL == pEventData ) ||
25389 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25390 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25391 {
25392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025394 WDI_ASSERT(0);
25395 return WDI_STATUS_E_FAILURE;
25396 }
25397
25398 /*-----------------------------------------------------------------------
25399 Get message buffer
25400 -----------------------------------------------------------------------*/
25401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25402 sizeof(halTmMsg),
25403 &pSendBuffer, &usDataOffset, &usSendSize))||
25404 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25405 {
25406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25407 "Unable to get send buffer in Set PNO req %x %x %x",
25408 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25409 WDI_ASSERT(0);
25410 return WDI_STATUS_E_FAILURE;
25411 }
25412
25413 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25414 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25415
25416 wpalMemoryCopy( pSendBuffer+usDataOffset,
25417 &halTmMsg,
25418 sizeof(halTmMsg));
25419
25420 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25421 pWDICtx->pfncRspCB = NULL;
25422 /*-------------------------------------------------------------------------
25423 Send Get STA Request to HAL
25424 -------------------------------------------------------------------------*/
25425 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25426 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25427}
25428
25429/* Fill the value from the global features enabled array to the global capabilities
25430 * bitmap struct
25431 */
25432static void
25433FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25434{
25435 wpt_int8 i;
25436 for (i=0; i<len; i++)
25437 {
25438 setFeatCaps(fCaps, enabledFeat[i]);
25439 }
25440}
25441
25442/**
25443 @brief WDI_featureCapsExchangeReq
25444 Post feature capability bitmap exchange event.
25445 Host will send its own capability to FW in this req and
25446 expect FW to send its capability back as a bitmap in Response
25447
25448 @param
25449
25450 wdiFeatureCapsExchangeCb: callback called on getting the response.
25451 It is kept to mantain similarity between WDI reqs and if needed, can
25452 be used in future. Currently, It is set to NULL
25453
25454 pUserData: user data will be passed back with the
25455 callback
25456
25457 @see
25458 @return Result of the function call
25459*/
25460WDI_Status
25461WDI_featureCapsExchangeReq
25462(
25463 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25464 void* pUserData
25465)
25466{
25467 WDI_EventInfoType wdiEventData;
25468 wpt_int32 fCapsStructSize;
25469
25470 /*------------------------------------------------------------------------
25471 Sanity Check
25472 ------------------------------------------------------------------------*/
25473 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25474 {
25475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25476 "WDI API call before module is initialized - Fail request");
25477
25478 return WDI_STATUS_E_NOT_ALLOWED;
25479 }
25480
25481 /* Allocate memory separately for global variable carrying FW caps */
25482 fCapsStructSize = sizeof(tWlanFeatCaps);
25483 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25484 if ( NULL == gpHostWlanFeatCaps )
25485 {
25486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25487 "Cannot allocate memory for host capability info\n");
25488 WDI_ASSERT(0);
25489 return WDI_STATUS_MEM_FAILURE;
25490 }
25491
25492 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25493
25494 /*------------------------------------------------------------------------
25495 Fill in Event data and post to the Main FSM
25496 ------------------------------------------------------------------------*/
25497 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25498 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25500 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025501 gpHostWlanFeatCaps->featCaps[0],
25502 gpHostWlanFeatCaps->featCaps[1],
25503 gpHostWlanFeatCaps->featCaps[2],
25504 gpHostWlanFeatCaps->featCaps[3]
25505 );
25506
25507 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25508 wdiEventData.pEventData = gpHostWlanFeatCaps;
25509 wdiEventData.uEventDataSize = fCapsStructSize;
25510 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25511 wdiEventData.pUserData = pUserData;
25512
25513 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25514}
25515
25516/**
Yathishd8713192012-12-10 14:21:35 -080025517 @brief Disable Active mode offload in Host
25518
25519 @param void
25520 @see
25521 @return void
25522*/
25523void
25524WDI_disableCapablityFeature(wpt_uint8 feature_index)
25525{
25526 supportEnabledFeatures[feature_index] = 0;
25527 return;
25528}
25529
25530/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025531 @brief Process Host-FW Capability Exchange Request function
25532
25533 @param pWDICtx: pointer to the WLAN DAL context
25534 pEventData: pointer to the event information structure
25535
25536 @see
25537 @return Result of the function call
25538*/
25539WDI_Status
25540WDI_ProcessFeatureCapsExchangeReq
25541(
25542 WDI_ControlBlockType* pWDICtx,
25543 WDI_EventInfoType* pEventData
25544)
25545{
25546 wpt_uint8* pSendBuffer = NULL;
25547 wpt_uint16 usDataOffset = 0;
25548 wpt_uint16 usSendSize = 0;
25549 wpt_uint16 usLen = 0;
25550
25551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25552
25553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025554 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025555
25556 /*-------------------------------------------------------------------------
25557 Sanity check
25558 -------------------------------------------------------------------------*/
25559 /* Call back function is NULL since not required for cap exchange req */
25560 if (( NULL == pEventData ) ||
25561 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25562 {
25563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025564 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025565 WDI_ASSERT(0);
25566 return WDI_STATUS_E_FAILURE;
25567 }
25568
25569 /*-----------------------------------------------------------------------
25570 Get message buffer
25571 -----------------------------------------------------------------------*/
25572 usLen = sizeof(tWlanFeatCaps);
25573
25574 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25575 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25576 usLen,
25577 &pSendBuffer, &usDataOffset, &usSendSize))||
25578 ( usSendSize < (usDataOffset + usLen )))
25579 {
25580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25581 "Unable to get send buffer in feat caps exchange req %x %x",
25582 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25583 WDI_ASSERT(0);
25584 return WDI_STATUS_E_FAILURE;
25585 }
25586
25587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025588 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025589 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25590 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25591 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25592 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25593 );
25594
25595 /* Copy host caps after the offset in the send buffer */
25596 wpalMemoryCopy( pSendBuffer+usDataOffset,
25597 (tWlanFeatCaps *)pEventData->pEventData,
25598 usLen);
25599
25600 /*-------------------------------------------------------------------------
25601 Send Start Request to HAL
25602 -------------------------------------------------------------------------*/
25603 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25604 (WDI_StartRspCb)pEventData->pCBfnc,
25605 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25606
25607}/*WDI_ProcessFeatureCapsExchangeReq*/
25608
25609/**
25610 @brief Process Host-FW Capability Exchange Response function
25611
25612 @param pWDICtx: pointer to the WLAN DAL context
25613 pEventData: pointer to the event information structure
25614
25615 @see
25616 @return Result of the function call
25617*/
25618WDI_Status
25619WDI_ProcessFeatureCapsExchangeRsp
25620(
25621 WDI_ControlBlockType* pWDICtx,
25622 WDI_EventInfoType* pEventData
25623)
25624{
25625 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25626 wpt_int32 fCapsStructSize;
25627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25628
25629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025630 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025631
25632 /*-------------------------------------------------------------------------
25633 Sanity check
25634 -------------------------------------------------------------------------*/
25635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25636 ( NULL == pEventData->pEventData ))
25637 {
25638 /* It will go here when riva is old (doesn't understand this msg) and host is new */
25639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025640 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025641 WDI_ASSERT(0);
25642 return WDI_STATUS_E_FAILURE;
25643 }
25644
25645 /* Allocate memory separately for global variable carrying FW caps */
25646 fCapsStructSize = sizeof(tWlanFeatCaps);
25647 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25648 if ( NULL == gpFwWlanFeatCaps )
25649 {
25650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25651 "Cannot allocate memory for host capability info\n");
25652 WDI_ASSERT(0);
25653 return WDI_STATUS_MEM_FAILURE;
25654 }
25655
25656 /*-------------------------------------------------------------------------
25657 Unpack HAL Response Message - the header was already extracted by the
25658 main Response Handling procedure
25659 -------------------------------------------------------------------------*/
25660 /*-------------------------------------------------------------------------
25661 Extract response and send it to UMAC
25662 -------------------------------------------------------------------------*/
25663
25664 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
25665 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070025666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25667 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025668 gpFwWlanFeatCaps->featCaps[0],
25669 gpFwWlanFeatCaps->featCaps[1],
25670 gpFwWlanFeatCaps->featCaps[2],
25671 gpFwWlanFeatCaps->featCaps[3]
25672 );
Jeff Johnson295189b2012-06-20 16:38:30 -070025673 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
25674
25675 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
25676 if (wdiFeatureCapsExchangeCb != NULL)
25677 wdiFeatureCapsExchangeCb(NULL, NULL);
25678
25679 return WDI_STATUS_SUCCESS;
25680}
25681
Mohit Khanna4a70d262012-09-11 16:30:12 -070025682#ifdef WLAN_FEATURE_11AC
25683WDI_Status
25684WDI_ProcessUpdateVHTOpModeRsp
25685(
25686 WDI_ControlBlockType* pWDICtx,
25687 WDI_EventInfoType* pEventData
25688)
25689{
25690 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25691 WDI_Status wdiStatus;
25692 eHalStatus halStatus;
25693
25694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25695
25696 /*-------------------------------------------------------------------------
25697 Sanity check
25698 -------------------------------------------------------------------------*/
25699 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25700 ( NULL == pEventData->pEventData))
25701 {
25702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025703 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025704 WDI_ASSERT(0);
25705 return WDI_STATUS_E_FAILURE;
25706 }
25707 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
25708
25709 /*-------------------------------------------------------------------------
25710 Extract response and send it to UMAC
25711 -------------------------------------------------------------------------*/
25712 halStatus = *((eHalStatus*)pEventData->pEventData);
25713 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25714
25715 /*Notify UMAC*/
25716 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
25717
25718 return WDI_STATUS_SUCCESS;
25719}
25720#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025721/**
25722 @brief WDI_getHostWlanFeatCaps
25723 WDI API that returns whether the feature passed to it as enum value in
25724 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
25725 variable storing host capability bitmap to find this. This can be used by
25726 other moduels to decide certain things like call different APIs based on
25727 whether a particular feature is supported.
25728
25729 @param
25730
25731 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
25732
25733 @see
25734 @return
25735 0 - if the feature is NOT supported in host
25736 any non-zero value - if the feature is SUPPORTED in host.
25737*/
25738wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
25739{
25740 wpt_uint8 featSupported = 0;
25741 if (gpHostWlanFeatCaps != NULL)
25742 {
25743 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
25744 }
25745 else
25746 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025748 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025749 }
25750 return featSupported;
25751}
25752
25753/**
25754 @brief WDI_getFwWlanFeatCaps
25755 WDI API that returns whether the feature passed to it as enum value in
25756 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
25757 variable storing host capability bitmap to find this. This can be used by
25758 other moduels to decide certain things like call different APIs based on
25759 whether a particular feature is supported.
25760
25761 @param
25762
25763 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
25764 in wlan_hal_msg.h.
25765
25766 @see
25767 @return
25768 0 - if the feature is NOT supported in FW
25769 any non-zero value - if the feature is SUPPORTED in FW.
25770*/
25771wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
25772{
25773 wpt_uint8 featSupported = 0;
25774 if (gpFwWlanFeatCaps != NULL)
25775 {
25776 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
25777 }
25778 else
25779 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025781 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 }
25783 return featSupported;
25784}
Mohit Khanna4a70d262012-09-11 16:30:12 -070025785
25786#ifdef WLAN_FEATURE_11AC
25787WDI_Status
25788WDI_ProcessUpdateVHTOpModeReq
25789(
25790 WDI_ControlBlockType* pWDICtx,
25791 WDI_EventInfoType* pEventData
25792)
25793{
25794 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
25795 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25796 wpt_uint8* pSendBuffer = NULL;
25797 wpt_uint16 usDataOffset = 0;
25798 wpt_uint16 usSendSize = 0;
25799
25800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25801
25802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025803 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025804
25805 /*-------------------------------------------------------------------------
25806 Sanity check
25807 -------------------------------------------------------------------------*/
25808 if (( NULL == pEventData ) ||
25809 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
25810 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
25811 {
25812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025813 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025814 WDI_ASSERT(0);
25815 return WDI_STATUS_E_FAILURE;
25816 }
25817
25818 /*-----------------------------------------------------------------------
25819 Get message buffer
25820 -----------------------------------------------------------------------*/
25821 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
25822 sizeof(WDI_UpdateVHTOpMode),
25823 &pSendBuffer, &usDataOffset, &usSendSize))||
25824 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
25825 {
25826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25827 "Unable to get send buffer in update vht opMode req");
25828 WDI_ASSERT(0);
25829 return WDI_STATUS_E_FAILURE;
25830 }
25831
25832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25833 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
25834
25835 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
25836 sizeof(WDI_UpdateVHTOpMode));
25837
25838 /*-------------------------------------------------------------------------
25839 Send Start Request to HAL
25840 -------------------------------------------------------------------------*/
25841 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25842 wdiVHTOpModeCb,
25843 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
25844
25845}
25846
25847WDI_Status
25848WDI_UpdateVHTOpModeReq
25849(
25850 WDI_UpdateVHTOpMode *pData,
25851 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
25852 void* pUserData
25853)
25854{
25855 WDI_EventInfoType wdiEventData;
25856
25857 /*------------------------------------------------------------------------
25858 Sanity Check
25859 ------------------------------------------------------------------------*/
25860 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25861 {
25862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25863 "WDI API call before module is initialized - Fail request");
25864
25865 return WDI_STATUS_E_NOT_ALLOWED;
25866 }
25867
25868 /*------------------------------------------------------------------------
25869 Fill in Event data and post to the Main FSM
25870 ------------------------------------------------------------------------*/
25871 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
25872 wdiEventData.pEventData = pData;
25873 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
25874 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
25875 wdiEventData.pUserData = pUserData;
25876
25877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25878 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
25879
25880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25881
25882}
25883#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025884
25885/**
25886 @brief WDI_TransportChannelDebug -
25887 Display DXE Channel debugging information
25888 User may request to display DXE channel snapshot
25889 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025890
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080025891 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025892 @param enableStallDetect : Enable stall detect feature
25893 This feature will take effect to data performance
25894 Not integrate till fully verification
25895 @see
25896 @return none
25897*/
25898void WDI_TransportChannelDebug
25899(
25900 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025901 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025902)
25903{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025904 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025905 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070025906}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025907/**
25908 @brief WDI_SsrTimerCB
25909 Callback function for SSR timer, if this is called then the graceful
25910 shutdown for Riva did not happen.
25911
25912 @param pUserData : user data to timer
25913
25914 @see
25915 @return none
25916*/
25917void
25918WDI_SsrTimerCB
25919(
25920 void *pUserData
25921)
25922{
25923 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
25924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25925
25926 if (NULL == pWDICtx )
25927 {
25928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025929 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025930 WDI_ASSERT(0);
25931 return;
25932 }
25933 wpalRivaSubystemRestart();
25934
25935 return;
25936
25937}/*WDI_SsrTimerCB*/